[BUG] proto_tcp: potential bug on pattern fetch dst and dport

Pattern fetches relying on destination address must first fetch
the address if it has not been done yet.

(cherry picked from commit 21abf441feb318b2ccd7df590fd89e9e824627f6)
This commit is contained in:
emeric 2010-10-22 17:06:26 +02:00 committed by Willy Tarreau
parent 7cb62f8877
commit 8aa6b3762c

View File

@ -1054,6 +1054,9 @@ static int
pattern_fetch_dst(struct proxy *px, struct session *l4, void *l7, int dir,
const char *arg, int arg_len, union pattern_data *data)
{
if (!(l4->flags & SN_FRT_ADDR_SET))
get_frt_addr(l4);
data->ip.s_addr = ((struct sockaddr_in *)&l4->frt_addr)->sin_addr.s_addr;
return 1;
}
@ -1079,6 +1082,9 @@ pattern_fetch_dport(struct proxy *px, struct session *l4, void *l7, int dir,
const char *arg, int arg_len, union pattern_data *data)
{
if (!(l4->flags & SN_FRT_ADDR_SET))
get_frt_addr(l4);
data->integer = ntohs(((struct sockaddr_in *)&l4->frt_addr)->sin_port);
return 1;
}