CLEANUP: stats: Avoid computation with uninitialized bits.
authorAndreas Seltenreich <andreas.seltenreich@credativ.de>
Thu, 3 Mar 2016 18:32:25 +0000 (19:32 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 8 Mar 2016 11:55:06 +0000 (12:55 +0100)
stats_map_lookup() sets bit SMP_F_CONST in the uninitialized member
flags of a stack-allocated sample, leaving the other bits
uninitialized.  All code paths that can access the struct only ever
check for this specific flag, so there is no risk of unintended
behavior.

Nevertheless fix it as it triggers warnings in static code analysis
tools and might become a problem on future revisions of the code.

Problem found in version 1.5.

src/dumpstats.c

index 0ffbd5a..fd35fe3 100644 (file)
@@ -5858,7 +5858,7 @@ static int stats_map_lookup(struct stream_interface *si)
 
                        /* execute pattern matching */
                        sample.data.type = SMP_T_STR;
-                       sample.flags |= SMP_F_CONST;
+                       sample.flags = SMP_F_CONST;
                        sample.data.u.str.len = appctx->ctx.map.chunk.len;
                        sample.data.u.str.str = appctx->ctx.map.chunk.str;
                        if (appctx->ctx.map.expr->pat_head->match &&