Commit cc7ca838 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Introduce a "replace()" function to replace a malloc'ed string.


git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@1796 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent ce79d8eb
...@@ -65,6 +65,18 @@ struct parspec { ...@@ -65,6 +65,18 @@ struct parspec {
static struct params master; static struct params master;
/* XXX: Far too generic to live here ? */
static void
replace(char **p, const char *q)
{
AN(*q);
if (*p != NULL)
free(*p);
*p = strdup(q);
AN(*p);
}
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
static void static void
...@@ -156,21 +168,14 @@ tweak_user(struct cli *cli, struct parspec *par, const char *arg) ...@@ -156,21 +168,14 @@ tweak_user(struct cli *cli, struct parspec *par, const char *arg)
cli_result(cli, CLIS_PARAM); cli_result(cli, CLIS_PARAM);
return; return;
} }
if (master.user) replace(&master.user, pw->pw_name);
free(master.user);
master.user = strdup(pw->pw_name);
AN(master.user);
master.uid = pw->pw_uid; master.uid = pw->pw_uid;
/* set group to user's primary group */ /* set group to user's primary group */
if (master.group)
free(master.group);
if ((gr = getgrgid(pw->pw_gid)) != NULL && if ((gr = getgrgid(pw->pw_gid)) != NULL &&
(gr = getgrnam(gr->gr_name)) != NULL && (gr = getgrnam(gr->gr_name)) != NULL &&
gr->gr_gid == pw->pw_gid) { gr->gr_gid == pw->pw_gid)
master.group = strdup(gr->gr_name); replace(&master.group, gr->gr_name);
AN(master.group);
}
master.gid = pw->pw_gid; master.gid = pw->pw_gid;
} else if (master.user) { } else if (master.user) {
cli_out(cli, "%s (%d)", master.user, (int)master.uid); cli_out(cli, "%s (%d)", master.user, (int)master.uid);
...@@ -193,10 +198,7 @@ tweak_group(struct cli *cli, struct parspec *par, const char *arg) ...@@ -193,10 +198,7 @@ tweak_group(struct cli *cli, struct parspec *par, const char *arg)
cli_result(cli, CLIS_PARAM); cli_result(cli, CLIS_PARAM);
return; return;
} }
if (master.group) replace(&master.group, gr->gr_name);
free(master.group);
master.group = strdup(gr->gr_name);
AN(master.group);
master.gid = gr->gr_gid; master.gid = gr->gr_gid;
} else if (master.group) { } else if (master.group) {
cli_out(cli, "%s (%d)", master.group, (int)master.gid); cli_out(cli, "%s (%d)", master.group, (int)master.gid);
...@@ -428,9 +430,7 @@ tweak_listen_address(struct cli *cli, struct parspec *par, const char *arg) ...@@ -428,9 +430,7 @@ tweak_listen_address(struct cli *cli, struct parspec *par, const char *arg)
return; return;
} }
free(master.listen_address); replace(&master.listen_address, arg);
master.listen_address = strdup(arg);
AN(master.listen_address);
clean_listen_sock_head(&heritage.socks); clean_listen_sock_head(&heritage.socks);
heritage.nsocks = 0; heritage.nsocks = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment