From 4913edbfe9bb94429fa7f84f81a18e897f85e228 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 29 Jan 2014 10:19:37 +0100 Subject: [PATCH] loadparm: fix offset-bug in set_variable (mixing locals and globals) Without this change, it was possible to compare offsets between loadparm_service and loadparm_global. This meant in some cases some parameters were incorrectly flagged as non-default. Signed-off-by: Michael Adam --- lib/param/loadparm.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index cf7af34..54f4d75 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -1417,10 +1417,20 @@ mark_non_default: if (on_globals && (lp_ctx->flags[parmnum] & FLAG_DEFAULT)) { lp_ctx->flags[parmnum] &= ~FLAG_DEFAULT; /* we have to also unset FLAG_DEFAULT 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_DEFAULT; } - for (i=parmnum+1;iflags[i] &= ~FLAG_DEFAULT; } } -- 1.8.3.2