aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-05-09 21:57:23 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-05-09 21:57:23 +0000
commit389f9d52d5520dea157fab474caacf3d8b1bde73 (patch)
treeda613930899b3c3c5347e2cef0e9050c486dce36
parent57bf668d118804060cee998408bdfbfb5512e670 (diff)
downloadbusybox-w32-389f9d52d5520dea157fab474caacf3d8b1bde73.tar.gz
busybox-w32-389f9d52d5520dea157fab474caacf3d8b1bde73.tar.bz2
busybox-w32-389f9d52d5520dea157fab474caacf3d8b1bde73.zip
awk: don't segfault on printf(%*s). Close 1337.
-rw-r--r--editors/awk.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/editors/awk.c b/editors/awk.c
index bc9e99a6f..2e67f67fb 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -1756,8 +1756,11 @@ static char *awk_printf(node *n)
1756 s = f; 1756 s = f;
1757 while (*f && (*f != '%' || *(++f) == '%')) 1757 while (*f && (*f != '%' || *(++f) == '%'))
1758 f++; 1758 f++;
1759 while (*f && !isalpha(*f)) 1759 while (*f && !isalpha(*f)) {
1760 if (*f == '*')
1761 syntax_error("%*x formats are not supported");
1760 f++; 1762 f++;
1763 }
1761 1764
1762 incr = (f - s) + MAXVARFMT; 1765 incr = (f - s) + MAXVARFMT;
1763 qrealloc(&b, incr + i, &bsize); 1766 qrealloc(&b, incr + i, &bsize);