diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/util.c | 14 | ||||
-rw-r--r-- | src/shared/util.h | 1 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/shared/util.c b/src/shared/util.c index 20e5faf34b..59c1417b44 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1108,7 +1108,7 @@ int get_process_exe(pid_t pid, char **name) { return r; } -int get_process_uid(pid_t pid, uid_t *uid) { +static int get_process_id(pid_t pid, const char *field, uid_t *uid) { char *p; FILE *f; int r; @@ -1140,8 +1140,8 @@ int get_process_uid(pid_t pid, uid_t *uid) { l = strstrip(line); - if (startswith(l, "Uid:")) { - l += 4; + if (startswith(l, field)) { + l += strlen(field); l += strspn(l, WHITESPACE); l[strcspn(l, WHITESPACE)] = 0; @@ -1159,6 +1159,14 @@ finish: return r; } +int get_process_uid(pid_t pid, uid_t *uid) { + return get_process_id(pid, "Uid:", uid); +} + +int get_process_gid(pid_t pid, gid_t *gid) { + return get_process_id(pid, "Gid:", gid); +} + char *strnappend(const char *s, const char *suffix, size_t b) { size_t a; char *r; diff --git a/src/shared/util.h b/src/shared/util.h index 71b5c52c41..2429339f5b 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -246,6 +246,7 @@ int get_process_comm(pid_t pid, char **name); int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line); int get_process_exe(pid_t pid, char **name); int get_process_uid(pid_t pid, uid_t *uid); +int get_process_gid(pid_t pid, gid_t *gid); char hexchar(int x); int unhexchar(char c); |