qemu-e2k/slirp
Aurelien Jarno 8aaf42ed0f slirp: fix unaligned access in bootp code
Slirp code tries to be smart an avoid data copy by using pointer to
the data. This solution leads to unaligned access, in this case
preq_addr, which is a 32-bit long structure. There is no real point
of avoiding data copy in a such case, as the value itself is smaller
or the same size as a pointer.

The patch replaces pointers to the preq_addr structure by the strcture
itself, and use the address 0.0.0.0 if no address has been requested
(this is not a valid address in such a request). It compares it with
htonl(0L) for correctness reasons, in case a code checker look for such
mistakes. It also uses memcpy() for copying the data, which takes care
of alignement issues.

This fixes an unaligned access on IA64 host while requesting a DHCP
address.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2011-01-10 10:56:25 +01:00
..
COPYRIGHT Remove the advertising clause from the slirp license 2009-01-26 19:37:41 +00:00
bootp.c slirp: fix unaligned access in bootp code 2011-01-10 10:56:25 +01:00
bootp.h slirp: Factor out internal state structure 2009-06-29 08:52:49 -05:00
cksum.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
debug.h slirp: Cleanup and basic reanimation of debug code 2009-06-29 08:52:46 -05:00
if.c slirp: Use internal state in interface 2009-06-29 08:52:49 -05:00
if.h slirp: Factor out internal state structure 2009-06-29 08:52:49 -05:00
ip.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
ip_icmp.c slirp: Read host DNS config on demand 2009-08-27 20:46:58 -05:00
ip_icmp.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
ip_input.c Accept packets with TTL=1 2010-09-17 12:46:27 +02:00
ip_output.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
libslirp.h slirp: Read host DNS config on demand 2009-08-27 20:46:58 -05:00
main.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
mbuf.c slirp: fix use-after-free 2009-11-21 00:34:04 +01:00
mbuf.h Fix breakage by obsolete _P() for good 2009-07-01 19:11:17 +00:00
misc.c slirp: Remove unused code for bad sprintf 2010-11-21 09:16:57 -06:00
misc.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
sbuf.c slirp: Drop dead code 2009-06-29 08:52:46 -05:00
sbuf.h Fix breakage by obsolete _P() for good 2009-07-01 19:11:17 +00:00
slirp.c Make ARP replies at least 64 bytes long 2010-09-17 12:46:27 +02:00
slirp.h slirp: Remove unused code for bad sprintf 2010-11-21 09:16:57 -06:00
slirp_config.h slirp: Remove unused code for bad sprintf 2010-11-21 09:16:57 -06:00
socket.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
socket.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp_input.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp_output.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp_subr.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcp_timer.c More NULL pointer fixes 2009-08-01 10:13:20 +00:00
tcp_timer.h Fix breakage by obsolete _P() for good 2009-07-01 19:11:17 +00:00
tcp_var.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tcpip.h Remove the advertising clause from the slirp license 2009-01-26 19:37:41 +00:00
tftp.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
tftp.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
udp.c slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00
udp.h slirp: Replace u_int8_t, u_int16_t, u_int32_t, u_int64_t by standard int types 2010-07-25 16:59:41 +02:00