Ignore:
Timestamp:
Oct 8, 2013 9:08:13 AM (11 years ago)
Author:
bennylp
Message:

Re #1703: fixing general bugs. First installment: correct handling of snprintf return value

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib-util/src/pjlib-util/http_client.c

    r4537 r4613  
    13591359    if (chal->qop.slen == 0) { 
    13601360        const pj_str_t STR_MD5 = { "MD5", 3 }; 
     1361        int max_len; 
    13611362 
    13621363        /* Server doesn't require quality of protection. */ 
     
    13661367                                    &hreq->param.method); 
    13671368 
     1369        max_len = len; 
    13681370        len = pj_ansi_snprintf( 
    1369                 phdr->value.ptr, len, 
     1371                phdr->value.ptr, max_len, 
    13701372                "Digest username=\"%.*s\", " 
    13711373                "realm=\"%.*s\", " 
     
    13801382                STR_PREC(STR_MD5), 
    13811383                STR_PREC(digest_response)); 
    1382         if (len < 0) 
     1384        if (len < 0 || len >= max_len) 
    13831385            return PJ_ETOOSMALL; 
    13841386        phdr->value.slen = len; 
     
    13921394        const pj_str_t nc = pj_str("00000001"); 
    13931395        const pj_str_t cnonce = pj_str("b39971"); 
     1396        int max_len; 
    13941397 
    13951398        auth_create_digest_response(&digest_response, cred, 
     
    13971400                                    &hreq->hurl.path, &chal->realm, 
    13981401                                    &hreq->param.method); 
     1402        max_len = len; 
    13991403        len = pj_ansi_snprintf( 
    1400                 phdr->value.ptr, len, 
     1404                phdr->value.ptr, max_len, 
    14011405                "Digest username=\"%.*s\", " 
    14021406                "realm=\"%.*s\", " 
     
    14171421                STR_PREC(nc), 
    14181422                STR_PREC(cnonce)); 
    1419         if (len < 0) 
     1423        if (len < 0 || len >= max_len) 
    14201424            return PJ_ETOOSMALL; 
    14211425        phdr->value.slen = len; 
Note: See TracChangeset for help on using the changeset viewer.