Changeset 861 in openpam


Ignore:
Timestamp:
Mar 19, 2015, 12:42:58 AM (6 years ago)
Author:
Dag-Erling Smørgrav
Message:

Fully fix the input overflow bug and add a test case for it.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/liboath/oath_uri_decode.c

    r858 r861  
    6464                                out[opos] = unhex(in[ipos + 1]) * 16 +
    6565                                    unhex(in[ipos + 2]);
    66                         ilen += 2;
    6766                        ipos += 2;
    6867                } else {
  • trunk/t/t_rfc3986.c

    r857 r861  
    5555
    5656/* basic encoding / decoding */
    57 #define T_ENCODE4(d, i, il, o, ol)                                      \
     57#define T_ENCODE6(d, i, il, o, ol)                                      \
    5858        { .func = oath_uri_encode, .desc = d,                           \
    5959          .in = i, .ilen = il, .out = o, .olen = ol }
     60#define T_ENCODE5(d, i, il, o, ol)                                      \
     61        T_ENCODE6(d, i, il, o, ol)
     62#define T_ENCODE4(d, i, il, o)                                          \
     63        T_ENCODE5(d, i, il, o, sizeof o)
    6064#define T_ENCODE(d, i, o)                                               \
    61         T_ENCODE4(d, i, sizeof(i) - 1, o, sizeof(o))
    62 #define T_DECODE4(d, i, il, o, ol)                                      \
     65        T_ENCODE4(d, i, sizeof i - 1, o)
     66
     67#define T_DECODE6(d, i, il, o, ol)                                      \
    6368        { .func = oath_uri_decode, .desc = d,                           \
    6469          .in = i, .ilen = il, .out = o, .olen = ol }
     70#define T_DECODE5(d, i, il, o, ol)                                      \
     71        T_DECODE6(d, i, il, o, ol)
     72#define T_DECODE4(d, i, il, o)                                          \
     73        T_DECODE5(d, i, il, o, sizeof o)
    6574#define T_DECODE(d, i, o)                                               \
    66         T_DECODE4(d, i, sizeof(i) - 1, o, sizeof(o))
     75        T_DECODE4(d, i, sizeof i - 1, o)
     76
    6777#define T_ENCDEC(d, i, o)                                               \
    6878        T_ENCODE(d " enc", i, o), T_DECODE(d " dec", o, i)
     
    7787        T_DECODE("suffix",              "%20x",         " x"),
    7888        T_DECODE("surrounded",          "x%20x",        "x x"),
     89
     90        /* input overflow */
     91        T_DECODE4("short",              "%20xy", 4,     " x"),
    7992
    8093        /* partials */
Note: See TracChangeset for help on using the changeset viewer.