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. Discussion is here: http://ubuntuforums.org/showthread.php?p=11257764 Patch is here: diff -ru libdvdread-4.1.3/src/dvd_udf.c libdvdread-4.1.3.fixed/src/dvd_udf.c --- libdvdread-4.1.3/src/dvd_udf.c 2008-09-06 15:55:51.000000000 -0600 +++ libdvdread-4.1.3.fixed/src/dvd_udf.c 2011-09-16 14:07:04.000000000 -0600 @@ -331,21 +331,26 @@ /* This is wrong with regard to endianess */ #define GETN(p, n, target) memcpy(target,&data[p], n) -static int Unicodedecode( uint8_t *data, int len, char *target ) +static int Unicodedecode(uint8_t *data, int len, char *target) { - int p = 1, i = 0; + len--; + data++; + if (data[-1] == 8 ) + memcpy(target, data, len); + else if (data[-1] == 16) { + int i; - if( ( data[ 0 ] == 8 ) || ( data[ 0 ] == 16 ) ) do { - if( data[ 0 ] == 16 ) p++; /* Ignore MSB of unicode16 */ - if( p< len ) { - target[ i++ ] = data[ p++ ]; + for (i = 0; i< len; i++) { + if (data[i*2] == 0) + target[i] = data[i*2+1]; + else + target[i] = 0; } - } while( p< len ); + } + target[len] = '\0'; - target[ i ] = '\0'; return 0; } - static int UDFDescriptor( uint8_t *data, uint16_t *TagID ) { *TagID = GETN2(0); -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

