summaryrefslogtreecommitdiffstats
path: root/lib/param/loadparm.c
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-01-29 11:59:29 +1300
committerMichael Adam <obnox@samba.org>2014-01-29 09:10:54 +0100
commit58d3ad76120201356b77aaa1dfb6c9b131ad4ae4 (patch)
tree1bbb49a9b9c8d5bd32e00512bfacf37718fc49f2 /lib/param/loadparm.c
parent58865d96f187b843acea6d80f595ae9023f13708 (diff)
downloadsamba-58d3ad76120201356b77aaa1dfb6c9b131ad4ae4.tar.gz
samba-58d3ad76120201356b77aaa1dfb6c9b131ad4ae4.tar.xz
samba-58d3ad76120201356b77aaa1dfb6c9b131ad4ae4.zip
param: fix an offset bug in lpcfg_set_cmdline
Previously, it was possible to compare offsets between loadparm_service and loadparm_global. This meant in some cases incorrectly skipping certain parameters. Signed-off-by: Garming Sam <garming@catalyst.net.nz> Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'lib/param/loadparm.c')
-rw-r--r--lib/param/loadparm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index 802ac27334..63001a2336 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -1574,10 +1574,17 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
lp_ctx->flags[parmnum] |= FLAG_CMDLINE;
/* we have to also set FLAG_CMDLINE on aliases */
- for (i=parmnum-1;i>=0 && parm_table[i].offset == parm_table[parmnum].offset;i--) {
+ for (i=parmnum-1;
+ i>=0 && parm_table[i].p_class == parm_table[parmnum].p_class &&
+ parm_table[i].offset == parm_table[parmnum].offset;
+ i--) {
lp_ctx->flags[i] |= FLAG_CMDLINE;
}
- for (i=parmnum+1;i<NUMPARAMETERS && parm_table[i].offset == parm_table[parmnum].offset;i++) {
+ for (i=parmnum+1;
+ i<NUMPARAMETERS &&
+ parm_table[i].p_class == parm_table[parmnum].p_class &&
+ parm_table[i].offset == parm_table[parmnum].offset;
+ i++) {
lp_ctx->flags[i] |= FLAG_CMDLINE;
}