mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-07 05:51:48 +00:00
BUG/MINOR: checks: tcp-check must not stop on '\0' for binary checks
Abuse of copy-paste has made "tcp-check expect binary" to consider a buffer starting with \0 as empty! Thanks to Lukas Benes for reporting this problem and confirming the fix. This is 1.5-only, no backport is needed.
This commit is contained in:
parent
4e5ed29668
commit
ec6b012bf4
@ -1975,7 +1975,6 @@ static int tcpcheck_get_step_id(struct server *s)
|
|||||||
static void tcpcheck_main(struct connection *conn)
|
static void tcpcheck_main(struct connection *conn)
|
||||||
{
|
{
|
||||||
char *contentptr;
|
char *contentptr;
|
||||||
unsigned int contentlen;
|
|
||||||
struct list *head = NULL;
|
struct list *head = NULL;
|
||||||
struct tcpcheck_rule *cur = NULL;
|
struct tcpcheck_rule *cur = NULL;
|
||||||
int done = 0, ret = 0;
|
int done = 0, ret = 0;
|
||||||
@ -2253,10 +2252,9 @@ static void tcpcheck_main(struct connection *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
contentptr = check->bi->data;
|
contentptr = check->bi->data;
|
||||||
contentlen = check->bi->i;
|
|
||||||
|
|
||||||
/* Check that response body is not empty... */
|
/* Check that response body is not empty... */
|
||||||
if (*contentptr == '\0') {
|
if (!check->bi->i) {
|
||||||
if (!done)
|
if (!done)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -2273,7 +2271,7 @@ static void tcpcheck_main(struct connection *conn)
|
|||||||
|
|
||||||
tcpcheck_expect:
|
tcpcheck_expect:
|
||||||
if (cur->string != NULL)
|
if (cur->string != NULL)
|
||||||
ret = my_memmem(contentptr, contentlen, cur->string, cur->string_len) != NULL;
|
ret = my_memmem(contentptr, check->bi->i, cur->string, cur->string_len) != NULL;
|
||||||
else if (cur->expect_regex != NULL)
|
else if (cur->expect_regex != NULL)
|
||||||
ret = regexec(cur->expect_regex, contentptr, MAX_MATCH, pmatch, 0) == 0;
|
ret = regexec(cur->expect_regex, contentptr, MAX_MATCH, pmatch, 0) == 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user