Hi,

I think we have a bug in packet_utils.checksum, please check it:
=============================
def checksum(data, start, skip_word = 0):

    if len(data) % 2 != 0:
        arr = array.array('H', data[:-1])
    else:
        arr = array.array('H', data)

    if skip_word:
        for i in range(0, len(arr)):
            if i == skip_word:
                continue
            start +=  arr[i]
    else:        
       for i in range(0,len(arr)): # BUG?   
            start +=  arr[i]        # BUG? 
       # IT should be :
       # for i in range(0, len(arr)-1,2):
       # start +=  arr[i]*0x100 +arr[i+1]

    if len(data) % 2 != 0:
        start += struct.unpack('H', data[-1]+'\0')[0]

    start  = (start >> 16) + (start & 0xffff)
    start += (start >> 16);

    return ntohs(~start & 0xffff)
===============================

Thanks,

Ibrahim


                                                                                
  
_______________________________________________
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev

Reply via email to