elfctl: fix -e invalid operation error handling

Validate the operation prior to parsing the feature string, so that e.g.
-e 0x1 reports invalid operation '0' rather than invalid feature 'x11'.
Also make it an error rather than a warning, so that it is not repeated
if multiple files are specified.

(Previously an invalid operation resulted in a segfault.)

MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Ed Maste 2022-02-14 22:30:29 -05:00
parent f0cf9b602d
commit b8185579f4

View File

@ -232,6 +232,10 @@ convert_to_feature_val(char *feature_str, uint32_t *feature_val)
input = 0;
operation = *feature_str;
feature_str++;
if (operation != '+' && operation != '-' && operation != '=')
errx(1, "'%c' not an operator - use '+', '-', '='", operation);
len = nitems(featurelist);
while ((feature = strsep(&feature_str, ",")) != NULL) {
for (i = 0; i < len; ++i) {
@ -280,10 +284,6 @@ convert_to_feature_val(char *feature_str, uint32_t *feature_val)
*feature_val = input;
} else if (operation == '-') {
*feature_val &= ~input;
} else {
warnx("'%c' not an operator - use '+', '-', '='",
feature_str[0]);
return (false);
}
return (true);
}