svn commit: [26049] trunk/busybox/shell

vapier at busybox.net vapier at busybox.net
Thu Apr 9 23:00:35 UTC 2009


Author: vapier
Date: 2009-04-09 23:00:33 +0000 (Thu, 09 Apr 2009)
New Revision: 26049

Log:
dont crash if the variable we do substitution on is not set

Modified:
   trunk/busybox/shell/hush.c


Changeset:
Modified: trunk/busybox/shell/hush.c
===================================================================
--- trunk/busybox/shell/hush.c	2009-04-09 20:41:34 UTC (rev 26048)
+++ trunk/busybox/shell/hush.c	2009-04-09 23:00:33 UTC (rev 26049)
@@ -2025,18 +2025,20 @@
 				debug_printf_expand("%s\n", val);
 			} else if (exp_off) {
 				if (exp_op == '%' || exp_op == '#') {
-					/* we need to do a pattern match */
-					bool zero;
-					char *loc;
-					scan_t scan = pick_scan(exp_op, *exp_word, &zero);
-					if (exp_op == *exp_word)	/* ## or %% */
-						++exp_word;
-					val = dyn_val = xstrdup(val);
-					loc = scan(dyn_val, exp_word, zero);
-					if (zero)
-						val = loc;
-					else
-						*loc = '\0';
+					if (val) {
+						/* we need to do a pattern match */
+						bool zero;
+						char *loc;
+						scan_t scan = pick_scan(exp_op, *exp_word, &zero);
+						if (exp_op == *exp_word)	/* ## or %% */
+							++exp_word;
+						val = dyn_val = xstrdup(val);
+						loc = scan(dyn_val, exp_word, zero);
+						if (zero)
+							val = loc;
+						else
+							*loc = '\0';
+					}
 				} else {
 					/* we need to do an expansion */
 					int exp_test = (!val || (exp_null && !val[0]));



More information about the busybox-cvs mailing list