aboutsummaryrefslogtreecommitdiff
path: root/modules/pam_sepermit
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@stoeckmann.org>2024-01-02 22:12:02 +0100
committerDmitry V. Levin <ldv@strace.io>2024-01-03 17:28:06 +0000
commit3291ddd1480942b4298dbadb8cff1d891a8bc05c (patch)
treefe55a74ca81972d202945a3146f19c655aca069b /modules/pam_sepermit
parente63896102fb7a0431d5590b07e9fc24ffc6813c1 (diff)
downloadpam-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')
-rw-r--r--modules/pam_sepermit/pam_sepermit.c14
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;
}