diff options
Diffstat (limited to 'apps/gui/wps_parser.c')
-rw-r--r-- | apps/gui/wps_parser.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c index b51a76a594..8a226e1963 100644 --- a/apps/gui/wps_parser.c +++ b/apps/gui/wps_parser.c | |||
@@ -490,7 +490,15 @@ static int parse_subline_timeout(const char *wps_bufptr, struct wps_data *wps_da | |||
490 | if (have_tenth == false) | 490 | if (have_tenth == false) |
491 | val *= 10; | 491 | val *= 10; |
492 | 492 | ||
493 | /* We only want to allow strictly positive timeout values */ | ||
494 | if (val <= 0) | ||
495 | val = DEFAULT_SUBLINE_TIME_MULTIPLIER; | ||
496 | |||
497 | int line = wps_data->num_lines; | ||
498 | int subline = wps_data->num_sublines[line]; | ||
499 | wps_data->time_mult[line][subline] = val; | ||
493 | wps_data->tokens[wps_data->num_tokens].value.i = val; | 500 | wps_data->tokens[wps_data->num_tokens].value.i = val; |
501 | |||
494 | return skip; | 502 | return skip; |
495 | } | 503 | } |
496 | 504 | ||
@@ -616,6 +624,8 @@ static bool wps_parse(struct wps_data *data, const char *wps_bufptr) | |||
616 | data->num_tokens = 0; | 624 | data->num_tokens = 0; |
617 | char *current_string = data->string_buffer; | 625 | char *current_string = data->string_buffer; |
618 | 626 | ||
627 | data->time_mult[0][0] = DEFAULT_SUBLINE_TIME_MULTIPLIER; | ||
628 | |||
619 | while(wps_bufptr && *wps_bufptr && data->num_tokens < WPS_MAX_TOKENS | 629 | while(wps_bufptr && *wps_bufptr && data->num_tokens < WPS_MAX_TOKENS |
620 | && data->num_lines < WPS_MAX_LINES) | 630 | && data->num_lines < WPS_MAX_LINES) |
621 | { | 631 | { |
@@ -634,6 +644,7 @@ static bool wps_parse(struct wps_data *data, const char *wps_bufptr) | |||
634 | data->tokens[data->num_tokens++].type = WPS_TOKEN_SUBLINE_SEPARATOR; | 644 | data->tokens[data->num_tokens++].type = WPS_TOKEN_SUBLINE_SEPARATOR; |
635 | subline = ++(data->num_sublines[data->num_lines]); | 645 | subline = ++(data->num_sublines[data->num_lines]); |
636 | data->format_lines[data->num_lines][subline] = data->num_tokens; | 646 | data->format_lines[data->num_lines][subline] = data->num_tokens; |
647 | data->time_mult[data->num_lines][subline] = DEFAULT_SUBLINE_TIME_MULTIPLIER; | ||
637 | } | 648 | } |
638 | else | 649 | else |
639 | wps_bufptr += skip_end_of_line(wps_bufptr); | 650 | wps_bufptr += skip_end_of_line(wps_bufptr); |
@@ -700,6 +711,7 @@ condlistend: /* close a conditional. sometimes we want to close them even when | |||
700 | if (data->num_lines < WPS_MAX_LINES) | 711 | if (data->num_lines < WPS_MAX_LINES) |
701 | { | 712 | { |
702 | data->format_lines[data->num_lines][0] = data->num_tokens; | 713 | data->format_lines[data->num_lines][0] = data->num_tokens; |
714 | data->time_mult[data->num_lines][0] = DEFAULT_SUBLINE_TIME_MULTIPLIER; | ||
703 | } | 715 | } |
704 | 716 | ||
705 | break; | 717 | break; |