xxd: allow "-" as file name meaning stdin
[oweals/busybox.git] / libbb / inet_cksum.c
index 31bf8c4d959c7cf7c1d90e529c7e9527655be899..3d5dc3adf14c40f29b2ce02f51b1abf276847ca4 100644 (file)
@@ -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 */