dc: Parse error & fix out of bounds read in xc_program_printString

function                                             old     new   delta
xc_program_print                                     712     735     +23

Signed-off-by: Brian Foley <bpfoley@google.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Brian Foley
2019-09-05 10:53:21 +02:00
committed by Denys Vlasenko
parent b64470be17
commit 10509a70ee
2 changed files with 24 additions and 2 deletions

View File

@@ -5456,11 +5456,13 @@ static void xc_program_printString(const char *str)
char *n;
c = *str++;
n = strchr(esc, c); // note: c can be NUL
if (!n) {
n = strchr(esc, c); // note: if c is NUL, n = \0 at end of esc
if (!n || !c) {
// Just print the backslash and following character
bb_putchar('\\');
++G.prog.nchars;
// But if we're at the end of the string, stop
if (!c) break;
} else {
if (n - esc == 0) // "\n" ?
G.prog.nchars = SIZE_MAX;