summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nss_engine_vars.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/nss_engine_vars.c b/nss_engine_vars.c
index 15fc9b4..0a4dd14 100644
--- a/nss_engine_vars.c
+++ b/nss_engine_vars.c
@@ -578,19 +578,14 @@ static char *nss_var_lookup_nss_cert_PEM(apr_pool_t *p, CERTCertificate *xs)
* similar to mod_ssl. */
i=0;
len = strlen(tmp);
- while (tmp[i] != '\0') {
+ for (i=0; i < len; i++) {
if (tmp[i] == '\r') {
- memmove(&tmp[i], &tmp[i+1], 1+(len - i));
+ memmove(&tmp[i], &tmp[i+1], 1+(len - i - 1));
}
i++;
}
- /* Allocate the size of the cert + header + footer + 1 */
- result = apr_palloc(p, strlen(tmp) + 29 + 27 + 1);
- strcpy(result, CERT_HEADER);
- strcat(result, tmp);
- strcat(result, CERT_TRAILER);
- result[strlen(tmp) + 29 + 27] = '\0';
+ result = apr_pstrcat(p, CERT_HEADER, tmp, CERT_TRAILER, NULL);
/* Clean up memory. */
PR_Free(tmp);