diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-05-09 21:57:23 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-05-09 21:57:23 +0000 |
commit | 389f9d52d5520dea157fab474caacf3d8b1bde73 (patch) | |
tree | da613930899b3c3c5347e2cef0e9050c486dce36 | |
parent | 57bf668d118804060cee998408bdfbfb5512e670 (diff) | |
download | busybox-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.c | 5 |
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); |