From: Denys Vlasenko Date: Thu, 8 Sep 2011 08:59:26 +0000 (+0200) Subject: inet_cksum: big-endian fix X-Git-Tag: 1_20_0~251 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0d0260fd1e55c39525660370094d090bc5412fe5;p=oweals%2Fbusybox.git inet_cksum: big-endian fix Signed-off-by: Denys Vlasenko --- diff --git a/libbb/inet_cksum.c b/libbb/inet_cksum.c index 31bf8c4d9..3d5dc3adf 100644 --- a/libbb/inet_cksum.c +++ b/libbb/inet_cksum.c @@ -21,8 +21,12 @@ uint16_t FAST_FUNC inet_cksum(uint16_t *addr, int nleft) } /* Mop up an odd byte, if necessary */ - if (nleft) - sum += *(uint8_t*)addr; + if (nleft == 1) { + if (BB_LITTLE_ENDIAN) + sum += *(uint8_t*)addr; + else + sum += *(uint8_t*)addr << 8; + } /* Add back carry outs from top 16 bits to low 16 bits */ sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */