#include <sys/wait.h>
#include <libgen.h>
#include <signal.h>
+#include <stdlib.h>
#define ENSC_WRAPPERS_FCNTL 1
#define ENSC_WRAPPERS_UNISTD 1
return false;
if (canHandleInternal(mnt)) {
- unsigned long flag = mnt->flag;
- if (!(flag & MS_NODEV)) flag |= MS_NODEV;
-
if (mount(mnt->src, ".",
mnt->type ? mnt->type : "",
- flag, mnt->data)==-1) {
+ mnt->flag, mnt->data)==-1) {
perror("secure-mount: mount()");
return false;
}
transformOptionList(struct MountInfo *info, size_t UNUSED *col)
{
char const * ptr = info->data;
+ char * data = malloc(strlen(info->data));
+ char * dst = data;
do {
char const * pos = strchr(ptr, ',');
info->mask |= opt->mask;
info->xflag |= opt->xflag;
}
+ else {
+ if (dst != data)
+ *(dst++) = ',';
+ strncpy(dst, ptr, pos-ptr);
+ dst += pos - ptr;
+ *dst = '\0';
+ }
if (*pos!='\0')
ptr = pos+1;
} while (*ptr!='\0');
+ info->data = data;
return true;
}
.src = 0,
.dst = 0,
.type = 0,
- .flag = 0,
+ .flag = MS_NODEV,
.xflag = 0,
.data = 0,
};