Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: nss/lib/ckfw/find.c

Issue 1843333003: Update NSPR to 4.12 and NSS to 3.23 on iOS (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 /* 5 /*
6 * find.c 6 * find.c
7 * 7 *
8 * This file implements the nssCKFWFindObjects type and methods. 8 * This file implements the nssCKFWFindObjects type and methods.
9 */ 9 */
10 10
11 #ifndef CK_H 11 #ifndef CK_H
12 #include "ck.h" 12 #include "ck.h"
13 #endif /* CK_H */ 13 #endif /* CK_H */
14 14
15 /* 15 /*
16 * NSSCKFWFindObjects 16 * NSSCKFWFindObjects
17 * 17 *
18 * -- create/destroy -- 18 * -- create/destroy --
19 * nssCKFWFindObjects_Create 19 * nssCKFWFindObjects_Create
20 * nssCKFWFindObjects_Destroy 20 * nssCKFWFindObjects_Destroy
21 * 21 *
22 * -- public accessors -- 22 * -- public accessors --
23 * NSSCKFWFindObjects_GetMDFindObjects 23 * NSSCKFWFindObjects_GetMDFindObjects
24 * 24 *
25 * -- implement public accessors -- 25 * -- implement public accessors --
26 * nssCKFWFindObjects_GetMDFindObjects 26 * nssCKFWFindObjects_GetMDFindObjects
27 * 27 *
28 * -- private accessors -- 28 * -- private accessors --
29 * 29 *
30 * -- module fronts -- 30 * -- module fronts --
31 * nssCKFWFindObjects_Next 31 * nssCKFWFindObjects_Next
32 */ 32 */
33 33
34 struct NSSCKFWFindObjectsStr { 34 struct NSSCKFWFindObjectsStr {
35 NSSCKFWMutex *mutex; /* merely to serialise the MDObject calls */ 35 NSSCKFWMutex *mutex; /* merely to serialise the MDObject calls */
36 NSSCKMDFindObjects *mdfo1; 36 NSSCKMDFindObjects *mdfo1;
37 NSSCKMDFindObjects *mdfo2; 37 NSSCKMDFindObjects *mdfo2;
38 NSSCKFWSession *fwSession; 38 NSSCKFWSession *fwSession;
39 NSSCKMDSession *mdSession; 39 NSSCKMDSession *mdSession;
40 NSSCKFWToken *fwToken; 40 NSSCKFWToken *fwToken;
41 NSSCKMDToken *mdToken; 41 NSSCKMDToken *mdToken;
42 NSSCKFWInstance *fwInstance; 42 NSSCKFWInstance *fwInstance;
43 NSSCKMDInstance *mdInstance; 43 NSSCKMDInstance *mdInstance;
44 44
45 NSSCKMDFindObjects *mdFindObjects; /* varies */ 45 NSSCKMDFindObjects *mdFindObjects; /* varies */
46 }; 46 };
47 47
48 #ifdef DEBUG 48 #ifdef DEBUG
49 /* 49 /*
50 * But first, the pointer-tracking stuff. 50 * But first, the pointer-tracking stuff.
51 * 51 *
52 * NOTE: the pointer-tracking support in NSS/base currently relies 52 * NOTE: the pointer-tracking support in NSS/base currently relies
53 * upon NSPR's CallOnce support. That, however, relies upon NSPR's 53 * upon NSPR's CallOnce support. That, however, relies upon NSPR's
54 * locking, which is tied into the runtime. We need a pointer-tracker 54 * locking, which is tied into the runtime. We need a pointer-tracker
55 * implementation that uses the locks supplied through C_Initialize. 55 * implementation that uses the locks supplied through C_Initialize.
56 * That support, however, can be filled in later. So for now, I'll 56 * That support, however, can be filled in later. So for now, I'll
57 * just do these routines as no-ops. 57 * just do these routines as no-ops.
58 */ 58 */
59 59
60 static CK_RV 60 static CK_RV
61 findObjects_add_pointer 61 findObjects_add_pointer(
62 ( 62 const NSSCKFWFindObjects *fwFindObjects)
63 const NSSCKFWFindObjects *fwFindObjects
64 )
65 { 63 {
66 return CKR_OK; 64 return CKR_OK;
67 } 65 }
68 66
69 static CK_RV 67 static CK_RV
70 findObjects_remove_pointer 68 findObjects_remove_pointer(
71 ( 69 const NSSCKFWFindObjects *fwFindObjects)
72 const NSSCKFWFindObjects *fwFindObjects
73 )
74 { 70 {
75 return CKR_OK; 71 return CKR_OK;
76 } 72 }
77 73
78 NSS_IMPLEMENT CK_RV 74 NSS_IMPLEMENT CK_RV
79 nssCKFWFindObjects_verifyPointer 75 nssCKFWFindObjects_verifyPointer(
80 ( 76 const NSSCKFWFindObjects *fwFindObjects)
81 const NSSCKFWFindObjects *fwFindObjects
82 )
83 { 77 {
84 return CKR_OK; 78 return CKR_OK;
85 } 79 }
86 80
87 #endif /* DEBUG */ 81 #endif /* DEBUG */
88 82
89 /* 83 /*
90 * nssCKFWFindObjects_Create 84 * nssCKFWFindObjects_Create
91 * 85 *
92 */ 86 */
93 NSS_EXTERN NSSCKFWFindObjects * 87 NSS_EXTERN NSSCKFWFindObjects *
94 nssCKFWFindObjects_Create 88 nssCKFWFindObjects_Create(
95 ( 89 NSSCKFWSession *fwSession,
96 NSSCKFWSession *fwSession, 90 NSSCKFWToken *fwToken,
97 NSSCKFWToken *fwToken, 91 NSSCKFWInstance *fwInstance,
98 NSSCKFWInstance *fwInstance, 92 NSSCKMDFindObjects *mdFindObjects1,
99 NSSCKMDFindObjects *mdFindObjects1, 93 NSSCKMDFindObjects *mdFindObjects2,
100 NSSCKMDFindObjects *mdFindObjects2, 94 CK_RV *pError)
101 CK_RV *pError
102 )
103 { 95 {
104 NSSCKFWFindObjects *fwFindObjects = NULL; 96 NSSCKFWFindObjects *fwFindObjects = NULL;
105 NSSCKMDSession *mdSession; 97 NSSCKMDSession *mdSession;
106 NSSCKMDToken *mdToken; 98 NSSCKMDToken *mdToken;
107 NSSCKMDInstance *mdInstance; 99 NSSCKMDInstance *mdInstance;
108 100
109 mdSession = nssCKFWSession_GetMDSession(fwSession); 101 mdSession = nssCKFWSession_GetMDSession(fwSession);
110 mdToken = nssCKFWToken_GetMDToken(fwToken); 102 mdToken = nssCKFWToken_GetMDToken(fwToken);
111 mdInstance = nssCKFWInstance_GetMDInstance(fwInstance); 103 mdInstance = nssCKFWInstance_GetMDInstance(fwInstance);
112 104
113 fwFindObjects = nss_ZNEW(NULL, NSSCKFWFindObjects); 105 fwFindObjects = nss_ZNEW(NULL, NSSCKFWFindObjects);
114 if (!fwFindObjects) { 106 if (!fwFindObjects) {
115 *pError = CKR_HOST_MEMORY; 107 *pError = CKR_HOST_MEMORY;
116 goto loser; 108 goto loser;
117 } 109 }
118 110
119 fwFindObjects->mdfo1 = mdFindObjects1; 111 fwFindObjects->mdfo1 = mdFindObjects1;
120 fwFindObjects->mdfo2 = mdFindObjects2; 112 fwFindObjects->mdfo2 = mdFindObjects2;
121 fwFindObjects->fwSession = fwSession; 113 fwFindObjects->fwSession = fwSession;
122 fwFindObjects->mdSession = mdSession; 114 fwFindObjects->mdSession = mdSession;
123 fwFindObjects->fwToken = fwToken; 115 fwFindObjects->fwToken = fwToken;
124 fwFindObjects->mdToken = mdToken; 116 fwFindObjects->mdToken = mdToken;
125 fwFindObjects->fwInstance = fwInstance; 117 fwFindObjects->fwInstance = fwInstance;
126 fwFindObjects->mdInstance = mdInstance; 118 fwFindObjects->mdInstance = mdInstance;
127 119
128 fwFindObjects->mutex = nssCKFWInstance_CreateMutex(fwInstance, NULL, pError); 120 fwFindObjects->mutex = nssCKFWInstance_CreateMutex(fwInstance, NULL, pError) ;
129 if (!fwFindObjects->mutex) { 121 if (!fwFindObjects->mutex) {
130 goto loser; 122 goto loser;
131 } 123 }
132 124
133 #ifdef DEBUG 125 #ifdef DEBUG
134 *pError = findObjects_add_pointer(fwFindObjects); 126 *pError = findObjects_add_pointer(fwFindObjects);
135 if( CKR_OK != *pError ) { 127 if (CKR_OK != *pError) {
136 goto loser; 128 goto loser;
137 } 129 }
138 #endif /* DEBUG */ 130 #endif /* DEBUG */
139 131
140 return fwFindObjects; 132 return fwFindObjects;
141 133
142 loser: 134 loser:
143 if( fwFindObjects ) { 135 if (fwFindObjects) {
144 if( NULL != mdFindObjects1 ) { 136 if (NULL != mdFindObjects1) {
145 if( NULL != mdFindObjects1->Final ) { 137 if (NULL != mdFindObjects1->Final) {
146 fwFindObjects->mdFindObjects = mdFindObjects1; 138 fwFindObjects->mdFindObjects = mdFindObjects1;
147 mdFindObjects1->Final(mdFindObjects1, fwFindObjects, mdSession, 139 mdFindObjects1->Final(mdFindObjects1, fwFindObjects, mdSession,
148 fwSession, mdToken, fwToken, mdInstance, fwInstance); 140 fwSession, mdToken, fwToken, mdInstance, f wInstance);
149 } 141 }
142 }
143
144 if (NULL != mdFindObjects2) {
145 if (NULL != mdFindObjects2->Final) {
146 fwFindObjects->mdFindObjects = mdFindObjects2;
147 mdFindObjects2->Final(mdFindObjects2, fwFindObjects, mdSession,
148 fwSession, mdToken, fwToken, mdInstance, f wInstance);
149 }
150 }
151
152 nss_ZFreeIf(fwFindObjects);
150 } 153 }
151 154
152 if( NULL != mdFindObjects2 ) { 155 if (CKR_OK == *pError) {
153 if( NULL != mdFindObjects2->Final ) { 156 *pError = CKR_GENERAL_ERROR;
154 fwFindObjects->mdFindObjects = mdFindObjects2;
155 mdFindObjects2->Final(mdFindObjects2, fwFindObjects, mdSession,
156 fwSession, mdToken, fwToken, mdInstance, fwInstance);
157 }
158 } 157 }
159 158
160 nss_ZFreeIf(fwFindObjects); 159 return (NSSCKFWFindObjects *)NULL;
161 }
162
163 if( CKR_OK == *pError ) {
164 *pError = CKR_GENERAL_ERROR;
165 }
166
167 return (NSSCKFWFindObjects *)NULL;
168 } 160 }
169 161
170
171 /* 162 /*
172 * nssCKFWFindObjects_Destroy 163 * nssCKFWFindObjects_Destroy
173 * 164 *
174 */ 165 */
175 NSS_EXTERN void 166 NSS_EXTERN void
176 nssCKFWFindObjects_Destroy 167 nssCKFWFindObjects_Destroy(
177 ( 168 NSSCKFWFindObjects *fwFindObjects)
178 NSSCKFWFindObjects *fwFindObjects
179 )
180 { 169 {
181 #ifdef NSSDEBUG 170 #ifdef NSSDEBUG
182 if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { 171 if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) {
183 return; 172 return;
184 } 173 }
185 #endif /* NSSDEBUG */ 174 #endif /* NSSDEBUG */
186 175
187 (void)nssCKFWMutex_Destroy(fwFindObjects->mutex); 176 (void)nssCKFWMutex_Destroy(fwFindObjects->mutex);
188 177
189 if (fwFindObjects->mdfo1) { 178 if (fwFindObjects->mdfo1) {
190 if (fwFindObjects->mdfo1->Final) { 179 if (fwFindObjects->mdfo1->Final) {
191 fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; 180 fwFindObjects->mdFindObjects = fwFindObjects->mdfo1;
192 fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, 181 fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects,
193 fwFindObjects->mdSession, fwFindObjects->fwSession, 182 fwFindObjects->mdSession, fwFindObjects- >fwSession,
194 fwFindObjects->mdToken, fwFindObjects->fwToken, 183 fwFindObjects->mdToken, fwFindObjects->f wToken,
195 fwFindObjects->mdInstance, fwFindObjects->fwInstance); 184 fwFindObjects->mdInstance, fwFindObjects ->fwInstance);
185 }
196 } 186 }
197 }
198 187
199 if (fwFindObjects->mdfo2) { 188 if (fwFindObjects->mdfo2) {
200 if (fwFindObjects->mdfo2->Final) { 189 if (fwFindObjects->mdfo2->Final) {
201 fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; 190 fwFindObjects->mdFindObjects = fwFindObjects->mdfo2;
202 fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, 191 fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects,
203 fwFindObjects->mdSession, fwFindObjects->fwSession, 192 fwFindObjects->mdSession, fwFindObjects- >fwSession,
204 fwFindObjects->mdToken, fwFindObjects->fwToken, 193 fwFindObjects->mdToken, fwFindObjects->f wToken,
205 fwFindObjects->mdInstance, fwFindObjects->fwInstance); 194 fwFindObjects->mdInstance, fwFindObjects ->fwInstance);
195 }
206 } 196 }
207 }
208 197
209 nss_ZFreeIf(fwFindObjects); 198 nss_ZFreeIf(fwFindObjects);
210 199
211 #ifdef DEBUG 200 #ifdef DEBUG
212 (void)findObjects_remove_pointer(fwFindObjects); 201 (void)findObjects_remove_pointer(fwFindObjects);
213 #endif /* DEBUG */ 202 #endif /* DEBUG */
214 203
215 return; 204 return;
216 } 205 }
217 206
218 /* 207 /*
219 * nssCKFWFindObjects_GetMDFindObjects 208 * nssCKFWFindObjects_GetMDFindObjects
220 * 209 *
221 */ 210 */
222 NSS_EXTERN NSSCKMDFindObjects * 211 NSS_EXTERN NSSCKMDFindObjects *
223 nssCKFWFindObjects_GetMDFindObjects 212 nssCKFWFindObjects_GetMDFindObjects(
224 ( 213 NSSCKFWFindObjects *fwFindObjects)
225 NSSCKFWFindObjects *fwFindObjects
226 )
227 { 214 {
228 #ifdef NSSDEBUG 215 #ifdef NSSDEBUG
229 if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { 216 if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) {
230 return (NSSCKMDFindObjects *)NULL; 217 return (NSSCKMDFindObjects *)NULL;
231 } 218 }
232 #endif /* NSSDEBUG */ 219 #endif /* NSSDEBUG */
233 220
234 return fwFindObjects->mdFindObjects; 221 return fwFindObjects->mdFindObjects;
235 } 222 }
236 223
237 /* 224 /*
238 * nssCKFWFindObjects_Next 225 * nssCKFWFindObjects_Next
239 * 226 *
240 */ 227 */
241 NSS_EXTERN NSSCKFWObject * 228 NSS_EXTERN NSSCKFWObject *
242 nssCKFWFindObjects_Next 229 nssCKFWFindObjects_Next(
243 ( 230 NSSCKFWFindObjects *fwFindObjects,
244 NSSCKFWFindObjects *fwFindObjects, 231 NSSArena *arenaOpt,
245 NSSArena *arenaOpt, 232 CK_RV *pError)
246 CK_RV *pError
247 )
248 { 233 {
249 NSSCKMDObject *mdObject; 234 NSSCKMDObject *mdObject;
250 NSSCKFWObject *fwObject = (NSSCKFWObject *)NULL; 235 NSSCKFWObject *fwObject = (NSSCKFWObject *)NULL;
251 NSSArena *objArena; 236 NSSArena *objArena;
252 237
253 #ifdef NSSDEBUG 238 #ifdef NSSDEBUG
254 if (!pError) { 239 if (!pError) {
255 return (NSSCKFWObject *)NULL; 240 return (NSSCKFWObject *)NULL;
256 } 241 }
257 242
258 *pError = nssCKFWFindObjects_verifyPointer(fwFindObjects); 243 *pError = nssCKFWFindObjects_verifyPointer(fwFindObjects);
259 if( CKR_OK != *pError ) { 244 if (CKR_OK != *pError) {
260 return (NSSCKFWObject *)NULL; 245 return (NSSCKFWObject *)NULL;
261 } 246 }
262 #endif /* NSSDEBUG */ 247 #endif /* NSSDEBUG */
263 248
264 *pError = nssCKFWMutex_Lock(fwFindObjects->mutex); 249 *pError = nssCKFWMutex_Lock(fwFindObjects->mutex);
265 if( CKR_OK != *pError ) { 250 if (CKR_OK != *pError) {
266 return (NSSCKFWObject *)NULL; 251 return (NSSCKFWObject *)NULL;
267 } 252 }
268 253
269 if (fwFindObjects->mdfo1) { 254 if (fwFindObjects->mdfo1) {
270 if (fwFindObjects->mdfo1->Next) { 255 if (fwFindObjects->mdfo1->Next) {
271 fwFindObjects->mdFindObjects = fwFindObjects->mdfo1; 256 fwFindObjects->mdFindObjects = fwFindObjects->mdfo1;
272 mdObject = fwFindObjects->mdfo1->Next(fwFindObjects->mdfo1, 257 mdObject = fwFindObjects->mdfo1->Next(fwFindObjects->mdfo1,
273 fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession, 258 fwFindObjects, fwFindObjects-> mdSession, fwFindObjects->fwSession,
274 fwFindObjects->mdToken, fwFindObjects->fwToken, 259 fwFindObjects->mdToken, fwFind Objects->fwToken,
275 fwFindObjects->mdInstance, fwFindObjects->fwInstance, 260 fwFindObjects->mdInstance, fwF indObjects->fwInstance,
276 arenaOpt, pError); 261 arenaOpt, pError);
277 if (!mdObject) { 262 if (!mdObject) {
278 if( CKR_OK != *pError ) { 263 if (CKR_OK != *pError) {
279 goto done; 264 goto done;
265 }
266
267 /* All done. */
268 fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects,
269 fwFindObjects->mdSession, fwFindObje cts->fwSession,
270 fwFindObjects->mdToken, fwFindObject s->fwToken,
271 fwFindObjects->mdInstance, fwFindObj ects->fwInstance);
272 fwFindObjects->mdfo1 = (NSSCKMDFindObjects *)NULL;
273 } else {
274 goto wrap;
275 }
280 } 276 }
277 }
281 278
282 /* All done. */ 279 if (fwFindObjects->mdfo2) {
283 fwFindObjects->mdfo1->Final(fwFindObjects->mdfo1, fwFindObjects, 280 if (fwFindObjects->mdfo2->Next) {
284 fwFindObjects->mdSession, fwFindObjects->fwSession, 281 fwFindObjects->mdFindObjects = fwFindObjects->mdfo2;
285 fwFindObjects->mdToken, fwFindObjects->fwToken, 282 mdObject = fwFindObjects->mdfo2->Next(fwFindObjects->mdfo2,
286 fwFindObjects->mdInstance, fwFindObjects->fwInstance); 283 fwFindObjects, fwFindObjects-> mdSession, fwFindObjects->fwSession,
287 fwFindObjects->mdfo1 = (NSSCKMDFindObjects *)NULL; 284 fwFindObjects->mdToken, fwFind Objects->fwToken,
288 } else { 285 fwFindObjects->mdInstance, fwF indObjects->fwInstance,
289 goto wrap; 286 arenaOpt, pError);
290 } 287 if (!mdObject) {
288 if (CKR_OK != *pError) {
289 goto done;
290 }
291
292 /* All done. */
293 fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects,
294 fwFindObjects->mdSession, fwFindObje cts->fwSession,
295 fwFindObjects->mdToken, fwFindObject s->fwToken,
296 fwFindObjects->mdInstance, fwFindObj ects->fwInstance);
297 fwFindObjects->mdfo2 = (NSSCKMDFindObjects *)NULL;
298 } else {
299 goto wrap;
300 }
301 }
291 } 302 }
292 }
293 303
294 if (fwFindObjects->mdfo2) { 304 /* No more objects */
295 if (fwFindObjects->mdfo2->Next) { 305 *pError = CKR_OK;
296 fwFindObjects->mdFindObjects = fwFindObjects->mdfo2; 306 goto done;
297 mdObject = fwFindObjects->mdfo2->Next(fwFindObjects->mdfo2,
298 fwFindObjects, fwFindObjects->mdSession, fwFindObjects->fwSession,
299 fwFindObjects->mdToken, fwFindObjects->fwToken,
300 fwFindObjects->mdInstance, fwFindObjects->fwInstance,
301 arenaOpt, pError);
302 if (!mdObject) {
303 if( CKR_OK != *pError ) {
304 goto done;
305 }
306 307
307 /* All done. */ 308 wrap:
308 fwFindObjects->mdfo2->Final(fwFindObjects->mdfo2, fwFindObjects, 309 /*
309 fwFindObjects->mdSession, fwFindObjects->fwSession,
310 fwFindObjects->mdToken, fwFindObjects->fwToken,
311 fwFindObjects->mdInstance, fwFindObjects->fwInstance);
312 fwFindObjects->mdfo2 = (NSSCKMDFindObjects *)NULL;
313 } else {
314 goto wrap;
315 }
316 }
317 }
318
319 /* No more objects */
320 *pError = CKR_OK;
321 goto done;
322
323 wrap:
324 /*
325 * This seems is less than ideal-- we should determine if it's a token 310 * This seems is less than ideal-- we should determine if it's a token
326 * object or a session object, and use the appropriate arena. 311 * object or a session object, and use the appropriate arena.
327 * But that duplicates logic in nssCKFWObject_IsTokenObject. 312 * But that duplicates logic in nssCKFWObject_IsTokenObject.
328 * Also we should lookup the real session the object was created on 313 * Also we should lookup the real session the object was created on
329 * if the object was a session object... however this code is actually 314 * if the object was a session object... however this code is actually
330 * correct because nssCKFWObject_Create will return a cached version of 315 * correct because nssCKFWObject_Create will return a cached version of
331 * the object from it's hash. This is necessary because 1) we don't want 316 * the object from it's hash. This is necessary because 1) we don't want
332 * to create an arena style leak (where our arena grows with every search), 317 * to create an arena style leak (where our arena grows with every search),
333 * and 2) we want the same object to always have the same ID. This means 318 * and 2) we want the same object to always have the same ID. This means
334 * the only case the nssCKFWObject_Create() will need the objArena and the 319 * the only case the nssCKFWObject_Create() will need the objArena and the
335 * Session is in the case of token objects (session objects should already 320 * Session is in the case of token objects (session objects should already
336 * exist in the cache from their initial creation). So this code is correct, 321 * exist in the cache from their initial creation). So this code is correct,
337 * but it depends on nssCKFWObject_Create caching all objects. 322 * but it depends on nssCKFWObject_Create caching all objects.
338 */ 323 */
339 objArena = nssCKFWToken_GetArena(fwFindObjects->fwToken, pError); 324 objArena = nssCKFWToken_GetArena(fwFindObjects->fwToken, pError);
340 if (!objArena) { 325 if (!objArena) {
341 if( CKR_OK == *pError ) { 326 if (CKR_OK == *pError) {
342 *pError = CKR_HOST_MEMORY; 327 *pError = CKR_HOST_MEMORY;
328 }
329 goto done;
343 } 330 }
344 goto done;
345 }
346 331
347 fwObject = nssCKFWObject_Create(objArena, mdObject, 332 fwObject = nssCKFWObject_Create(objArena, mdObject,
348 NULL, fwFindObjects->fwToken, 333 NULL, fwFindObjects->fwToken,
349 fwFindObjects->fwInstance, pError); 334 fwFindObjects->fwInstance, pError);
350 if (!fwObject) { 335 if (!fwObject) {
351 if( CKR_OK == *pError ) { 336 if (CKR_OK == *pError) {
352 *pError = CKR_GENERAL_ERROR; 337 *pError = CKR_GENERAL_ERROR;
338 }
353 } 339 }
354 }
355 340
356 done: 341 done:
357 (void)nssCKFWMutex_Unlock(fwFindObjects->mutex); 342 (void)nssCKFWMutex_Unlock(fwFindObjects->mutex);
358 return fwObject; 343 return fwObject;
359 } 344 }
360 345
361 /* 346 /*
362 * NSSCKFWFindObjects_GetMDFindObjects 347 * NSSCKFWFindObjects_GetMDFindObjects
363 * 348 *
364 */ 349 */
365 350
366 NSS_EXTERN NSSCKMDFindObjects * 351 NSS_EXTERN NSSCKMDFindObjects *
367 NSSCKFWFindObjects_GetMDFindObjects 352 NSSCKFWFindObjects_GetMDFindObjects(
368 ( 353 NSSCKFWFindObjects *fwFindObjects)
369 NSSCKFWFindObjects *fwFindObjects
370 )
371 { 354 {
372 #ifdef DEBUG 355 #ifdef DEBUG
373 if( CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects) ) { 356 if (CKR_OK != nssCKFWFindObjects_verifyPointer(fwFindObjects)) {
374 return (NSSCKMDFindObjects *)NULL; 357 return (NSSCKMDFindObjects *)NULL;
375 } 358 }
376 #endif /* DEBUG */ 359 #endif /* DEBUG */
377 360
378 return nssCKFWFindObjects_GetMDFindObjects(fwFindObjects); 361 return nssCKFWFindObjects_GetMDFindObjects(fwFindObjects);
379 } 362 }
OLDNEW
« no previous file with comments | « nss/lib/ckfw/crypto.c ('k') | nss/lib/ckfw/hash.c » ('j') | nss/lib/util/secoid.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698