[sr-dev] git:master: core: change the uid and gid for pid and pgid files

Daniel-Constantin Mierla miconda at gmail.com
Wed Oct 1 17:29:22 CEST 2014


Module: sip-router
Branch: master
Commit: c873758624da24359117b3fa158cc56ccd0a5d73
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c873758624da24359117b3fa158cc56ccd0a5d73

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date:   Wed Oct  1 17:27:49 2014 +0200

core: change the uid and gid for pid and pgid files

- use the user and group given to daemon to update ownership of pid and
  pgid files
- reported by Ovidiu Sas, FS#472

---

 daemonize.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/daemonize.c b/daemonize.c
index 93d2d14..862e109 100644
--- a/daemonize.c
+++ b/daemonize.c
@@ -272,6 +272,14 @@ int daemonize(char*  name,  int status_wait)
 	pid_t pid;
 	int r, p;
 	char pipe_status;
+	uid_t pid_uid;
+	gid_t pid_gid;
+
+	if(uid) pid_uid = uid;
+	else pid_uid = -1;
+
+	if(gid) pid_gid = gid;
+	else pid_gid = -1;
 
 	p=-1;
 	/* flush std file descriptors to avoid flushes after fork
@@ -360,6 +368,10 @@ int daemonize(char*  name,  int status_wait)
 		}else{
 			fprintf(pid_stream, "%i\n", (int)pid);
 			fclose(pid_stream);
+			if(chown(pid_file, pid_uid, pid_gid)<0) {
+				LM_ERR("failed to chwon PID file: %s\n", strerror(errno));
+				goto error;
+			}
 		}
 	}
 
@@ -384,6 +396,10 @@ int daemonize(char*  name,  int status_wait)
 			}else{
 				fprintf(pid_stream, "%i\n", (int)pid);
 				fclose(pid_stream);
+				if(chown(pid_file, pid_uid, pid_gid)<0) {
+					LM_ERR("failed to chwon PGID file: %s\n", strerror(errno));
+					goto error;
+				}
 			}
 		}else{
 			LOG(L_WARN, "we don't have our own process so we won't save"




More information about the sr-dev mailing list