[git commit] ash: all blocks in function node copying must be SHELL_ALIGNed
Denys Vlasenko
vda.linux at googlemail.com
Fri Oct 7 02:28:33 UTC 2016
commit: https://git.busybox.net/busybox/commit/?id=561639a68c6a5468eaa95912592f9d01ba9dcbdd
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Previous commit probably introduced a bug:
non-matching size calculation in size counting and
actual copying caused by SHELL_ALIGN being applied differently!
This won't bite if string sizes are also SHELL_ALIGNed.
Thus fixing.
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
shell/ash.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/shell/ash.c b/shell/ash.c
index 4ab2f20..50f479d 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8248,7 +8248,7 @@ calcsize(int funcblocksize, union node *n)
funcblocksize = calcsize(funcblocksize, n->nif.test);
break;
case NFOR:
- funcblocksize += strlen(n->nfor.var) + 1; /* was funcstringsize += ... */
+ funcblocksize += SHELL_ALIGN(strlen(n->nfor.var) + 1); /* was funcstringsize += ... */
funcblocksize = calcsize(funcblocksize, n->nfor.body);
funcblocksize = calcsize(funcblocksize, n->nfor.args);
break;
@@ -8264,7 +8264,7 @@ calcsize(int funcblocksize, union node *n)
case NDEFUN:
case NARG:
funcblocksize = sizenodelist(funcblocksize, n->narg.backquote);
- funcblocksize += strlen(n->narg.text) + 1; /* was funcstringsize += ... */
+ funcblocksize += SHELL_ALIGN(strlen(n->narg.text) + 1); /* was funcstringsize += ... */
funcblocksize = calcsize(funcblocksize, n->narg.next);
break;
case NTO:
@@ -8298,7 +8298,7 @@ calcsize(int funcblocksize, union node *n)
static char *
nodeckstrdup(char *s)
{
- funcstring_end -= strlen(s) + 1;
+ funcstring_end -= SHELL_ALIGN(strlen(s) + 1);
return strcpy(funcstring_end, s);
}
More information about the busybox-cvs
mailing list