]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
agetty: don't modify argv[] when parse speeds
authorKarel Zak <kzak@redhat.com>
Thu, 30 Jun 2016 12:00:44 +0000 (14:00 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 30 Jun 2016 12:00:44 +0000 (14:00 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
term-utils/agetty.c

index 090ef918059b050d98a1e66130075bbe9e2dc0bc..f3fc66714c83eae247b130c314de53868b1b06da 100644 (file)
@@ -868,15 +868,20 @@ static void parse_args(int argc, char **argv, struct options *op)
 static void parse_speeds(struct options *op, char *arg)
 {
        char *cp;
+       char *str = strdup(arg);
 
-       debug("entered parse_speeds\n");
-       for (cp = strtok(arg, ","); cp != NULL; cp = strtok((char *)0, ",")) {
+       if (!str)
+               log_err(_("failed to allocate memory: %m"));
+
+       debug("entered parse_speeds:\n");
+       for (cp = strtok(str, ","); cp != NULL; cp = strtok((char *)0, ",")) {
                if ((op->speeds[op->numspeed++] = bcode(cp)) <= 0)
                        log_err(_("bad speed: %s"), cp);
                if (op->numspeed >= MAX_SPEED)
                        log_err(_("too many alternate speeds"));
        }
        debug("exiting parsespeeds\n");
+       free(str);
 }
 
 #ifdef SYSV_STYLE