[Nbd] [PATCH 3/4] nbd-server: remove global variables: runuser and rungroup
User and group names are needed only at the very beginning of the
process, there is no need to keep them hanging in the global scope.
Signed-off-by: Tuomas Jorma Juhani Räsänen <tuomasjjrasanen@...1261...>
---
nbd-server.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/nbd-server.c b/nbd-server.c
index 82490fe..a2f64ea 100644
--- a/nbd-server.c
+++ b/nbd-server.c
@@ -116,10 +116,6 @@
/** Where our config file actually is */
gchar* config_file_pos;
-/** What user we're running as */
-gchar* runuser=NULL;
-/** What group we're running as */
-gchar* rungroup=NULL;
/** global flags */
int glob_flags=0;
@@ -2621,24 +2617,24 @@ void daemonize(SERVER* serve) {
/**
* Set up user-ID and/or group-ID
**/
-void dousers(void) {
+void dousers(const gchar *const username, const gchar *const groupname) {
struct passwd *pw;
struct group *gr;
gchar* str;
- if(rungroup) {
- gr=getgrnam(rungroup);
+ if (groupname) {
+ gr = getgrnam(groupname);
if(!gr) {
- str = g_strdup_printf("Invalid group name: %s", rungroup);
+ str = g_strdup_printf("Invalid group name: %s", groupname);
err(str);
}
if(setgid(gr->gr_gid)<0) {
err("Could not set GID: %m");
}
}
- if(runuser) {
- pw=getpwnam(runuser);
+ if (username) {
+ pw = getpwnam(username);
if(!pw) {
- str = g_strdup_printf("Invalid user name: %s", runuser);
+ str = g_strdup_printf("Invalid user name: %s", username);
err(str);
}
if(setuid(pw->pw_uid)<0) {
@@ -2705,8 +2701,6 @@ int main(int argc, char *argv[]) {
/* Update global variables with parsed values. This will be
* removed once we get rid of global configuration variables. */
- runuser = genconf.user ? genconf.user : runuser;
- rungroup = genconf.group ? genconf.group : rungroup;
modern_listen = genconf.modernaddr ? genconf.modernaddr : modern_listen;
modernport = genconf.modernport ? genconf.modernport : modernport;
glob_flags |= genconf.flags;
@@ -2759,6 +2753,10 @@ int main(int argc, char *argv[]) {
if (!dontfork)
daemonize(serve);
setup_servers(servers);
- dousers();
+ dousers(genconf.user, genconf.group);
+
+ g_free(genconf.user);
+ g_free(genconf.group);
+
serveloop(servers);
}
--
1.7.10.4
Reply to: