process-util: refactor APIs for reading /proc/self/xyz symlinks

The three functions for reading cwd, exe and root symlinks of processes
already share a common core: get_process_link_contents(). Let's refactor
that a bit, and move formatting of the /proc/self/ path into this helper
function instead of doing that in the caller, thus sharing more code.

While we are at it, make the return parameters optional, in case the
information if the links are readable is interesting, but the contents
is not. (This also means safe_getcwd() and readlinkat_malloc() are
updated to make the return parameter optional, as these are called by
the relevant three functions)
This commit is contained in:
Lennart Poettering
2022-04-01 15:22:27 +02:00
parent b8529cf376
commit aed3c5eca3
3 changed files with 22 additions and 35 deletions
+5 -5
View File
@@ -63,7 +63,7 @@ char *path_make_absolute(const char *p, const char *prefix) {
}
int safe_getcwd(char **ret) {
char *cwd;
_cleanup_free_ char *cwd = NULL;
cwd = get_current_dir_name();
if (!cwd)
@@ -71,12 +71,12 @@ int safe_getcwd(char **ret) {
/* Let's make sure the directory is really absolute, to protect us from the logic behind
* CVE-2018-1000001 */
if (cwd[0] != '/') {
free(cwd);
if (cwd[0] != '/')
return -ENOMEDIUM;
}
*ret = cwd;
if (ret)
*ret = TAKE_PTR(cwd);
return 0;
}