mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-17 17:04:35 +00:00
eec1d3869d
Alexander Lebedev reported that the DNS parser crashes in 1.6 with a bus error on Sparc when it receives a response. This is obviously caused by some alignment issues. The issue can also be reproduced on ARMv5 when setting /proc/cpu/alignment to 4 (which helps debugging). Two places cause this crash in turn, the first one is when the IP address from the packet is compared to the current one, and the second place is when the address is assigned because an unaligned address is passed to update_server_addr(). This patch modifies these places to properly use memcpy() and memcmp() to manipulate the unaligned data. Nenad Merdanovic found another set of places specific to 1.7 in functions in_net_ipv4() and in_net_ipv6(), which are used to compare networks. 1.6 has the functions but does not use them. There we perform a temporary copy to a local variable to fix the problem. The type of the function's argument is wrong since it's not necessarily aligned, so we change it for a const void * instead. This fix must be backported to 1.6. Note that in 1.6 the code is slightly different, there's no rec[] array, the pointer is used directly from the buffer. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |