Changeset 11666


Ignore:
Timestamp:
Jan 10, 2011, 1:58:13 AM (11 years ago)
Author:
jch
Message:

Fix incorrect overflow handling in the DHT's parser.

Location:
trunk/third-party/dht
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/third-party/dht/CHANGES

    r11663 r11666  
     1dht-0.18 (unreleased)
     2
     3  * Fix a bug that could cause parse_message to enter an infinite loop
     4    on overflow.
     5
    169 January 2011: dht-0.17:
    27
  • trunk/third-party/dht/dht.c

    r11663 r11666  
    28262826                if(q && *q == ':' && l > 0) {
    28272827                    CHECK(q + 1, l);
     2828                    i = q + 1 + l - (char*)buf;
    28282829                    if(l == 6) {
    28292830                        if(j + l > *values_len)
    28302831                            continue;
    2831                         i = q + 1 + l - (char*)buf;
    28322832                        memcpy((char*)values_return + j, q + 1, l);
    28332833                        j += l;
     
    28352835                        if(j6 + l > *values6_len)
    28362836                            continue;
    2837                         i = q + 1 + l - (char*)buf;
    28382837                        memcpy((char*)values6_return + j6, q + 1, l);
    28392838                        j6 += l;
    28402839                    } else {
    28412840                        debugf("Received weird value -- %d bytes.\n", (int)l);
    2842                         i = q + 1 + l - (char*)buf;
    28432841                    }
    28442842                } else {
Note: See TracChangeset for help on using the changeset viewer.