Boolean values have to be handled separately for RestrictNamespaces= because
they get stored in a field with reverse meaning (which namespaces are retained),
so let's check which field we're parsing and set the proper value accordingly.
/* Boolean parameter ignores the previous settings */
r = parse_boolean(rvalue);
if (r > 0) {
- *flags = 0;
+ /* RestrictNamespaces= value gets stored into a field with reverse semantics (the namespaces
+ * which are retained), so RestrictNamespaces=true means we retain no access to any
+ * namespaces and vice-versa. */
+ *flags = streq(lvalue, "RestrictNamespaces") ? 0 : all;
return 0;
} else if (r == 0) {
- *flags = all;
+ *flags = streq(lvalue, "RestrictNamespaces") ? all : 0;
return 0;
}