aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2024-11-28 16:54:48 +0000
committerEd Maste <emaste@FreeBSD.org>2024-12-01 20:29:02 +0000
commitd4dd9e22c13896e6b5e2a6fc78dad4f8496cc14d (patch)
tree998a6fd400a2ac35e07fa232653ebecaea246704
parent4294f1cac15300046369d7e464ce96363839757c (diff)
-rw-r--r--libexec/comsat/comsat.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libexec/comsat/comsat.c b/libexec/comsat/comsat.c
index 76f6190bea7b..e2aea1b709b6 100644
--- a/libexec/comsat/comsat.c
+++ b/libexec/comsat/comsat.c
@@ -212,10 +212,11 @@ jkfprintf(FILE *tp, char user[], char file[], off_t offset)
struct passwd *p;
unsigned char line[BUFSIZ];
- /* Set effective uid to user in case mail drop is on nfs */
- if ((p = getpwnam(user)) == NULL)
- return;
- if (setuid(p->pw_uid) != 0)
+ /* Set uid/gid/groups to user's in case mail drop is on nfs */
+ if ((p = getpwnam(user)) == NULL ||
+ initgroups(p->pw_name, p->pw_gid) == -1 ||
+ setgid(p->pw_gid) == -1 ||
+ setuid(p->pw_uid) == -1)
return;
if ((fi = fopen(file, "r")) == NULL)