OpenBSD: Only unveil used directories
dataMkdir() already picked the appropiate directory so make it return that such that unveilData() can go as only that one directory needs unveiling.weechat-hashes
parent
e2bebca7dc
commit
3a38e36717
15
chat.c
15
chat.c
|
@ -127,16 +127,6 @@ static void parseHash(char *str) {
|
||||||
if (*str) hashBound = strtoul(&str[1], NULL, 0);
|
if (*str) hashBound = strtoul(&str[1], NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
|
||||||
static void unveilData(const char *name) {
|
|
||||||
const char *dirs = NULL;
|
|
||||||
for (const char *path; NULL != (path = dataPath(&dirs, name));) {
|
|
||||||
int error = unveil(path, "wc");
|
|
||||||
if (error && errno != ENOENT) err(EX_CANTCREAT, "%s", path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static volatile sig_atomic_t signals[NSIG];
|
static volatile sig_atomic_t signals[NSIG];
|
||||||
static void signalHandler(int signal) {
|
static void signalHandler(int signal) {
|
||||||
signals[signal] = 1;
|
signals[signal] = 1;
|
||||||
|
@ -287,8 +277,9 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
#ifdef __OpenBSD__
|
#ifdef __OpenBSD__
|
||||||
if (self.restricted && logEnable) {
|
if (self.restricted && logEnable) {
|
||||||
dataMkdir("");
|
const char *logdir = dataMkdir("");
|
||||||
unveilData("");
|
int error = unveil(logdir, "wc");
|
||||||
|
if (error) err(EX_OSERR, "unveil");
|
||||||
}
|
}
|
||||||
|
|
||||||
char promises[64] = "stdio tty";
|
char promises[64] = "stdio tty";
|
||||||
|
|
2
chat.h
2
chat.h
|
@ -403,7 +403,7 @@ const char *configPath(const char **dirs, const char *path);
|
||||||
const char *dataPath(const char **dirs, const char *path);
|
const char *dataPath(const char **dirs, const char *path);
|
||||||
FILE *configOpen(const char *path, const char *mode);
|
FILE *configOpen(const char *path, const char *mode);
|
||||||
FILE *dataOpen(const char *path, const char *mode);
|
FILE *dataOpen(const char *path, const char *mode);
|
||||||
void dataMkdir(const char *path);
|
const char *dataMkdir(const char *path);
|
||||||
|
|
||||||
int getopt_config(
|
int getopt_config(
|
||||||
int argc, char *const *argv,
|
int argc, char *const *argv,
|
||||||
|
|
3
xdg.c
3
xdg.c
|
@ -114,11 +114,12 @@ FILE *configOpen(const char *path, const char *mode) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dataMkdir(const char *path) {
|
const char *dataMkdir(const char *path) {
|
||||||
const char *dirs = NULL;
|
const char *dirs = NULL;
|
||||||
path = dataPath(&dirs, path);
|
path = dataPath(&dirs, path);
|
||||||
int error = mkdir(path, S_IRWXU);
|
int error = mkdir(path, S_IRWXU);
|
||||||
if (error && errno != EEXIST) err(EX_CANTCREAT, "%s", path);
|
if (error && errno != EEXIST) err(EX_CANTCREAT, "%s", path);
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *dataOpen(const char *path, const char *mode) {
|
FILE *dataOpen(const char *path, const char *mode) {
|
||||||
|
|
Loading…
Reference in New Issue