diff options
-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); |