diff options
| author | Andrew Clayton <andrew@digital-domain.net> | 2022-06-15 16:20:01 +0100 |
|---|---|---|
| committer | Andrew Clayton <andrew@digital-domain.net> | 2022-07-18 12:45:06 +0100 |
| commit | 58f78932716522bf47dbc185bd7e058dd7c2c7bb (patch) | |
| tree | 1a6b8fedf9053ac3d302f488a4487fdbc13bf1d2 | |
| parent | 1a5288a9e2bf83414d601ca5e086eedeef164da4 (diff) | |
| download | unit-58f78932716522bf47dbc185bd7e058dd7c2c7bb.tar.gz unit-58f78932716522bf47dbc185bd7e058dd7c2c7bb.tar.bz2 | |
Router: avoided undefined behaviour.
In src/nxt_http_route_addr.c::nxt_http_route_addr_pattern_parse() there
was potentially undefined behaviour when shifting a 32 bit value by 32
bits, this could happen if cidr_prefix was 0.
Promote the shiftee to unsigned long long to avoid this issue.
| -rw-r--r-- | src/nxt_http_route_addr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/nxt_http_route_addr.c b/src/nxt_http_route_addr.c index 2907a902..985fb737 100644 --- a/src/nxt_http_route_addr.c +++ b/src/nxt_http_route_addr.c @@ -233,7 +233,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp, } addr.length = delim - addr.start; - inet->end = htonl(0xFFFFFFFF & (0xFFFFFFFF << (32 - cidr_prefix))); + inet->end = htonl(0xFFFFFFFF & (0xFFFFFFFFULL << (32 - cidr_prefix))); inet->start = nxt_inet_addr(addr.start, addr.length) & inet->end; if (nxt_slow_path(inet->start == INADDR_NONE)) { |
