diff options
Diffstat (limited to 'term-utils')
-rw-r--r-- | term-utils/agetty.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/term-utils/agetty.c b/term-utils/agetty.c index 090ef9180..f3fc66714 100644 --- a/term-utils/agetty.c +++ b/term-utils/agetty.c @@ -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 |