aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/process_escape_sequence.c8
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;