diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/process_escape_sequence.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libbb/process_escape_sequence.c b/libbb/process_escape_sequence.c index 6de2cacdd..11059d1a5 100644 --- a/libbb/process_escape_sequence.c +++ b/libbb/process_escape_sequence.c | |||
@@ -45,6 +45,9 @@ char FAST_FUNC bb_process_escape_sequence(const char **ptr) | |||
45 | } | 45 | } |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | /* bash requires leading 0 in octal escapes: | ||
49 | * \02 works, \2 does not (prints \ and 2). | ||
50 | * We treat \2 as a valid octal escape sequence. */ | ||
48 | do { | 51 | do { |
49 | d = (unsigned char)(*q) - '0'; | 52 | d = (unsigned char)(*q) - '0'; |
50 | #ifdef WANT_HEX_ESCAPES | 53 | #ifdef WANT_HEX_ESCAPES |
@@ -80,7 +83,10 @@ char FAST_FUNC bb_process_escape_sequence(const char **ptr) | |||
80 | break; | 83 | break; |
81 | } | 84 | } |
82 | } while (*++p); | 85 | } while (*++p); |
83 | n = *(p + (sizeof(charmap)/2)); | 86 | /* p points to found escape char or NUL, |
87 | * advance it and find what it translates to */ | ||
88 | p += sizeof(charmap) / 2; | ||
89 | n = *p; | ||
84 | } | 90 | } |
85 | 91 | ||
86 | *ptr = q; | 92 | *ptr = q; |