summaryrefslogtreecommitdiff
path: root/src/basic/fs-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-07-26 17:23:28 +0200
committerSven Eden <yamakuzure@gmx.net>2017-07-05 08:50:49 +0200
commite4b8356a39a6afcc0b1439397f8c3790332def12 (patch)
treec001e2bbaa84d072e1c718eedc39a6b1db24f2b7 /src/basic/fs-util.h
parent16235f049fb67ba1756aeaab04eff1f1b5b1cf97 (diff)
util-lib: rework /tmp and /var/tmp handling code
Beef up the existing var_tmp() call, rename it to var_tmp_dir() and add a matching tmp_dir() call (the former looks for the place for /var/tmp, the latter for /tmp). Both calls check $TMPDIR, $TEMP, $TMP, following the algorithm Python3 uses. All dirs are validated before use. secure_getenv() is used in order to limite exposure in suid binaries. This also ports a couple of users over to these new APIs. The var_tmp() return parameter is changed from an allocated buffer the caller will own to a const string either pointing into environ[], or into a static const buffer. Given that environ[] is mostly considered constant (and this is exposed in the very well-known getenv() call), this should be OK behaviour and allows us to avoid memory allocations in most cases. Note that $TMPDIR and friends override both /var/tmp and /tmp usage if set.
Diffstat (limited to 'src/basic/fs-util.h')
-rw-r--r--src/basic/fs-util.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
index ab31f061e..cec36978b 100644
--- a/src/basic/fs-util.h
+++ b/src/basic/fs-util.h
@@ -73,7 +73,8 @@ int mkfifo_atomic(const char *path, mode_t mode);
int get_files_in_directory(const char *path, char ***list);
#if 0 /// UNNEEDED by elogind
-int var_tmp(char **ret);
+int tmp_dir(const char **ret);
+int var_tmp_dir(const char **ret);
#define INOTIFY_EVENT_MAX (sizeof(struct inotify_event) + NAME_MAX + 1)