diff options
author | nicm <nicm> | 2022-08-02 09:23:34 +0000 |
---|---|---|
committer | nicm <nicm> | 2022-08-02 09:23:34 +0000 |
commit | 33c59100aeb49894550b97cce268f46032f4c8d6 (patch) | |
tree | eee723050fa5749c874c06d8c972f08742075286 | |
parent | 36d904011a0620284ad3a51639a090024f2575fb (diff) | |
download | rtmux-33c59100aeb49894550b97cce268f46032f4c8d6.tar.gz rtmux-33c59100aeb49894550b97cce268f46032f4c8d6.tar.bz2 rtmux-33c59100aeb49894550b97cce268f46032f4c8d6.zip |
Fix validation of missing percentage arguments.
-rw-r--r-- | arguments.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arguments.c b/arguments.c index 485af2be..b08582ee 100644 --- a/arguments.c +++ b/arguments.c @@ -895,6 +895,10 @@ args_percentage(struct args *args, u_char flag, long long minval, *cause = xstrdup("missing"); return (0); } + if (TAILQ_EMPTY(&entry->values)) { + *cause = xstrdup("empty"); + return (0); + } value = TAILQ_LAST(&entry->values, args_values)->string; return (args_string_percentage(value, minval, maxval, curval, cause)); } @@ -909,6 +913,10 @@ args_string_percentage(const char *value, long long minval, long long maxval, size_t valuelen = strlen(value); char *copy; + if (valuelen == 0) { + *cause = xstrdup("empty"); + return (0); + } if (value[valuelen - 1] == '%') { copy = xstrdup(value); copy[valuelen - 1] = '\0'; @@ -955,6 +963,10 @@ args_percentage_and_expand(struct args *args, u_char flag, long long minval, *cause = xstrdup("missing"); return (0); } + if (TAILQ_EMPTY(&entry->values)) { + *cause = xstrdup("empty"); + return (0); + } value = TAILQ_LAST(&entry->values, args_values)->string; return (args_string_percentage_and_expand(value, minval, maxval, curval, item, cause)); |