Advertisement
techmik

Untitled

Oct 1st, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.21 KB | None | 0 0
  1. diff -ru libdvdread-4.1.3/src/dvd_udf.c libdvdread-4.1.3.fixed/src/dvd_udf.c
  2. --- libdvdread-4.1.3/src/dvd_udf.c  2008-09-06 15:55:51.000000000 -0600
  3. +++ libdvdread-4.1.3.fixed/src/dvd_udf.c    2011-09-16 14:07:04.000000000 -0600
  4. @@ -331,21 +331,26 @@
  5.  /* This is wrong with regard to endianess */
  6.  #define GETN(p, n, target) memcpy(target, &data[p], n)
  7.  
  8. -static int Unicodedecode( uint8_t *data, int len, char *target )
  9. +static int Unicodedecode(uint8_t *data, int len, char *target)
  10.  {
  11. -    int p = 1, i = 0;
  12. +    len--;
  13. +    data++;
  14. +    if (data[-1] == 8 )
  15. +        memcpy(target, data, len);
  16. +    else if (data[-1] == 16) {
  17. +        int i;
  18.  
  19. -    if( ( data[ 0 ] == 8 ) || ( data[ 0 ] == 16 ) ) do {
  20. -        if( data[ 0 ] == 16 ) p++;  /* Ignore MSB of unicode16 */
  21. -        if( p < len ) {
  22. -            target[ i++ ] = data[ p++ ];
  23. +        for (i = 0; i < len; i++) {
  24. +            if (data[i*2] == 0)
  25. +                target[i] = data[i*2+1];
  26. +            else
  27. +                target[i] = 0;
  28.          }
  29. -    } while( p < len );
  30. +    }
  31. +    target[len] = '\0';
  32.  
  33. -    target[ i ] = '\0';
  34.      return 0;
  35.  }
  36. -
  37.  static int UDFDescriptor( uint8_t *data, uint16_t *TagID )
  38.  {
  39.      *TagID = GETN2(0);
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement