fix bug 3223 (parameter loading problem for 2.4 kernels)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/modutils/modutils-24.c b/modutils/modutils-24.c
index 2b34954..bbc54e3 100644
--- a/modutils/modutils-24.c
+++ b/modutils/modutils-24.c
@@ -2444,14 +2444,12 @@
 			bb_error_msg_and_die("symbol for parameter %s not found", param);
 
 		/* Number of parameters */
+		min = max = 1;
 		if (isdigit(*pinfo)) {
-			min = strtoul(pinfo, &pinfo, 10);
+			min = max = strtoul(pinfo, &pinfo, 10);
 			if (*pinfo == '-')
 				max = strtoul(pinfo + 1, &pinfo, 10);
-			else
-				max = min;
-		} else
-			min = max = 1;
+		}
 
 		contents = f->sections[sym->secidx]->contents;
 		loc = contents + sym->value;
@@ -2473,7 +2471,8 @@
 		/* Parse parameter values */
 		n = 0;
 		p = val;
-		while (*p != 0) {
+		while (*p) {
+			char sv_ch;
 			char *endp;
 
 			if (++n > max)
@@ -2482,21 +2481,25 @@
 			switch (*pinfo) {
 			case 's':
 				len = strcspn(p, ",");
-				p[len] = 0;
+				sv_ch = p[len];
+				p[len] = '\0';
 				obj_string_patch(f, sym->secidx,
 						 loc - contents, p);
 				loc += tgt_sizeof_char_p;
 				p += len;
+				*p = sv_ch;
 				break;
 			case 'c':
 				len = strcspn(p, ",");
-				p[len] = 0;
+				sv_ch = p[len];
+				p[len] = '\0';
 				if (len >= charssize)
 					bb_error_msg_and_die("string too long for %s (max %ld)", param,
 							     charssize - 1);
 				strcpy((char *) loc, p);
 				loc += charssize;
 				p += len;
+				*p = sv_ch;
 				break;
 			case 'b':
 				*loc++ = strtoul(p, &endp, 0);