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