Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement