Author: minfrin Date: Tue Oct 25 21:24:04 2011 New Revision: 1188926 URL: http://svn.apache.org/viewvc?rev=1188926&view=rev Log: Backport from apr-util-1.5 to apr-util-1.4: apr_crypto: Support NULL values for the params field. Modified: apr/apr-util/branches/1.4.x/crypto/apr_crypto_nss.c apr/apr-util/branches/1.4.x/crypto/apr_crypto_openssl.c Modified: apr/apr-util/branches/1.4.x/crypto/apr_crypto_nss.c URL: http://svn.apache.org/viewvc/apr/apr-util/branches/1.4.x/crypto/apr_crypto_nss.c?rev=1188926&r1=1188925&r2=1188926&view=diff ============================================================================== --- apr/apr-util/branches/1.4.x/crypto/apr_crypto_nss.c (original) +++ apr/apr-util/branches/1.4.x/crypto/apr_crypto_nss.c Tue Oct 25 21:24:04 2011 @@ -150,37 +150,41 @@ static apr_status_t crypto_init(apr_pool int i = 0, j; apr_status_t status; - if (APR_SUCCESS != (status = apr_tokenize_to_argv(params, &elts, pool))) { - return status; - } - while ((elt = elts[i])) { - ptr = strchr(elt, '='); - if (ptr) { - for (klen = ptr - elt; klen && apr_isspace(elt[klen - 1]); --klen); - ptr++; - } - else { - for (klen = strlen(elt); klen && apr_isspace(elt[klen - 1]); --klen); - } - elt[klen] = 0; + if (params) { + if (APR_SUCCESS != (status = apr_tokenize_to_argv(params, &elts, pool))) { + return status; + } + while ((elt = elts[i])) { + ptr = strchr(elt, '='); + if (ptr) { + for (klen = ptr - elt; klen && apr_isspace(elt[klen - 1]); --klen) + ; + ptr++; + } + else { + for (klen = strlen(elt); klen && apr_isspace(elt[klen - 1]); --klen) + ; + } + elt[klen] = 0; - for (j = 0; fields[j].field != NULL; ++j) { - if (klen && !strcasecmp(fields[j].field, elt)) { - fields[j].set = 1; - if (ptr) { - fields[j].value = ptr; + for (j = 0; fields[j].field != NULL; ++j) { + if (klen && !strcasecmp(fields[j].field, elt)) { + fields[j].set = 1; + if (ptr) { + fields[j].value = ptr; + } + break; } - break; } - } - i++; + i++; + } + dir = fields[0].value; + keyPrefix = fields[1].value; + certPrefix = fields[2].value; + secmod = fields[3].value; + noinit = fields[4].set; } - dir = fields[0].value; - keyPrefix = fields[1].value; - certPrefix = fields[2].value; - secmod = fields[3].value; - noinit = fields[4].set; /* if we've been asked to bypass, do so here */ if (noinit) { Modified: apr/apr-util/branches/1.4.x/crypto/apr_crypto_openssl.c URL: http://svn.apache.org/viewvc/apr/apr-util/branches/1.4.x/crypto/apr_crypto_openssl.c?rev=1188926&r1=1188925&r2=1188926&view=diff ============================================================================== --- apr/apr-util/branches/1.4.x/crypto/apr_crypto_openssl.c (original) +++ apr/apr-util/branches/1.4.x/crypto/apr_crypto_openssl.c Tue Oct 25 21:24:04 2011 @@ -191,7 +191,7 @@ static apr_status_t crypto_make(apr_cryp apr_crypto_config_t *config = NULL; apr_crypto_t *f = apr_pcalloc(pool, sizeof(apr_crypto_t)); - const char *engine; + const char *engine = NULL; struct { const char *field; @@ -208,33 +208,37 @@ static apr_status_t crypto_make(apr_cryp int i = 0, j; apr_status_t status; - if (APR_SUCCESS != (status = apr_tokenize_to_argv(params, &elts, pool))) { - return status; - } - while ((elt = elts[i])) { - ptr = strchr(elt, '='); - if (ptr) { - for (klen = ptr - elt; klen && apr_isspace(elt[klen - 1]); --klen); - ptr++; - } - else { - for (klen = strlen(elt); klen && apr_isspace(elt[klen - 1]); --klen); - } - elt[klen] = 0; + if (params) { + if (APR_SUCCESS != (status = apr_tokenize_to_argv(params, &elts, pool))) { + return status; + } + while ((elt = elts[i])) { + ptr = strchr(elt, '='); + if (ptr) { + for (klen = ptr - elt; klen && apr_isspace(elt[klen - 1]); --klen) + ; + ptr++; + } + else { + for (klen = strlen(elt); klen && apr_isspace(elt[klen - 1]); --klen) + ; + } + elt[klen] = 0; - for (j = 0; fields[j].field != NULL; ++j) { - if (!strcasecmp(fields[j].field, elt)) { - fields[j].set = 1; - if (ptr) { - fields[j].value = ptr; + for (j = 0; fields[j].field != NULL; ++j) { + if (!strcasecmp(fields[j].field, elt)) { + fields[j].set = 1; + if (ptr) { + fields[j].value = ptr; + } + break; } - break; } - } - i++; + i++; + } + engine = fields[0].value; } - engine = fields[0].value; if (!f) { return APR_ENOMEM;