seccomp: handle all errors

parent babd8f1d
...@@ -371,20 +371,34 @@ scmp_filter_ctx get_new_ctx(enum lxc_hostarch_t n_arch, uint32_t default_policy_ ...@@ -371,20 +371,34 @@ scmp_filter_ctx get_new_ctx(enum lxc_hostarch_t n_arch, uint32_t default_policy_
} }
#endif #endif
if (seccomp_arch_exist(ctx, arch) == -EEXIST) { ret = seccomp_arch_exist(ctx, arch);
if (ret < 0) {
if (ret != -EEXIST) {
ERROR("%s - Failed to determine whether arch %d is "
"already present in the main seccomp context",
strerror(-ret), (int)n_arch);
seccomp_release(ctx);
return NULL;
}
ret = seccomp_arch_add(ctx, arch); ret = seccomp_arch_add(ctx, arch);
if (ret != 0) { if (ret != 0) {
ERROR("Seccomp error %d (%s) adding arch: %d", ret, ERROR("%s - Failed to add arch %d to main seccomp context",
strerror(-ret), (int)n_arch); strerror(-ret), (int)n_arch);
seccomp_release(ctx); seccomp_release(ctx);
return NULL; return NULL;
} }
TRACE("Added arch %d to main seccomp context", (int)n_arch);
if (seccomp_arch_remove(ctx, SCMP_ARCH_NATIVE) != 0) { ret = seccomp_arch_remove(ctx, SCMP_ARCH_NATIVE);
ERROR("Seccomp error removing native arch"); if (ret != 0) {
ERROR("Failed to remove native arch from main seccomp context");
seccomp_release(ctx); seccomp_release(ctx);
return NULL; return NULL;
} }
TRACE("Removed native arch from main seccomp context");
} else {
TRACE("Arch %d already present in main seccomp context", (int)n_arch);
} }
return ctx; return ctx;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment