daemon/selinux-relabel: search for "invalid option" in setfiles output

'X' in the setiles' stderr doesn't necessarily mean that option 'X'
doesn't exist.  For instance, when passing '-T' we get: "setfiles:
option requires an argument -- 'T'".

Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
(cherry picked from commit 152d6e4bdf)
This commit is contained in:
Andrey Drobyshev
2023-04-26 15:59:45 +03:00
committed by Richard W.M. Jones
parent d2e6dce96a
commit 917455b158

View File

@@ -56,8 +56,9 @@ setfiles_has_option (int *flag, char opt_char)
if (*flag == -1) {
char option[] = { '-', opt_char, '\0' }; /* "-X" */
char err_opt[] = { '\'', opt_char, '\'', '\0'}; /* "'X'" */
char err_opt[32]; /* "invalid option -- 'X'" */
snprintf(err_opt, sizeof(err_opt), "invalid option -- '%c'", opt_char);
ignore_value (command (NULL, &err, "setfiles", option, NULL));
*flag = err && strstr (err, /* "invalid option -- " */ err_opt) == NULL;
}