Module: sip-router Branch: kamailio_3.0 Commit: 32361f710b1d66723a22c10bee0bb6088867c681 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=32361f710b1d66723a22c10bee0bb6088867c681
Author: Andrei Pelinescu-Onciul <[email protected]> Committer: Andrei Pelinescu-Onciul <[email protected]> Date: Tue Sep 7 16:57:33 2010 +0200 tls: fix wrong string variable length overwrite Some per-domain config string variables (cert_file, ca_file, pkey_file & cipher_list) had their length truncated to that of the corresponding variable in the parent domain. Mostly invisible since the string length was in general ignored (asciiz strings). (cherry picked from commit e63610186803cfcc0ff14d8871df8ae70df83103) --- modules/tls/tls_domain.c | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) diff --git a/modules/tls/tls_domain.c b/modules/tls/tls_domain.c index 628b3e2..80dd614 100644 --- a/modules/tls/tls_domain.c +++ b/modules/tls/tls_domain.c @@ -167,7 +167,7 @@ char* tls_domain_str(tls_domain_t* d) /* * Initialize parameters that have not been configured from - * parent domain (usualy one of default domains + * parent domain (usually one of default domains */ static int fill_missing(tls_domain_t* d, tls_domain_t* parent) { @@ -179,27 +179,36 @@ static int fill_missing(tls_domain_t* d, tls_domain_t* parent) return -1; } - if (!d->cert_file.s && - shm_asciiz_dup(&d->cert_file.s, parent->cert_file.s) < 0) return -1; - d->cert_file.len = parent->cert_file.len; + if (!d->cert_file.s) { + if (shm_asciiz_dup(&d->cert_file.s, parent->cert_file.s) < 0) + return -1; + d->cert_file.len = parent->cert_file.len; + } LOG(L_INFO, "%s: certificate='%s'\n", tls_domain_str(d), d->cert_file.s); - if (!d->ca_file.s && - shm_asciiz_dup(&d->ca_file.s, parent->ca_file.s) < 0) return -1; - d->ca_file.len = parent->ca_file.len; + if (!d->ca_file.s){ + if (shm_asciiz_dup(&d->ca_file.s, parent->ca_file.s) < 0) + return -1; + d->ca_file.len = parent->ca_file.len; + } LOG(L_INFO, "%s: ca_list='%s'\n", tls_domain_str(d), d->ca_file.s); if (d->require_cert == -1) d->require_cert = parent->require_cert; - LOG(L_INFO, "%s: require_certificate=%d\n", tls_domain_str(d), d->require_cert); + LOG(L_INFO, "%s: require_certificate=%d\n", tls_domain_str(d), + d->require_cert); - if (!d->cipher_list.s && - shm_asciiz_dup(&d->cipher_list.s, parent->cipher_list.s) < 0) return -1; - d->cipher_list.len = parent->cipher_list.len; + if (!d->cipher_list.s) { + if ( shm_asciiz_dup(&d->cipher_list.s, parent->cipher_list.s) < 0) + return -1; + d->cipher_list.len = parent->cipher_list.len; + } LOG(L_INFO, "%s: cipher_list='%s'\n", tls_domain_str(d), d->cipher_list.s); - if (!d->pkey_file.s && - shm_asciiz_dup(&d->pkey_file.s, parent->pkey_file.s) < 0) return -1; - d->pkey_file.len = parent->pkey_file.len; + if (!d->pkey_file.s) { + if (shm_asciiz_dup(&d->pkey_file.s, parent->pkey_file.s) < 0) + return -1; + d->pkey_file.len = parent->pkey_file.len; + } LOG(L_INFO, "%s: private_key='%s'\n", tls_domain_str(d), d->pkey_file.s); if (d->verify_cert == -1) d->verify_cert = parent->verify_cert; _______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
