ALT Linux repositórios
Group :: Sistema/Bibliotecas
RPM: libnet2
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: libnet-1.1.2.1-up-checksum.patch
Download
Download
--- libnet/src/libnet_checksum.c
+++ libnet/src/libnet_checksum.c
@@ -1,5 +1,5 @@
/*
- * $Id: libnet_checksum.c,v 1.13 2004/03/01 20:26:12 mike Exp $
+ * $Id: libnet_checksum.c,v 1.14 2004/11/09 07:05:07 mike Exp $
*
* libnet
* libnet_checksum.c - checksum routines
@@ -38,10 +38,16 @@
#else
#include "../include/win32/libnet.h"
#endif
+
int
libnet_in_cksum(u_int16_t *addr, int len)
{
int sum;
+ union
+ {
+ u_int16_t s;
+ u_int8_t b[2];
+ }pad;
sum = 0;
@@ -50,9 +56,12 @@
sum += *addr++;
len -= 2;
}
+
if (len == 1)
{
- sum += *(u_int16_t *)addr;
+ pad.b[0] = *(u_int8_t *)addr;
+ pad.b[1] = 0;
+ sum += pad.s;
}
return (sum);