[git commit] test: "test !" was accessing argv past NULL - fix it. Closes 4832

Denys Vlasenko vda.linux at googlemail.com
Thu Mar 8 02:50:01 UTC 2012


commit: http://git.busybox.net/busybox/commit/?id=07fcaab595e9029ebe37f5240a10038c493af545
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/test.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/coreutils/test.c b/coreutils/test.c
index 1f5398a..0bc008e 100644
--- a/coreutils/test.c
+++ b/coreutils/test.c
@@ -710,7 +710,8 @@ static number_t nexpr(enum token n)
 		if (n == EOI) {
 			/* special case: [ ! ], [ a -a ! ] are valid */
 			/* IOW, "! ARG" may miss ARG */
-			unnest_msg("<nexpr:1 (!EOI)\n");
+			args--;
+			unnest_msg("<nexpr:1 (!EOI), args:%s(%p)\n", args[0], &args[0]);
 			return 1;
 		}
 		res = !nexpr(n);
@@ -729,15 +730,15 @@ static number_t aexpr(enum token n)
 
 	nest_msg(">aexpr(%s)\n", TOKSTR[n]);
 	res = nexpr(n);
-	dbg_msg("aexpr: nexpr:%lld, next args:%s\n", res, args[1]);
+	dbg_msg("aexpr: nexpr:%lld, next args:%s(%p)\n", res, args[1], &args[1]);
 	if (check_operator(*++args) == BAND) {
-		dbg_msg("aexpr: arg is AND, next args:%s\n", args[1]);
+		dbg_msg("aexpr: arg is AND, next args:%s(%p)\n", args[1], &args[1]);
 		res = aexpr(check_operator(*++args)) && res;
 		unnest_msg("<aexpr:%lld\n", res);
 		return res;
 	}
 	args--;
-	unnest_msg("<aexpr:%lld, args:%s\n", res, args[0]);
+	unnest_msg("<aexpr:%lld, args:%s(%p)\n", res, args[0], &args[0]);
 	return res;
 }
 
@@ -748,15 +749,15 @@ static number_t oexpr(enum token n)
 
 	nest_msg(">oexpr(%s)\n", TOKSTR[n]);
 	res = aexpr(n);
-	dbg_msg("oexpr: aexpr:%lld, next args:%s\n", res, args[1]);
+	dbg_msg("oexpr: aexpr:%lld, next args:%s(%p)\n", res, args[1], &args[1]);
 	if (check_operator(*++args) == BOR) {
-		dbg_msg("oexpr: next arg is OR, next args:%s\n", args[1]);
+		dbg_msg("oexpr: next arg is OR, next args:%s(%p)\n", args[1], &args[1]);
 		res = oexpr(check_operator(*++args)) || res;
 		unnest_msg("<oexpr:%lld\n", res);
 		return res;
 	}
 	args--;
-	unnest_msg("<oexpr:%lld, args:%s\n", res, args[0]);
+	unnest_msg("<oexpr:%lld, args:%s(%p)\n", res, args[0], &args[0]);
 	return res;
 }
 


More information about the busybox-cvs mailing list