summaryrefslogtreecommitdiff
path: root/editors/awk.c
diff options
context:
space:
mode:
authorDenys Vlasenko2021-09-09 19:26:39 +0200
committerDenys Vlasenko2021-09-09 19:26:39 +0200
commit857800c65584d544242c54eb873129c23ba20265 (patch)
treeda3d99903bd02a05d1a6469dfbbd71b9b9514f07 /editors/awk.c
parente60c56932ed95eb1c72b12d7404d42798da61bca (diff)
downloadbusybox-857800c65584d544242c54eb873129c23ba20265.zip
busybox-857800c65584d544242c54eb873129c23ba20265.tar.gz
awk: never return NULL from awk_printf()
function old new delta awk_printf 651 628 -23 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors/awk.c')
-rw-r--r--editors/awk.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/editors/awk.c b/editors/awk.c
index 6644d7d..f6314ac 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -2338,7 +2338,7 @@ static char *awk_printf(node *n, size_t *len)
b = NULL;
i = 0;
- while (*f) { /* "print one format spec" loop */
+ while (1) { /* "print one format spec" loop */
char *s;
char c;
char sv;
@@ -2363,7 +2363,7 @@ static char *awk_printf(node *n, size_t *len)
slen = f - s;
s = xstrndup(s, slen);
f++;
- goto tail; /* print "....%" part verbatim */
+ goto append; /* print "....%" part verbatim */
}
while (1) {
if (isalpha(c))
@@ -2412,7 +2412,7 @@ static char *awk_printf(node *n, size_t *len)
slen = strlen(s);
}
*f = sv;
-
+ append:
if (i == 0) {
b = s;
i = slen;
@@ -2422,7 +2422,7 @@ static char *awk_printf(node *n, size_t *len)
b = xrealloc(b, i + slen + 1);
strcpy(b + i, s);
i += slen;
- if (!c) /* tail? */
+ if (!c) /* s is NOT allocated and this is the last part of string? */
break;
free(s);
}