[DVDnav-discuss] Libdvdread misses hidden files and causes segfaults to calling programs
Reimar Döffinger
Reimar.Doeffinger at gmx.de
Tue Sep 20 00:27:38 CEST 2011
On Mon, Sep 19, 2011 at 03:22:55PM -0700, John Stebbins wrote:
> On 09/18/2011 11:12 AM, doug Springer wrote:
> > Package: libdvdread4
> > Version: 4.1.4-1219-2 and others
> >
> > No error message, but symptoms are usually segfault when reading, for example the Movie DVD Thor.
> > This results from a new anti-copy scheme where the real video_ts.ifo is hidden. Use of the decoy video_ts.ifo results in
> > a unplayable DVD.
> >
>
> This patch has been submitted twice already, but I like my version better. The other 2 unnecessarily truncate the
> string when something is found in the high byte. This fills that string the same as pre-patch, but returns a code
> indicating that junk was found in the MSB.
I that case I don't see the point in making things hard to review
by rewriting the whole function.
Why not just
Index: dvd_udf.c
===================================================================
--- dvd_udf.c (revision 1233)
+++ dvd_udf.c (working copy)
@@ -329,16 +329,17 @@
static int Unicodedecode( uint8_t *data, int len, char *target )
{
int p = 1, i = 0;
+ int err = 0;
if( ( data[ 0 ] == 8 ) || ( data[ 0 ] == 16 ) ) do {
- if( data[ 0 ] == 16 ) p++; /* Ignore MSB of unicode16 */
+ if( data[ 0 ] == 16 ) err |= data[ p++ ]; /* Ignore MSB of unicode16 */
if( p < len ) {
target[ i++ ] = data[ p++ ];
}
} while( p < len );
target[ i ] = '\0';
- return 0;
+ return !err;
}
static int UDFDescriptor( uint8_t *data, uint16_t *TagID )
More information about the DVDnav-discuss
mailing list