summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremaldona%redhat.com <devnull@localhost>2010-06-18 04:09:27 +0000
committeremaldona%redhat.com <devnull@localhost>2010-06-18 04:09:27 +0000
commit1112b6259773a2d8bed1079d2ff1bd61d5cd1a25 (patch)
tree571a3fc884bc652a7c9536d776a57e674bc6f2f3
parent110bea725c18c7de3c97538172c0ef80240a5613 (diff)
downloadnss-hg-1112b6259773a2d8bed1079d2ff1bd61d5cd1a25.tar.gz
Bug 571251: Ensure that when sftk_parseParameters calls PORT_Free(tmp) the pointers have been initialized, r=rrelyea
-rw-r--r--security/nss/lib/softoken/sftkpars.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/security/nss/lib/softoken/sftkpars.c b/security/nss/lib/softoken/sftkpars.c
index aefd69639..c9df469dd 100644
--- a/security/nss/lib/softoken/sftkpars.c
+++ b/security/nss/lib/softoken/sftkpars.c
@@ -52,6 +52,8 @@
#define SFTK_HANDLE_STRING_ARG(param,target,value,command) \
if (PORT_Strncasecmp(param,value,sizeof(value)-1) == 0) { \
param += sizeof(value)-1; \
+ if (target) \
+ PORT_Free(target); \
target = sftk_argFetchValue(param,&next); \
param += next; \
command ;\
@@ -338,7 +340,7 @@ static CK_RV
sftk_parseTokenParameters(char *param, sftk_token_parameters *parsed)
{
int next;
- char *tmp;
+ char *tmp = NULL;
char *index;
index = sftk_argStrip(param);
@@ -355,9 +357,9 @@ sftk_parseTokenParameters(char *param, sftk_token_parameters *parsed)
"updateTokenDescription=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->slotdes,"slotDescription=",;)
SFTK_HANDLE_STRING_ARG(index,tmp,"minPWLen=",
- if(tmp) { parsed->minPW=atoi(tmp); PORT_Free(tmp); })
+ if(tmp) { parsed->minPW=atoi(tmp); PORT_Free(tmp); tmp = NULL; })
SFTK_HANDLE_STRING_ARG(index,tmp,"flags=",
- if(tmp) { sftk_parseTokenFlags(param,parsed); PORT_Free(tmp); })
+ if(tmp) { sftk_parseTokenFlags(param,parsed); PORT_Free(tmp); tmp = NULL; })
SFTK_HANDLE_FINAL_ARG(index)
}
return CKR_OK;
@@ -413,7 +415,7 @@ CK_RV
sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
{
int next;
- char *tmp;
+ char *tmp = NULL;
char *index;
char *certPrefix = NULL, *keyPrefix = NULL;
char *tokdes = NULL, *ptokdes = NULL, *pupdtokdes = NULL;
@@ -444,9 +446,9 @@ sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
SFTK_HANDLE_STRING_ARG(index,minPW,"minPWLen=",;)
SFTK_HANDLE_STRING_ARG(index,tmp,"flags=",
- if(tmp) { sftk_parseFlags(param,parsed); PORT_Free(tmp); })
+ if(tmp) { sftk_parseFlags(param,parsed); PORT_Free(tmp); tmp = NULL; })
SFTK_HANDLE_STRING_ARG(index,tmp,"tokens=",
- if(tmp) { sftk_parseTokens(tmp,parsed); PORT_Free(tmp); })
+ if(tmp) { sftk_parseTokens(tmp,parsed); PORT_Free(tmp); tmp = NULL; })
SFTK_HANDLE_FINAL_ARG(index)
}
if (parsed->tokens == NULL) {