=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/timeout/timeout.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- src/usr.bin/timeout/timeout.c 2021/09/01 20:18:54 1.10 +++ src/usr.bin/timeout/timeout.c 2021/09/01 21:43:51 1.11 @@ -1,6 +1,6 @@ -/* $OpenBSD: timeout.c,v 1.10 2021/09/01 20:18:54 job Exp $ */ +/* $OpenBSD: timeout.c,v 1.11 2021/09/01 21:43:51 job Exp $ */ -/*- +/* * Copyright (c) 2021 Job Snijders * Copyright (c) 2014 Baptiste Daroussin * Copyright (c) 2014 Vsevolod Stakhov @@ -63,19 +63,21 @@ parse_duration(const char *duration) { double ret; - char *end; + char *suffix; - ret = strtod(duration, &end); - if (ret == 0 && end == duration) + ret = strtod(duration, &suffix); + if (ret == 0 && suffix == duration) err(1, "invalid duration"); + if (ret < 0 || ret >= 100000000UL) + err(1, "invalid duration"); - if (end == NULL || *end == '\0') + if (suffix == NULL || *suffix == '\0') return (ret); - if (end != NULL && *(end + 1) != '\0') + if (suffix != NULL && *(suffix + 1) != '\0') err(1, "invalid duration"); - switch (*end) { + switch (*suffix) { case 's': break; case 'm': @@ -90,9 +92,6 @@ default: err(1, "invalid duration"); } - - if (ret < 0 || ret >= 100000000UL) - err(1, "invalid duration"); return (ret); }