]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
add forgotten setgid
authorBaptiste Daroussin <bapt@FreeBSD.org>
Fri, 27 Mar 2026 06:50:08 +0000 (07:50 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Fri, 27 Mar 2026 06:50:08 +0000 (07:50 +0100)
src/mlmmj-sub.c
src/mlmmj-unsub.c

index a72c123e0b4d8d7744cc1238a9db4f933e217be1..587e3587c553f1cd7a361774d3c1a19ec31bbeca 100644 (file)
@@ -188,13 +188,13 @@ int main(int argc, char **argv)
        if(changeuid) {
                uid = getuid();
                if(!uid && fstat(ml.fd, &st) == 0 && uid != st.st_uid) {
-                       printf("Changing to uid %d, owner of %s.\n",
-                                       (int)st.st_uid, ml.dir);
-                       if(setuid(st.st_uid) < 0) {
-                               perror("setuid");
-                               fprintf(stderr, "Continuing as uid %d\n",
-                                   (int)uid);
-                       }
+                       printf("Changing to uid %d gid %d, owner of %s.\n",
+                                       (int)st.st_uid, (int)st.st_gid,
+                                       ml.dir);
+                       if(setgid(st.st_gid) < 0)
+                               err(EXIT_FAILURE, "setgid");
+                       if(setuid(st.st_uid) < 0)
+                               err(EXIT_FAILURE, "setuid");
                }
        }
 
index 20f8784e20f4c8740957c7cdab0cbd94cfca7972..9de3563a4b25bcefd51de6ca02eabca5c51b1ebc 100644 (file)
@@ -166,13 +166,13 @@ int main(int argc, char **argv)
        if(changeuid) {
                uid = getuid();
                if(!uid && fstat(ml.fd, &st) == 0 && uid != st.st_uid) {
-                       printf("Changing to uid %d, owner of %s.\n",
-                                       (int)st.st_uid, ml.dir);
-                       if(setuid(st.st_uid) < 0) {
-                               perror("setuid");
-                               fprintf(stderr, "Continuing as uid %d\n",
-                                               (int)uid);
-                       }
+                       printf("Changing to uid %d gid %d, owner of %s.\n",
+                                       (int)st.st_uid, (int)st.st_gid,
+                                       ml.dir);
+                       if(setgid(st.st_gid) < 0)
+                               err(EXIT_FAILURE, "setgid");
+                       if(setuid(st.st_uid) < 0)
+                               err(EXIT_FAILURE, "setuid");
                }
        }
        if (do_unsubscribe(&ml, address, typesub, reasonsub, inform_not_subscribed,