diff options
author | emaldona%redhat.com <devnull@localhost> | 2010-06-18 04:09:27 +0000 |
---|---|---|
committer | emaldona%redhat.com <devnull@localhost> | 2010-06-18 04:09:27 +0000 |
commit | 1112b6259773a2d8bed1079d2ff1bd61d5cd1a25 (patch) | |
tree | 571a3fc884bc652a7c9536d776a57e674bc6f2f3 | |
parent | 110bea725c18c7de3c97538172c0ef80240a5613 (diff) | |
download | nss-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.c | 14 |
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) { |