diff options
author | Sam Roberts <vieuxtech@gmail.com> | 2009-02-23 13:49:37 -0800 |
---|---|---|
committer | Sam Roberts <vieuxtech@gmail.com> | 2009-02-23 13:49:37 -0800 |
commit | 73952eaea32f66e0f82f2a7ca41370dcaafcc822 (patch) | |
tree | 4e4d2be9b1e901396f5f298b627a21081feb1e74 | |
parent | 74dc69d9838ca22f7ccaaf8789ff313e504fc3e4 (diff) | |
download | libnet-73952eaea32f66e0f82f2a7ca41370dcaafcc822.tar.gz |
08-fix_libnet_checksum.c.patch from debian source package
See http://packages.debian.org/source/sid/libnet
-rw-r--r-- | libnet/src/libnet_checksum.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libnet/src/libnet_checksum.c b/libnet/src/libnet_checksum.c index 5b6f784..b99eb6d 100644 --- a/libnet/src/libnet_checksum.c +++ b/libnet/src/libnet_checksum.c @@ -42,8 +42,10 @@ int libnet_in_cksum(u_int16_t *addr, int len) { int sum; + u_int16_t last_byte; sum = 0; + last_byte = 0; while (len > 1) { @@ -52,7 +54,8 @@ libnet_in_cksum(u_int16_t *addr, int len) } if (len == 1) { - sum += *(u_int16_t *)addr; + *(u_int8_t *)&last_byte = *(u_int8_t *)addr; + sum += last_byte; } return (sum); |