Ignore:
Timestamp:
May 15, 2019 9:41:52 AM (5 years ago)
Author:
nanang
Message:

Re #2179: Wipe out memory used for storing SSL keys in PJSIP TLS transport and pjsua app. Thanks Peter Koletzki for the feedback.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip/sip_transport_tls.c

    r5991 r5994  
    673673    if (listener->factory.pool) { 
    674674        PJ_LOG(4,(listener->factory.obj_name,  "SIP TLS transport destroyed")); 
    675         pj_pool_safe_release(&listener->factory.pool); 
     675        pj_pool_secure_release(&listener->factory.pool); 
    676676    } 
    677677} 
     
    971971 
    972972    if (tls->rdata.tp_info.pool) { 
    973         pj_pool_release(tls->rdata.tp_info.pool); 
    974         tls->rdata.tp_info.pool = NULL; 
     973        pj_pool_secure_release(&tls->rdata.tp_info.pool); 
    975974    } 
    976975 
     
    986985 
    987986    if (tls->base.pool) { 
    988         pj_pool_t *pool; 
    989  
    990987        if (tls->close_reason != PJ_SUCCESS) { 
    991988            char errmsg[PJ_ERR_MSG_SIZE]; 
     
    1002999 
    10031000        } 
    1004  
    1005         pool = tls->base.pool; 
    1006         tls->base.pool = NULL; 
    1007         pj_pool_release(pool); 
     1001        pj_pool_secure_release(&tls->base.pool); 
    10081002    } 
    10091003} 
     
    20302024} 
    20312025 
     2026 
     2027static void wipe_buf(pj_str_t *buf) 
     2028{ 
     2029    volatile char *p = buf->ptr; 
     2030    pj_ssize_t len = buf->slen; 
     2031    while (len--) *p++ = 0; 
     2032    buf->slen = 0; 
     2033} 
     2034 
     2035/* 
     2036 * Wipe out certificates and keys in the TLS setting buffer. 
     2037 */ 
     2038PJ_DEF(void) pjsip_tls_setting_wipe_keys(pjsip_tls_setting *opt) 
     2039{ 
     2040    wipe_buf(&opt->ca_list_file); 
     2041    wipe_buf(&opt->ca_list_path); 
     2042    wipe_buf(&opt->cert_file); 
     2043    wipe_buf(&opt->privkey_file); 
     2044    wipe_buf(&opt->password); 
     2045    wipe_buf(&opt->sigalgs); 
     2046    wipe_buf(&opt->entropy_path); 
     2047    wipe_buf(&opt->ca_buf); 
     2048    wipe_buf(&opt->cert_buf); 
     2049    wipe_buf(&opt->privkey_buf);     
     2050} 
     2051 
    20322052#endif /* PJSIP_HAS_TLS_TRANSPORT */ 
Note: See TracChangeset for help on using the changeset viewer.