File: | s/lib/libpkix/pkix_pl_nss/system/pkix_pl_oid.c |
Warning: | line 119, column 31 The left operand of '==' is a garbage value |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
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 | |||
3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |||
4 | /* | |||
5 | * pkix_pl_oid.c | |||
6 | * | |||
7 | * OID Object Functions | |||
8 | * | |||
9 | */ | |||
10 | ||||
11 | #include "pkix_pl_oid.h" | |||
12 | ||||
13 | /* --Private-OID-Functions---------------------------------------- */ | |||
14 | ||||
15 | /* | |||
16 | * FUNCTION: pkix_pl_OID_Comparator | |||
17 | * (see comments for PKIX_PL_ComparatorCallback in pkix_pl_system.h) | |||
18 | */ | |||
19 | static PKIX_Error * | |||
20 | pkix_pl_OID_Comparator( | |||
21 | PKIX_PL_Object *firstObject, | |||
22 | PKIX_PL_Object *secondObject, | |||
23 | PKIX_Int32 *pRes, | |||
24 | void *plContext) | |||
25 | { | |||
26 | PKIX_PL_OID *firstOID = NULL((void*)0); | |||
27 | PKIX_PL_OID *secondOID = NULL((void*)0); | |||
28 | ||||
29 | PKIX_ENTER(OID, "pkix_pl_OID_Comparator")static const char cMyFuncName[] = {"pkix_pl_OID_Comparator"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
30 | PKIX_NULLCHECK_THREE(firstObject, secondObject, pRes)do { if (((firstObject) == ((void*)0)) || ((secondObject) == ( (void*)0)) || ((pRes) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); | |||
31 | ||||
32 | PKIX_CHECK(pkix_CheckTypesdo { stdVars.aPkixErrorResult = (pkix_CheckTypes (firstObject , secondObject, PKIX_OID_TYPE, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_ARGUMENTSNOTOIDS; goto cleanup ; } } while (0) | |||
33 | (firstObject, secondObject, PKIX_OID_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckTypes (firstObject , secondObject, PKIX_OID_TYPE, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_ARGUMENTSNOTOIDS; goto cleanup ; } } while (0) | |||
34 | PKIX_ARGUMENTSNOTOIDS)do { stdVars.aPkixErrorResult = (pkix_CheckTypes (firstObject , secondObject, PKIX_OID_TYPE, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_ARGUMENTSNOTOIDS; goto cleanup ; } } while (0); | |||
35 | ||||
36 | firstOID = (PKIX_PL_OID*)firstObject; | |||
37 | secondOID = (PKIX_PL_OID*)secondObject; | |||
38 | ||||
39 | *pRes = (PKIX_Int32)SECITEM_CompareItemSECITEM_CompareItem_Util(&firstOID->derOid, | |||
40 | &secondOID->derOid); | |||
41 | cleanup: | |||
42 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
43 | } | |||
44 | ||||
45 | /* | |||
46 | * FUNCTION: pkix_pl_OID_Destroy | |||
47 | * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) | |||
48 | */ | |||
49 | static PKIX_Error * | |||
50 | pkix_pl_OID_Destroy( | |||
51 | PKIX_PL_Object *object, | |||
52 | void *plContext) | |||
53 | { | |||
54 | PKIX_PL_OID *oid = NULL((void*)0); | |||
55 | ||||
56 | PKIX_ENTER(OID, "pkix_pl_OID_Destroy")static const char cMyFuncName[] = {"pkix_pl_OID_Destroy"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName; stdVars .aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
57 | PKIX_NULLCHECK_ONE(object)do { if ((object) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); | |||
58 | ||||
59 | PKIX_CHECK(pkix_CheckType(object, PKIX_OID_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0) | |||
60 | PKIX_OBJECTNOTANOID)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0); | |||
61 | oid = (PKIX_PL_OID*)object; | |||
62 | SECITEM_FreeItemSECITEM_FreeItem_Util(&oid->derOid, PR_FALSE0); | |||
63 | ||||
64 | cleanup: | |||
65 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
66 | } | |||
67 | ||||
68 | /* | |||
69 | * FUNCTION: pkix_pl_OID_Hashcode | |||
70 | * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) | |||
71 | */ | |||
72 | static PKIX_Error * | |||
73 | pkix_pl_OID_Hashcode( | |||
74 | PKIX_PL_Object *object, | |||
75 | PKIX_UInt32 *pHashcode, | |||
76 | void *plContext) | |||
77 | { | |||
78 | PKIX_PL_OID *oid = NULL((void*)0); | |||
79 | ||||
80 | PKIX_ENTER(OID, "pkix_pl_OID_HashCode")static const char cMyFuncName[] = {"pkix_pl_OID_HashCode"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName; stdVars .aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
81 | PKIX_NULLCHECK_TWO(object, pHashcode)do { if (((object) == ((void*)0)) || ((pHashcode) == ((void*) 0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); | |||
82 | ||||
83 | PKIX_CHECK(pkix_CheckType(object, PKIX_OID_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0) | |||
84 | PKIX_OBJECTNOTANOID)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0); | |||
85 | ||||
86 | oid = (PKIX_PL_OID *)object; | |||
87 | ||||
88 | PKIX_CHECK(pkix_hashdo { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) | |||
89 | ((unsigned char *)oid->derOid.data,do { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) | |||
90 | oid->derOid.len * sizeof (char),do { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) | |||
91 | pHashcode,do { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) | |||
92 | plContext),do { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0) | |||
93 | PKIX_HASHFAILED)do { stdVars.aPkixErrorResult = (pkix_hash ((unsigned char *) oid->derOid.data, oid->derOid.len * sizeof (char), pHashcode , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_HASHFAILED; goto cleanup; } } while (0); | |||
94 | cleanup: | |||
95 | ||||
96 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
97 | } | |||
98 | ||||
99 | /* | |||
100 | * FUNCTION: pkix_pl_OID_Equals | |||
101 | * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h) | |||
102 | */ | |||
103 | static PKIX_Error * | |||
104 | pkix_pl_OID_Equals( | |||
105 | PKIX_PL_Object *first, | |||
106 | PKIX_PL_Object *second, | |||
107 | PKIX_Boolean *pResult, | |||
108 | void *plContext) | |||
109 | { | |||
110 | PKIX_Int32 cmpResult; | |||
| ||||
111 | ||||
112 | PKIX_ENTER(OID, "pkix_pl_OID_Equals")static const char cMyFuncName[] = {"pkix_pl_OID_Equals"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName; stdVars .aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
113 | PKIX_NULLCHECK_THREE(first, second, pResult)do { if (((first) == ((void*)0)) || ((second) == ((void*)0)) || ((pResult) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean ) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn (&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext );; } } while (0); | |||
114 | ||||
115 | PKIX_CHECK(pkix_pl_OID_Comparatordo { stdVars.aPkixErrorResult = (pkix_pl_OID_Comparator (first , second, &cmpResult, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCOMPARATORFAILED; goto cleanup ; } } while (0) | |||
116 | (first, second, &cmpResult, plContext),do { stdVars.aPkixErrorResult = (pkix_pl_OID_Comparator (first , second, &cmpResult, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCOMPARATORFAILED; goto cleanup ; } } while (0) | |||
117 | PKIX_OIDCOMPARATORFAILED)do { stdVars.aPkixErrorResult = (pkix_pl_OID_Comparator (first , second, &cmpResult, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCOMPARATORFAILED; goto cleanup ; } } while (0); | |||
118 | ||||
119 | *pResult = (cmpResult == 0); | |||
| ||||
120 | cleanup: | |||
121 | ||||
122 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
123 | } | |||
124 | ||||
125 | /* | |||
126 | * FUNCTION: pkix_pl_OID_ToString | |||
127 | * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) | |||
128 | * Use this function only for printing OIDs and not to make any | |||
129 | * critical security decision. | |||
130 | */ | |||
131 | static PKIX_Error * | |||
132 | pkix_pl_OID_ToString( | |||
133 | PKIX_PL_Object *object, | |||
134 | PKIX_PL_String **pString, | |||
135 | void *plContext) | |||
136 | { | |||
137 | PKIX_PL_OID *oid = NULL((void*)0); | |||
138 | char *oidString = NULL((void*)0); | |||
139 | ||||
140 | PKIX_ENTER(OID, "pkix_pl_OID_toString")static const char cMyFuncName[] = {"pkix_pl_OID_toString"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName; stdVars .aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
141 | PKIX_NULLCHECK_TWO(object, pString)do { if (((object) == ((void*)0)) || ((pString) == ((void*)0) )){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars. aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(& stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean) 1), plContext);; } } while (0); | |||
142 | ||||
143 | PKIX_CHECK(pkix_CheckType(object, PKIX_OID_TYPE, plContext),do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0) | |||
144 | PKIX_OBJECTNOTANOID)do { stdVars.aPkixErrorResult = (pkix_CheckType(object, PKIX_OID_TYPE , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_OBJECTNOTANOID; goto cleanup; } } while (0); | |||
145 | oid = (PKIX_PL_OID*)object; | |||
146 | oidString = CERT_GetOidString(&oid->derOid); | |||
147 | ||||
148 | PKIX_CHECK(PKIX_PL_String_Createdo { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, oidString , 0, pString, plContext)); if (stdVars.aPkixErrorResult) { stdVars .aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars .aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup; } } while (0) | |||
149 | (PKIX_ESCASCII, oidString , 0, pString, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, oidString , 0, pString, plContext)); if (stdVars.aPkixErrorResult) { stdVars .aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars .aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup; } } while (0) | |||
150 | PKIX_STRINGCREATEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_String_Create (0, oidString , 0, pString, plContext)); if (stdVars.aPkixErrorResult) { stdVars .aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars .aPkixErrorCode = PKIX_STRINGCREATEFAILED; goto cleanup; } } while (0); | |||
151 | cleanup: | |||
152 | PR_smprintf_free(oidString); | |||
153 | ||||
154 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
155 | } | |||
156 | ||||
157 | /* | |||
158 | * FUNCTION: pkix_pl_OID_RegisterSelf | |||
159 | * DESCRIPTION: | |||
160 | * Registers PKIX_OID_TYPE and its related functions with systemClasses[] | |||
161 | * THREAD SAFETY: | |||
162 | * Not Thread Safe - for performance and complexity reasons | |||
163 | * | |||
164 | * Since this function is only called by PKIX_PL_Initialize, which should | |||
165 | * only be called once, it is acceptable that this function is not | |||
166 | * thread-safe. | |||
167 | */ | |||
168 | PKIX_Error * | |||
169 | pkix_pl_OID_RegisterSelf( | |||
170 | void *plContext) | |||
171 | { | |||
172 | extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; | |||
173 | pkix_ClassTable_Entry *entry = &systemClasses[PKIX_OID_TYPE]; | |||
174 | ||||
175 | PKIX_ENTER(OID, "pkix_pl_OID_RegisterSelf")static const char cMyFuncName[] = {"pkix_pl_OID_RegisterSelf" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
176 | ||||
177 | entry->description = "OID"; | |||
178 | entry->typeObjectSize = sizeof(PKIX_PL_OID); | |||
179 | entry->destructor = pkix_pl_OID_Destroy; | |||
180 | entry->equalsFunction = pkix_pl_OID_Equals; | |||
181 | entry->hashcodeFunction = pkix_pl_OID_Hashcode; | |||
182 | entry->toStringFunction = pkix_pl_OID_ToString; | |||
183 | entry->comparator = pkix_pl_OID_Comparator; | |||
184 | entry->duplicateFunction = pkix_duplicateImmutable; | |||
185 | ||||
186 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
187 | } | |||
188 | ||||
189 | /* | |||
190 | * FUNCTION: pkix_pl_OID_GetCriticalExtensionOIDs | |||
191 | * DESCRIPTION: | |||
192 | * | |||
193 | * Converts the extensions in "extensions" array that are critical to | |||
194 | * PKIX_PL_OID and returns the result as a PKIX_List in "pPidList". | |||
195 | * If there is no critical extension, an empty list is returned. | |||
196 | * | |||
197 | * PARAMETERS | |||
198 | * "extension" | |||
199 | * an array of extension pointers. May be NULL. | |||
200 | * "pOidsList" | |||
201 | * Address where the list of OIDs is returned. Must be non-NULL. | |||
202 | * THREAD SAFETY: | |||
203 | * Thread Safe (see Thread Safety Definitions in Programmer's Guide) | |||
204 | * RETURNS: | |||
205 | * Returns NULL if the function succeeds. | |||
206 | * Returns a CRL Error if the function fails in a non-fatal way. | |||
207 | * Returns a Fatal Error if the function fails in an unrecoverable way. | |||
208 | */ | |||
209 | PKIX_Error * | |||
210 | pkix_pl_OID_GetCriticalExtensionOIDs( | |||
211 | CERTCertExtension **extensions, | |||
212 | PKIX_List **pOidsList, | |||
213 | void *plContext) | |||
214 | { | |||
215 | PKIX_List *oidsList = NULL((void*)0); | |||
216 | PKIX_PL_OID *pkixOID = NULL((void*)0); | |||
217 | ||||
218 | PKIX_ENTER(OID, "pkix_pl_OID_GetCriticalExtensionOIDs")static const char cMyFuncName[] = {"pkix_pl_OID_GetCriticalExtensionOIDs" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
219 | PKIX_NULLCHECK_ONE(pOidsList)do { if ((pOidsList) == ((void*)0)){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); | |||
220 | ||||
221 | PKIX_CHECK(PKIX_List_Create(&oidsList, plContext),do { stdVars.aPkixErrorResult = (PKIX_List_Create(&oidsList , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_LISTCREATEFAILED; goto cleanup; } } while (0) | |||
222 | PKIX_LISTCREATEFAILED)do { stdVars.aPkixErrorResult = (PKIX_List_Create(&oidsList , plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_LISTCREATEFAILED; goto cleanup; } } while (0); | |||
223 | ||||
224 | if (extensions) { | |||
225 | while (*extensions) { | |||
226 | CERTCertExtension *extension = NULL((void*)0); | |||
227 | SECItem *critical = NULL((void*)0); | |||
228 | SECItem *oid = NULL((void*)0); | |||
229 | ||||
230 | extension = *extensions++; | |||
231 | /* extension is critical ? */ | |||
232 | critical = &extension->critical; | |||
233 | if (critical->len == 0 || critical->data[0] == 0) { | |||
234 | continue; | |||
235 | } | |||
236 | oid = &extension->id; | |||
237 | PKIX_CHECK(do { stdVars.aPkixErrorResult = (PKIX_PL_OID_CreateBySECItem( oid, &pkixOID, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCREATEFAILED; goto cleanup ; } } while (0) | |||
238 | PKIX_PL_OID_CreateBySECItem(oid, &pkixOID, plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_OID_CreateBySECItem( oid, &pkixOID, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCREATEFAILED; goto cleanup ; } } while (0) | |||
239 | PKIX_OIDCREATEFAILED)do { stdVars.aPkixErrorResult = (PKIX_PL_OID_CreateBySECItem( oid, &pkixOID, plContext)); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_OIDCREATEFAILED; goto cleanup ; } } while (0); | |||
240 | PKIX_CHECK(do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem(oidsList , (PKIX_PL_Object *)pkixOID, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0) | |||
241 | PKIX_List_AppendItem(oidsList, (PKIX_PL_Object *)pkixOID,do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem(oidsList , (PKIX_PL_Object *)pkixOID, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0) | |||
242 | plContext),do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem(oidsList , (PKIX_PL_Object *)pkixOID, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0) | |||
243 | PKIX_LISTAPPENDITEMFAILED)do { stdVars.aPkixErrorResult = (PKIX_List_AppendItem(oidsList , (PKIX_PL_Object *)pkixOID, plContext)); if (stdVars.aPkixErrorResult ) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass ; stdVars.aPkixErrorCode = PKIX_LISTAPPENDITEMFAILED; goto cleanup ; } } while (0); | |||
244 | PKIX_DECREF(pkixOID)do { if (pkixOID){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(pkixOID), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } pkixOID = ((void*) 0); } } while (0); | |||
245 | } | |||
246 | } | |||
247 | ||||
248 | *pOidsList = oidsList; | |||
249 | oidsList = NULL((void*)0); | |||
250 | ||||
251 | cleanup: | |||
252 | PKIX_DECREF(oidsList)do { if (oidsList){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(oidsList), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } oidsList = ((void* )0); } } while (0); | |||
253 | PKIX_DECREF(pkixOID)do { if (pkixOID){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(pkixOID), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } pkixOID = ((void*) 0); } } while (0); | |||
254 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
255 | } | |||
256 | ||||
257 | /* --Public-Functions------------------------------------------------------- */ | |||
258 | ||||
259 | /* | |||
260 | * FUNCTION: PKIX_PL_OID_CreateBySECItem (see comments in pkix_pl_system.h) | |||
261 | */ | |||
262 | PKIX_Error * | |||
263 | PKIX_PL_OID_CreateBySECItem( | |||
264 | SECItem *derOid, | |||
265 | PKIX_PL_OID **pOID, | |||
266 | void *plContext) | |||
267 | { | |||
268 | PKIX_PL_OID *oid = NULL((void*)0); | |||
269 | SECStatus rv; | |||
270 | ||||
271 | PKIX_ENTER(OID, "PKIX_PL_OID_CreateBySECItem")static const char cMyFuncName[] = {"PKIX_PL_OID_CreateBySECItem" }; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName ; stdVars.aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
272 | PKIX_NULLCHECK_TWO(pOID, derOid)do { if (((pOID) == ((void*)0)) || ((derOid) == ((void*)0))){ stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR ), ((PKIX_Boolean) 1), plContext);; } } while (0); | |||
273 | ||||
274 | PKIX_CHECK(PKIX_PL_Object_Allocdo { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0) | |||
275 | (PKIX_OID_TYPE,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0) | |||
276 | sizeof (PKIX_PL_OID),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0) | |||
277 | (PKIX_PL_Object **)&oid,do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0) | |||
278 | plContext),do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0) | |||
279 | PKIX_COULDNOTCREATEOBJECT)do { stdVars.aPkixErrorResult = (PKIX_PL_Object_Alloc (PKIX_OID_TYPE , sizeof (PKIX_PL_OID), (PKIX_PL_Object **)&oid, plContext )); if (stdVars.aPkixErrorResult) { stdVars.aPkixErrorClass = stdVars.aPkixErrorResult->errClass; stdVars.aPkixErrorCode = PKIX_COULDNOTCREATEOBJECT; goto cleanup; } } while (0); | |||
280 | rv = SECITEM_CopyItemSECITEM_CopyItem_Util(NULL((void*)0), &oid->derOid, derOid); | |||
281 | if (rv != SECSuccess) { | |||
282 | PKIX_ERROR(PKIX_OUTOFMEMORY){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_OUTOFMEMORY, ((void*)0), stdVars.aPkixType, 2, plContext ); } } stdVars.aPkixErrorReceived = ((PKIX_Boolean) 1); stdVars .aPkixErrorCode = PKIX_OUTOFMEMORY; goto cleanup; }; | |||
283 | } | |||
284 | *pOID = oid; | |||
285 | oid = NULL((void*)0); | |||
286 | ||||
287 | cleanup: | |||
288 | PKIX_DECREF(oid)do { if (oid){ stdVars.aPkixTempResult = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)(oid), plContext); if (stdVars.aPkixTempResult ) { PKIX_DoAddError(&stdVars, stdVars.aPkixTempResult, plContext ); stdVars.aPkixTempResult = ((void*)0); } oid = ((void*)0); } } while (0); | |||
289 | ||||
290 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
291 | } | |||
292 | ||||
293 | /* | |||
294 | * FUNCTION: PKIX_PL_OID_Create (see comments in pkix_pl_system.h) | |||
295 | */ | |||
296 | PKIX_Error * | |||
297 | PKIX_PL_OID_Create( | |||
298 | SECOidTag idtag, | |||
299 | PKIX_PL_OID **pOID, | |||
300 | void *plContext) | |||
301 | { | |||
302 | SECOidData *oidData = NULL((void*)0); | |||
303 | ||||
304 | PKIX_ENTER(OID, "PKIX_PL_OID_Create")static const char cMyFuncName[] = {"PKIX_PL_OID_Create"}; PKIX_StdVars stdVars = zeroStdVars; stdVars.aMyFuncName = cMyFuncName; stdVars .aPkixType = PKIX_OID_ERROR; ; do { if (pkixLoggersDebugTrace ) { pkix_Logger_Check(pkixLoggersDebugTrace, stdVars.aMyFuncName , ">>>", stdVars.aPkixType, 5, plContext); } } while (0);; | |||
305 | PKIX_NULLCHECK_ONE(pOID)do { if ((pOID) == ((void*)0)){ stdVars.aPkixErrorReceived = ( (PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_NULLARGUMENT ; return PKIX_DoReturn(&stdVars, (PKIX_FATAL_ERROR), ((PKIX_Boolean ) 1), plContext);; } } while (0); | |||
306 | ||||
307 | oidData = SECOID_FindOIDByTagSECOID_FindOIDByTag_Util((SECOidTag)idtag); | |||
308 | if (!oidData) { | |||
309 | PKIX_ERROR(PKIX_SECOIDFINDOIDTAGDESCRIPTIONFAILED){ { if (pkixLoggersErrors) { pkix_Logger_CheckWithCode(pkixLoggersErrors , PKIX_SECOIDFINDOIDTAGDESCRIPTIONFAILED, ((void*)0), stdVars .aPkixType, 2, plContext); } } stdVars.aPkixErrorReceived = ( (PKIX_Boolean) 1); stdVars.aPkixErrorCode = PKIX_SECOIDFINDOIDTAGDESCRIPTIONFAILED ; goto cleanup; }; | |||
310 | } | |||
311 | ||||
312 | pkixErrorResultstdVars.aPkixErrorResult = | |||
313 | PKIX_PL_OID_CreateBySECItem(&oidData->oid, pOID, plContext); | |||
314 | cleanup: | |||
315 | PKIX_RETURN(OID)return PKIX_DoReturn(&stdVars, (PKIX_OID_ERROR), ((PKIX_Boolean ) 1), plContext);; | |||
316 | } |