[Bug 852345] Re: Libdvdread misses hidden files and causes segfaults to calling programs
Ubuntu QA's Bug Bot
bug-stats at murraytwins.com
Sun Sep 18 20:08:30 UTC 2011
The attachment "debdiff with the changes" of this bug report has been
identified as being a patch in the form of a debdiff. The ubuntu-
sponsors team has been subscribed to the bug report so that they can
review and hopefully sponsor the debdiff. In the event that this is in
fact not a patch you can resolve this situation by removing the tag
'patch' from the bug report and editing the attachment so that it is not
flagged as a patch. Additionally, if you are member of the ubuntu-
sponsors please also unsubscribe the team from this bug report.
[This is an automated message performed by a Launchpad user owned by
Brian Murray. Please contact him regarding any issues with the action
taken in this bug report.]
** Tags added: patch
--
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/852345
Title:
Libdvdread misses hidden files and causes segfaults to calling
programs
Status in “libdvdread” package in Ubuntu:
Confirmed
Bug description:
Package: libdvdread4
Version: 4.1.x 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 manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libdvdread/+bug/852345/+subscriptions
More information about the Ubuntu-sponsors
mailing list