BUG/MEDIUM: namespaces: don't fail if no namespace is used
Susheel Jalali reported a confusing bug in namespaces implementation.
If namespaces are enabled at build time (USE_NS=1) and *no* namespace
is used at all in the whole config file, my_socketat() returns -1 and
all socket bindings fail. This is because of a wrong condition in this
function. A possible workaround consists in creating some namespaces.
diff --git a/src/namespace.c b/src/namespace.c
index a22f1a5..f1e81df 100644
--- a/src/namespace.c
+++ b/src/namespace.c
@@ -97,14 +97,13 @@
int sock;
#ifdef CONFIG_HAP_NS
- if (default_namespace < 0 ||
- (ns && setns(ns->fd, CLONE_NEWNET) == -1))
+ if (default_namespace >= 0 && ns && setns(ns->fd, CLONE_NEWNET) == -1)
return -1;
#endif
sock = socket(domain, type, protocol);
#ifdef CONFIG_HAP_NS
- if (ns && setns(default_namespace, CLONE_NEWNET) == -1) {
+ if (default_namespace >= 0 && ns && setns(default_namespace, CLONE_NEWNET) == -1) {
close(sock);
return -1;
}