BUG/MEDIUM: url32 does not take the path part into account in the returned hash.

The url32 sample fetch does not take the path part of the URL into
account. This is because in smp_fetch_url32() we erroneously modify
path.len and path.ptr before testing their value and building the
path based part of the hash.

This fixes issue #235

This must be backported as far as 1.9, when HTX was introduced.
This commit is contained in:
Jerome Magnin 2019-08-26 11:44:21 +02:00 committed by Willy Tarreau
parent 6ee9f8df3b
commit 2dd26ca9ff

View File

@ -1786,10 +1786,6 @@ static int smp_fetch_url32(const struct arg *args, struct sample *smp, const cha
/* now retrieve the path */
sl = http_get_stline(htx);
path = http_get_path(htx_sl_req_uri(sl));
while (path.len > 0 && *(path.ptr) != '?') {
path.ptr++;
path.len--;
}
if (path.len && *(path.ptr) == '/') {
while (path.len--)
hash = *(path.ptr++) + (hash << 6) + (hash << 16) - hash;