2
0
Эх сурвалжийг харах

core: don't do setuid() if started by same user as -u

- closing FS#473
Daniel-Constantin Mierla 10 жил өмнө
parent
commit
241ac2813d
1 өөрчлөгдсөн 10 нэмэгдсэн , 6 устгасан
  1. 10 6
      daemonize.c

+ 10 - 6
daemonize.c

@@ -452,9 +452,11 @@ int do_suid()
 	struct passwd *pw;
 	
 	if (gid){
-		if(setgid(gid)<0){
-			LM_CRIT("cannot change gid to %d: %s\n", gid, strerror(errno));
-			goto error;
+		if(gid!=getgid()) {
+			if(setgid(gid)<0){
+				LM_CRIT("cannot change gid to %d: %s\n", gid, strerror(errno));
+				goto error;
+			}
 		}
 	}
 	
@@ -468,9 +470,11 @@ int do_suid()
 							strerror(errno));
 			goto error;
 		}
-		if(setuid(uid)<0){
-			LM_CRIT("cannot change uid to %d: %s\n", uid, strerror(errno));
-			goto error;
+		if(uid!=getuid()) {
+			if(setuid(uid)<0){
+				LM_CRIT("cannot change uid to %d: %s\n", uid, strerror(errno));
+				goto error;
+			}
 		}
 	}