git: bb9678f1ff68 - stable/14 - comsat: Use initgroups and setgid not just setuid
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 04 Dec 2024 18:38:42 UTC
The branch stable/14 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=bb9678f1ff6881b036220045adb58047332cfb0d
commit bb9678f1ff6881b036220045adb58047332cfb0d
Author: Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2024-11-28 16:54:48 +0000
Commit: Ed Maste <emaste@FreeBSD.org>
CommitDate: 2024-12-04 18:38:31 +0000
comsat: Use initgroups and setgid not just setuid
PR: 270404
Reviewed by: jlduran
Obtained from: NetBSD
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D47828
(cherry picked from commit d4dd9e22c13896e6b5e2a6fc78dad4f8496cc14d)
---
libexec/comsat/comsat.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/libexec/comsat/comsat.c b/libexec/comsat/comsat.c
index 3f94f8d56201..1a9fb443e68e 100644
--- a/libexec/comsat/comsat.c
+++ b/libexec/comsat/comsat.c
@@ -224,10 +224,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)