BUG/MINOR: unix: remove the 'level' field from the ux struct
Commit 290e63aa moved the unix parameters out of the global stats socket
to the bind_conf struct. As such the stats admin level was also moved
overthere, but it remained in the stats global section where it was not
used, except by a nasty memcpy() used to initialize the ux struct in the
bind_conf with too large data. Fortunately, the extra data copied were
the previous level over the new level so it did not have any impact, but
it could have been worse.
This bug is 1.5 specific, no backport is needed.
Reported-by: Dinko Korunic <dkorunic@reflected.net>
diff --git a/include/types/global.h b/include/types/global.h
index bfc1a35..133a98d 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -129,7 +129,6 @@
uid_t uid; /* -1 to leave unchanged */
gid_t gid; /* -1 to leave unchanged */
mode_t mode; /* 0 to leave unchanged */
- int level; /* access level (ACCESS_LVL_*) */
} ux;
} unix_bind;
#ifdef USE_CPU_AFFINITY
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 9491147..dd89c94 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1943,7 +1943,11 @@
}
bind_conf = bind_conf_alloc(&curproxy->conf.bind, file, linenum, args[1]);
- memcpy(&bind_conf->ux, &global.unix_bind.ux, sizeof(global.unix_bind.ux));
+
+ /* use default settings for unix sockets */
+ bind_conf->ux.uid = global.unix_bind.ux.uid;
+ bind_conf->ux.gid = global.unix_bind.ux.gid;
+ bind_conf->ux.mode = global.unix_bind.ux.mode;
/* NOTE: the following line might create several listeners if there
* are comma-separated IPs or port ranges. So all further processing