summaryrefslogtreecommitdiffstats
path: root/arguments.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2022-08-02 12:01:09 +0100
committerThomas Adam <thomas@xteddy.org>2022-08-02 12:01:09 +0100
commit9a2fdf8fd45fd156590ac3eabc7baad866fd06df (patch)
tree7f95befd452998e79f8e97c0d5d1cb7d875501ee /arguments.c
parent00812c9053a0b1067f833925b726086a67d8528d (diff)
parent33c59100aeb49894550b97cce268f46032f4c8d6 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'arguments.c')
-rw-r--r--arguments.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arguments.c b/arguments.c
index 46777f7f..3315cef2 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));