Fix decoding of escape sequences in format strings:

- Zero-terminate the resulting string by letting the for-loop copy the
  terminating zero.
- Exit the for-loop after handling a backslash at the end of the format
  string to fix a buffer overrun.
- Remove some unnecessary comments and blank lines. [1]

Requested by:	bde [1]
PR:		bin/144722
Approved by:	kib (mentor)
This commit is contained in:
tijl 2012-01-28 18:49:04 +00:00
parent 3617a03b5b
commit 1450485621

View File

@ -451,21 +451,14 @@ escape(char *p1)
char *p2;
/* alphabetic escape sequences have to be done in place */
for (p2 = p1; *p1; p1++, p2++) {
/*
* Let's take a peak at the next item and see whether or not
* we need to escape the value...
*/
for (p2 = p1;; p1++, p2++) {
if (*p1 == '\\') {
p1++;
switch(*p1) {
/* A standalone `\' */
case '\0':
*p2 = '\\';
*++p2 = '\0';
break;
return;
case 'a':
/* *p2 = '\a'; */
*p2 = '\007';
@ -492,12 +485,12 @@ escape(char *p1)
*p2 = *p1;
break;
}
} else
} else {
*p2 = *p1;
if (*p1 == '\0')
return;
}
}
}
void