diff options
author | Tobias Stoeckmann <tobias@stoeckmann.org> | 2024-01-02 22:12:02 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2024-01-03 17:28:06 +0000 |
commit | 3291ddd1480942b4298dbadb8cff1d891a8bc05c (patch) | |
tree | fe55a74ca81972d202945a3146f19c655aca069b /modules/pam_sepermit/pam_sepermit.c | |
parent | e63896102fb7a0431d5590b07e9fc24ffc6813c1 (diff) | |
download | pam-3291ddd1480942b4298dbadb8cff1d891a8bc05c.tar.gz pam-3291ddd1480942b4298dbadb8cff1d891a8bc05c.tar.bz2 pam-3291ddd1480942b4298dbadb8cff1d891a8bc05c.zip |
pam_sepermit: use getline
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Diffstat (limited to 'modules/pam_sepermit/pam_sepermit.c')
-rw-r--r-- | modules/pam_sepermit/pam_sepermit.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/pam_sepermit/pam_sepermit.c b/modules/pam_sepermit/pam_sepermit.c index 7e00a77f..fca74beb 100644 --- a/modules/pam_sepermit/pam_sepermit.c +++ b/modules/pam_sepermit/pam_sepermit.c @@ -82,21 +82,27 @@ struct lockfd { static int match_process_uid(pid_t pid, uid_t uid) { - char buf[128]; + char *buf; + size_t n; uid_t puid; FILE *f; int re = 0; - snprintf (buf, sizeof buf, PROC_BASE "/%d/status", pid); - if (!(f = fopen (buf, "r"))) + if (asprintf (&buf, PROC_BASE "/%d/status", pid) < 0) return 0; + n = strlen(buf) + 1; + if (!(f = fopen (buf, "r"))) { + free(buf); + return 0; + } - while (fgets(buf, sizeof buf, f)) { + while (getline(&buf, &n, f) != -1) { if (sscanf (buf, "Uid:\t%d", &puid)) { re = uid == puid; break; } } + free(buf); fclose(f); return re; } |