BUG/MINOR: listener: fix off-by-one in state name check
authorWilly Tarreau <w@1wt.eu>
Wed, 11 Dec 2019 14:51:37 +0000 (15:51 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 11 Dec 2019 14:54:04 +0000 (15:54 +0100)
As reported in issue #380, the state check in listener_state_str() is
invalid as it allows state value 9 to report crap. We don't use such
a state value so the issue should never happen unless the memory is
already corrupted, but better clean this now while it's harmless.

This should be backported to all maintained branches.

(cherry picked from commit fec56c6a76463d40be3e15eee297aa8d2b67362a)
Signed-off-by: Willy Tarreau <w@1wt.eu>

include/proto/listener.h

index 2336e63..6654195 100644 (file)
@@ -173,7 +173,7 @@ static inline const char *listener_state_str(const struct listener *l)
        };
        unsigned int st = l->state;
 
-       if (st > sizeof(states) / sizeof(*states))
+       if (st >= sizeof(states) / sizeof(*states))
                return "INVALID";
        return states[st];
 }