summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Moore <paul@paul-moore.com>2021-10-18 09:42:02 -0600
committerPaul Moore <paul@paul-moore.com>2021-10-18 18:00:47 -0400
commit435b8a4ef2e79e599ec230bf486bc4309902bfde (patch)
tree7d593e35d8b26360c903c43c7b02dddcacafa402
parent41e3d17e284add36b38072b38938695de8aa65ff (diff)
downloadlibseccomp-435b8a4ef2e79e599ec230bf486bc4309902bfde.tar.gz
tests: fix 11-basic-basic_errors on old kernels (API level < 5)
Reported-by: Johannes Schauer Marin Rodrigues <josch@mister-muffin.de> Reported-by: Po-Hsu Lin <po-hsu.lin@canonical.com> Signed-off-by: Paul Moore <paul@paul-moore.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com> (imported from commit 5532444587fa5f33a43179ca5cc710f1bb05f51f)
-rw-r--r--tests/11-basic-basic_errors.c72
1 files changed, 39 insertions, 33 deletions
diff --git a/tests/11-basic-basic_errors.c b/tests/11-basic-basic_errors.c
index 49d9eef..c065b42 100644
--- a/tests/11-basic-basic_errors.c
+++ b/tests/11-basic-basic_errors.c
@@ -29,9 +29,13 @@ int main(int argc, char *argv[])
int rc;
scmp_filter_ctx ctx;
uint32_t attr;
+ unsigned int api;
struct seccomp_notif *req = NULL;
struct seccomp_notif_resp *resp = NULL;
+ /* get the api level */
+ api = seccomp_api_get();
+
/* seccomp_init errors */
ctx = seccomp_init(SCMP_ACT_ALLOW + 1);
if (ctx != NULL)
@@ -199,39 +203,41 @@ int main(int argc, char *argv[])
ctx = NULL;
/* seccomp notify errors */
- ctx = seccomp_init(SCMP_ACT_ALLOW);
- if (ctx == NULL)
- return -1;
- rc = seccomp_notify_alloc(NULL, NULL);
- if (rc != 0)
- return -1;
- rc = seccomp_notify_alloc(&req, NULL);
- if (rc != 0)
- return -1;
- rc = seccomp_notify_alloc(NULL, &resp);
- if (rc != 0)
- return -1;
- seccomp_notify_free(NULL, NULL);
- seccomp_notify_free(req, resp);
- req = NULL;
- resp = NULL;
- rc = seccomp_notify_receive(-1, NULL);
- if (rc == 0)
- return -1;
- rc = seccomp_notify_respond(-1, NULL);
- if (rc == 0)
- return -1;
- rc = seccomp_notify_id_valid(-1, 0);
- if (rc == 0)
- return -1;
- rc = seccomp_notify_fd(NULL);
- if (rc == 0)
- return -1;
- rc = seccomp_notify_fd(ctx);
- if (rc == 0)
- return -1;
- seccomp_release(ctx);
- ctx = NULL;
+ if (api >= 5) {
+ ctx = seccomp_init(SCMP_ACT_ALLOW);
+ if (ctx == NULL)
+ return -1;
+ rc = seccomp_notify_alloc(NULL, NULL);
+ if (rc != 0)
+ return -1;
+ rc = seccomp_notify_alloc(&req, NULL);
+ if (rc != 0)
+ return -1;
+ rc = seccomp_notify_alloc(NULL, &resp);
+ if (rc != 0)
+ return -1;
+ seccomp_notify_free(NULL, NULL);
+ seccomp_notify_free(req, resp);
+ req = NULL;
+ resp = NULL;
+ rc = seccomp_notify_receive(-1, NULL);
+ if (rc == 0)
+ return -1;
+ rc = seccomp_notify_respond(-1, NULL);
+ if (rc == 0)
+ return -1;
+ rc = seccomp_notify_id_valid(-1, 0);
+ if (rc == 0)
+ return -1;
+ rc = seccomp_notify_fd(NULL);
+ if (rc == 0)
+ return -1;
+ rc = seccomp_notify_fd(ctx);
+ if (rc == 0)
+ return -1;
+ seccomp_release(ctx);
+ ctx = NULL;
+ }
return 0;
}