Fixes: e8b9c9ec6fb9 ("unmounted proc/sys/net if dropping CAP_NET_ADMIN")
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
{ 0, 0, NULL, NULL, NULL, 0, NULL, 0 }
};
- bool has_cap_net_admin = in_caplist(CAP_NET_ADMIN, &conf->caps);
- for (i = 0; default_mounts[i].match_mask; i++) {
+ bool has_cap_net_admin = lxc_wants_cap(CAP_NET_ADMIN, conf);
+ for (i = 0; default_mounts[i].match_mask; i++) {
__do_free char *destination = NULL, *source = NULL;
int saved_errno;
unsigned long mflags;
#include <sys/types.h>
#include <sys/vfs.h>
+#include "caps.h"
#include "compiler.h"
#include "config.h"
#include "list.h"
const char *script, const char *hookname, char **argsin);
__hidden extern int in_caplist(int cap, struct lxc_list *caps);
-static inline int lxc_wants_cap(int cap, struct lxc_conf *conf)
+static inline bool lxc_wants_cap(int cap, struct lxc_conf *conf)
{
+ if (lxc_caps_last_cap() < cap)
+ return false;
+
if (!lxc_list_empty(&conf->keepcaps))
return !in_caplist(cap, &conf->keepcaps);