chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
readahead: fix calculation of percentage
[elogind.git]
/
src
/
core
/
namespace.c
diff --git
a/src/core/namespace.c
b/src/core/namespace.c
index 7ac6b381abb772870457a1fe7e3e628f009622d1..4bef15fdf570941a91e1e5fd18a6c8c2cd334346 100644
(file)
--- a/
src/core/namespace.c
+++ b/
src/core/namespace.c
@@
-33,6
+33,7
@@
#include "strv.h"
#include "util.h"
#include "strv.h"
#include "util.h"
+#include "path-util.h"
#include "namespace.h"
#include "missing.h"
#include "namespace.h"
#include "missing.h"
@@
-130,7
+131,8
@@
static int apply_mount(Path *p, const char *root_dir, const char *inaccessible_d
assert(inaccessible_dir);
assert(private_dir);
assert(inaccessible_dir);
assert(private_dir);
- if (!(where = strappend(root_dir, p->path)))
+ where = strappend(root_dir, p->path);
+ if (!where)
return -ENOMEM;
switch (p->mode) {
return -ENOMEM;
switch (p->mode) {
@@
-156,7
+158,8
@@
static int apply_mount(Path *p, const char *root_dir, const char *inaccessible_d
assert_not_reached("Unknown mode");
}
assert_not_reached("Unknown mode");
}
- if ((r = mount(what, where, NULL, MS_BIND|MS_REC, NULL)) >= 0) {
+ r = mount(what, where, NULL, MS_BIND|MS_REC, NULL);
+ if (r >= 0) {
log_debug("Successfully mounted %s to %s", what, where);
/* The bind mount will always inherit the original
log_debug("Successfully mounted %s to %s", what, where);
/* The bind mount will always inherit the original
@@
-204,9
+207,10
@@
int setup_namespace(
strv_length(writable) +
strv_length(readable) +
strv_length(inaccessible) +
strv_length(writable) +
strv_length(readable) +
strv_length(inaccessible) +
- (private_tmp ?
2
: 1);
+ (private_tmp ?
3
: 1);
- if (!(paths = new(Path, n)))
+ paths = new(Path, n);
+ if (!paths)
return -ENOMEM;
p = paths;
return -ENOMEM;
p = paths;
@@
-219,6
+223,10
@@
int setup_namespace(
p->path = "/tmp";
p->mode = PRIVATE;
p++;
p->path = "/tmp";
p->mode = PRIVATE;
p++;
+
+ p->path = "/var/tmp";
+ p->mode = PRIVATE;
+ p++;
}
p->path = "/";
}
p->path = "/";
@@
-281,9
+289,11
@@
int setup_namespace(
goto fail;
}
goto fail;
}
- for (p = paths; p < paths + n; p++)
- if ((r = apply_mount(p, root_dir, inaccessible_dir, private_dir, flags)) < 0)
+ for (p = paths; p < paths + n; p++) {
+ r = apply_mount(p, root_dir, inaccessible_dir, private_dir, flags);
+ if (r < 0)
goto undo_mounts;
goto undo_mounts;
+ }
memcpy(old_root_dir, tmp_dir, sizeof(tmp_dir)-1);
if (!mkdtemp(old_root_dir)) {
memcpy(old_root_dir, tmp_dir, sizeof(tmp_dir)-1);
if (!mkdtemp(old_root_dir)) {
@@
-340,7
+350,7
@@
fail:
if (remove_tmp)
rmdir(tmp_dir);
if (remove_tmp)
rmdir(tmp_dir);
-
free(paths);
+ free(paths);
return r;
}
return r;
}