From: Thomas Weißschuh Date: Thu, 11 May 2023 10:48:33 +0000 (+0200) Subject: enosys: improve checks for EXIT_NOTSUPP X-Git-Tag: v2.40-rc1~466^2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f080b635a15803829be2daca4863a2c63ee771b1;p=thirdparty%2Futil-linux.git enosys: improve checks for EXIT_NOTSUPP Signed-off-by: Thomas Weißschuh --- diff --git a/misc-utils/enosys.c b/misc-utils/enosys.c index 88e7af3b02..bf104876cd 100644 --- a/misc-utils/enosys.c +++ b/misc-utils/enosys.c @@ -132,11 +132,17 @@ int main(int argc, char **argv) .filter = filter, }; + /* *SET* below will return EINVAL when either the filter is invalid or + * seccomp is not supported. To distinguish those cases do a *GET* here + */ + if (prctl(PR_GET_SECCOMP) == -1 && errno == EINVAL) + err(EXIT_NOTSUPP, "Seccomp non-functional"); + if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) - err(EXIT_NOTSUPP, "prctl(PR_SET_NO_NEW_PRIVS)"); + err_nosys(EXIT_FAILURE, "prctl(PR_SET_NO_NEW_PRIVS)"); if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog)) - err(EXIT_NOTSUPP, "prctl(PR_SET_SECCOMP)"); + err_nosys(EXIT_FAILURE, "prctl(PR_SET_SECCOMP)"); if (execvp(argv[optind], argv + optind)) err(EXIT_NOTSUPP, "Could not exec");