OLD | NEW |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 /* | 4 /* |
5 * The following code handles the storage of PKCS 11 modules used by the | 5 * The following code handles the storage of PKCS 11 modules used by the |
6 * NSS. For the rest of NSS, only one kind of database handle exists: | 6 * NSS. For the rest of NSS, only one kind of database handle exists: |
7 * | 7 * |
8 * SFTKDBHandle | 8 * SFTKDBHandle |
9 * | 9 * |
10 * There is one SFTKDBHandle for each key database and one for each cert | 10 * There is one SFTKDBHandle for each key database and one for each cert |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 * nss="NSS parameters" | 68 * nss="NSS parameters" |
69 * other="parameters for other libraries and applications" | 69 * other="parameters for other libraries and applications" |
70 * | 70 * |
71 * library=libmynextpk11.so | 71 * library=libmynextpk11.so |
72 * name="My other PKCS#11 module" | 72 * name="My other PKCS#11 module" |
73 */ | 73 */ |
74 | 74 |
75 | 75 |
76 /* | 76 /* |
77 * Smart string cat functions. Automatically manage the memory. | 77 * Smart string cat functions. Automatically manage the memory. |
78 * The first parameter is the source string. If it's null, we | 78 * The first parameter is the destination string. If it's null, we |
79 * allocate memory for it. If it's not, we reallocate memory | 79 * allocate memory for it. If it's not, we reallocate memory |
80 * so the the concanenated string fits. | 80 * so the the concanenated string fits. |
81 */ | 81 */ |
82 static char * | 82 static char * |
83 nssutil_DupnCat(char *baseString, const char *str, int str_len) | 83 nssutil_DupnCat(char *baseString, const char *str, int str_len) |
84 { | 84 { |
85 int len = (baseString ? PORT_Strlen(baseString) : 0) + 1; | 85 int baseStringLen = baseString ? PORT_Strlen(baseString) : 0; |
| 86 int len = baseStringLen + 1; |
86 char *newString; | 87 char *newString; |
87 | 88 |
88 len += str_len; | 89 len += str_len; |
89 newString = (char *) PORT_Realloc(baseString,len); | 90 newString = (char *) PORT_Realloc(baseString,len); |
90 if (newString == NULL) { | 91 if (newString == NULL) { |
91 PORT_Free(baseString); | 92 PORT_Free(baseString); |
92 return NULL; | 93 return NULL; |
93 } | 94 } |
94 if (baseString == NULL) *newString = 0; | 95 PORT_Memcpy(&newString[baseStringLen], str, str_len); |
95 return PORT_Strncat(newString,str, str_len); | 96 newString[len - 1] = 0; |
| 97 return newString; |
96 } | 98 } |
97 | 99 |
98 /* Same as nssutil_DupnCat except it concatenates the full string, not a | 100 /* Same as nssutil_DupnCat except it concatenates the full string, not a |
99 * partial one */ | 101 * partial one */ |
100 static char * | 102 static char * |
101 nssutil_DupCat(char *baseString, const char *str) | 103 nssutil_DupCat(char *baseString, const char *str) |
102 { | 104 { |
103 return nssutil_DupnCat(baseString, str, PORT_Strlen(str)); | 105 return nssutil_DupnCat(baseString, str, PORT_Strlen(str)); |
104 } | 106 } |
105 | 107 |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 /* SHDB_FIXME implement */ | 475 /* SHDB_FIXME implement */ |
474 os_stat_type stat_existing; | 476 os_stat_type stat_existing; |
475 os_open_permissions_type file_mode; | 477 os_open_permissions_type file_mode; |
476 FILE *fd = NULL; | 478 FILE *fd = NULL; |
477 FILE *fd2 = NULL; | 479 FILE *fd2 = NULL; |
478 char line[MAX_LINE_LENGTH]; | 480 char line[MAX_LINE_LENGTH]; |
479 char *dbname2 = NULL; | 481 char *dbname2 = NULL; |
480 char *block = NULL; | 482 char *block = NULL; |
481 char *name = NULL; | 483 char *name = NULL; |
482 char *lib = NULL; | 484 char *lib = NULL; |
483 int name_len, lib_len; | 485 int name_len = 0, lib_len = 0; |
484 PRBool skip = PR_FALSE; | 486 PRBool skip = PR_FALSE; |
485 PRBool found = PR_FALSE; | 487 PRBool found = PR_FALSE; |
486 | 488 |
487 if (dbname == NULL) { | 489 if (dbname == NULL) { |
488 PORT_SetError(SEC_ERROR_INVALID_ARGS); | 490 PORT_SetError(SEC_ERROR_INVALID_ARGS); |
489 return SECFailure; | 491 return SECFailure; |
490 } | 492 } |
491 | 493 |
492 if (!rw) { | 494 if (!rw) { |
493 PORT_SetError(SEC_ERROR_READ_ONLY); | 495 PORT_SetError(SEC_ERROR_READ_ONLY); |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 secmod, (char **)args, rw) | 729 secmod, (char **)args, rw) |
728 == SECSuccess) ? &success: NULL; | 730 == SECSuccess) ? &success: NULL; |
729 break; | 731 break; |
730 } | 732 } |
731 done: | 733 done: |
732 if (secmod) PR_smprintf_free(secmod); | 734 if (secmod) PR_smprintf_free(secmod); |
733 if (appName) PORT_Free(appName); | 735 if (appName) PORT_Free(appName); |
734 if (filename) PORT_Free(filename); | 736 if (filename) PORT_Free(filename); |
735 return rvstr; | 737 return rvstr; |
736 } | 738 } |
OLD | NEW |