parse_duration(): Bail out early in final state

Bail out early if we are reading a character while being in a final
state.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2013-02-14 12:22:34 +01:00
parent de0092a1e9
commit 8e16853201

View File

@ -785,11 +785,10 @@ int parse_duration(const char *string, unsigned *duration)
/* parse string using a simple state machine */ /* parse string using a simple state machine */
for (p = string; *p; p++) { for (p = string; *p; p++) {
if ((*p >= '0') && (*p <= '9')) { if (state == STATE_DONE) {
if (state == STATE_DONE) return 0;
return 0; } else if ((*p >= '0') && (*p <= '9')) {
else in = in * 10 + (int)(*p - '0');
in = in * 10 + (int)(*p - '0');
} else { } else {
switch (state) { switch (state) {
case STATE_INITIAL: case STATE_INITIAL:
@ -826,7 +825,6 @@ int parse_duration(const char *string, unsigned *duration)
return 0; return 0;
break; break;
case STATE_HHMM_MM: case STATE_HHMM_MM:
case STATE_DONE:
return 0; return 0;
break; break;
} }