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

Side by Side Diff: openssl/crypto/dso/dso_vms.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/dso/dso_openssl.c ('k') | openssl/crypto/dso/dso_win32.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* dso_vms.c -*- mode:C; c-file-style: "eay" -*- */ 1 /* dso_vms.c -*- mode:C; c-file-style: "eay" -*- */
2 /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL 2 /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
5 /* ==================================================================== 5 /* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 #include <errno.h> 61 #include <errno.h>
62 #include "cryptlib.h" 62 #include "cryptlib.h"
63 #include <openssl/dso.h> 63 #include <openssl/dso.h>
64 #ifdef OPENSSL_SYS_VMS 64 #ifdef OPENSSL_SYS_VMS
65 #pragma message disable DOLLARID 65 #pragma message disable DOLLARID
66 #include <rms.h> 66 #include <rms.h>
67 #include <lib$routines.h> 67 #include <lib$routines.h>
68 #include <stsdef.h> 68 #include <stsdef.h>
69 #include <descrip.h> 69 #include <descrip.h>
70 #include <starlet.h> 70 #include <starlet.h>
71 #include "vms_rms.h"
71 #endif 72 #endif
72 73
74 /* Some compiler options may mask the declaration of "_malloc32". */
75 #if __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE
76 # if __INITIAL_POINTER_SIZE == 64
77 # pragma pointer_size save
78 # pragma pointer_size 32
79 void * _malloc32 (__size_t);
80 # pragma pointer_size restore
81 # endif /* __INITIAL_POINTER_SIZE == 64 */
82 #endif /* __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE */
83
84
73 #ifndef OPENSSL_SYS_VMS 85 #ifndef OPENSSL_SYS_VMS
74 DSO_METHOD *DSO_METHOD_vms(void) 86 DSO_METHOD *DSO_METHOD_vms(void)
75 { 87 {
76 return NULL; 88 return NULL;
77 } 89 }
78 #else 90 #else
79 #pragma message disable DOLLARID 91 #pragma message disable DOLLARID
80 92
81 static int vms_load(DSO *dso); 93 static int vms_load(DSO *dso);
82 static int vms_unload(DSO *dso); 94 static int vms_unload(DSO *dso);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 /* On VMS, the only "handle" is the file name. LIB$FIND_IMAGE_SYMBOL depends 126 /* On VMS, the only "handle" is the file name. LIB$FIND_IMAGE_SYMBOL depends
115 * on the reference to the file name being the same for all calls regarding 127 * on the reference to the file name being the same for all calls regarding
116 * one shared image, so we'll just store it in an instance of the following 128 * one shared image, so we'll just store it in an instance of the following
117 * structure and put a pointer to that instance in the meth_data stack. 129 * structure and put a pointer to that instance in the meth_data stack.
118 */ 130 */
119 typedef struct dso_internal_st 131 typedef struct dso_internal_st
120 { 132 {
121 /* This should contain the name only, no directory, 133 /* This should contain the name only, no directory,
122 * no extension, nothing but a name. */ 134 * no extension, nothing but a name. */
123 struct dsc$descriptor_s filename_dsc; 135 struct dsc$descriptor_s filename_dsc;
124 » char filename[FILENAME_MAX+1]; 136 » char filename[ NAMX_MAXRSS+ 1];
125 /* This contains whatever is not in filename, if needed. 137 /* This contains whatever is not in filename, if needed.
126 * Normally not defined. */ 138 * Normally not defined. */
127 struct dsc$descriptor_s imagename_dsc; 139 struct dsc$descriptor_s imagename_dsc;
128 » char imagename[FILENAME_MAX+1]; 140 » char imagename[ NAMX_MAXRSS+ 1];
129 } DSO_VMS_INTERNAL; 141 } DSO_VMS_INTERNAL;
130 142
131
132 DSO_METHOD *DSO_METHOD_vms(void) 143 DSO_METHOD *DSO_METHOD_vms(void)
133 { 144 {
134 return(&dso_meth_vms); 145 return(&dso_meth_vms);
135 } 146 }
136 147
137 static int vms_load(DSO *dso) 148 static int vms_load(DSO *dso)
138 { 149 {
139 void *ptr = NULL; 150 void *ptr = NULL;
140 /* See applicable comments in dso_dl.c */ 151 /* See applicable comments in dso_dl.c */
141 char *filename = DSO_convert_filename(dso, NULL); 152 char *filename = DSO_convert_filename(dso, NULL);
142 » DSO_VMS_INTERNAL *p; 153
154 /* Ensure 32-bit pointer for "p", and appropriate malloc() function. */
155 #if __INITIAL_POINTER_SIZE == 64
156 # define DSO_MALLOC _malloc32
157 # pragma pointer_size save
158 # pragma pointer_size 32
159 #else /* __INITIAL_POINTER_SIZE == 64 */
160 # define DSO_MALLOC OPENSSL_malloc
161 #endif /* __INITIAL_POINTER_SIZE == 64 [else] */
162
163 » DSO_VMS_INTERNAL *p = NULL;
164
165 #if __INITIAL_POINTER_SIZE == 64
166 # pragma pointer_size restore
167 #endif /* __INITIAL_POINTER_SIZE == 64 */
168
143 const char *sp1, *sp2; /* Search result */ 169 const char *sp1, *sp2; /* Search result */
144 170
145 if(filename == NULL) 171 if(filename == NULL)
146 { 172 {
147 DSOerr(DSO_F_VMS_LOAD,DSO_R_NO_FILENAME); 173 DSOerr(DSO_F_VMS_LOAD,DSO_R_NO_FILENAME);
148 goto err; 174 goto err;
149 } 175 }
150 176
151 /* A file specification may look like this: 177 /* A file specification may look like this:
152 * 178 *
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 if (sp2 == NULL) sp2 = sp1 + strlen(sp1); 211 if (sp2 == NULL) sp2 = sp1 + strlen(sp1);
186 212
187 /* Check that we won't get buffer overflows */ 213 /* Check that we won't get buffer overflows */
188 if (sp2 - sp1 > FILENAME_MAX 214 if (sp2 - sp1 > FILENAME_MAX
189 || (sp1 - filename) + strlen(sp2) > FILENAME_MAX) 215 || (sp1 - filename) + strlen(sp2) > FILENAME_MAX)
190 { 216 {
191 DSOerr(DSO_F_VMS_LOAD,DSO_R_FILENAME_TOO_BIG); 217 DSOerr(DSO_F_VMS_LOAD,DSO_R_FILENAME_TOO_BIG);
192 goto err; 218 goto err;
193 } 219 }
194 220
195 » p = (DSO_VMS_INTERNAL *)OPENSSL_malloc(sizeof(DSO_VMS_INTERNAL)); 221 » p = DSO_MALLOC(sizeof(DSO_VMS_INTERNAL));
196 if(p == NULL) 222 if(p == NULL)
197 { 223 {
198 DSOerr(DSO_F_VMS_LOAD,ERR_R_MALLOC_FAILURE); 224 DSOerr(DSO_F_VMS_LOAD,ERR_R_MALLOC_FAILURE);
199 goto err; 225 goto err;
200 } 226 }
201 227
202 strncpy(p->filename, sp1, sp2-sp1); 228 strncpy(p->filename, sp1, sp2-sp1);
203 p->filename[sp2-sp1] = '\0'; 229 p->filename[sp2-sp1] = '\0';
204 230
205 strncpy(p->imagename, filename, sp1-filename); 231 strncpy(p->imagename, filename, sp1-filename);
206 p->imagename[sp1-filename] = '\0'; 232 p->imagename[sp1-filename] = '\0';
207 strcat(p->imagename, sp2); 233 strcat(p->imagename, sp2);
208 234
209 p->filename_dsc.dsc$w_length = strlen(p->filename); 235 p->filename_dsc.dsc$w_length = strlen(p->filename);
210 p->filename_dsc.dsc$b_dtype = DSC$K_DTYPE_T; 236 p->filename_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
211 p->filename_dsc.dsc$b_class = DSC$K_CLASS_S; 237 p->filename_dsc.dsc$b_class = DSC$K_CLASS_S;
212 p->filename_dsc.dsc$a_pointer = p->filename; 238 p->filename_dsc.dsc$a_pointer = p->filename;
213 p->imagename_dsc.dsc$w_length = strlen(p->imagename); 239 p->imagename_dsc.dsc$w_length = strlen(p->imagename);
214 p->imagename_dsc.dsc$b_dtype = DSC$K_DTYPE_T; 240 p->imagename_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
215 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S; 241 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S;
216 p->imagename_dsc.dsc$a_pointer = p->imagename; 242 p->imagename_dsc.dsc$a_pointer = p->imagename;
217 243
218 » if(!sk_push(dso->meth_data, (char *)p)) 244 » if(!sk_void_push(dso->meth_data, (char *)p))
219 { 245 {
220 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR); 246 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR);
221 goto err; 247 goto err;
222 } 248 }
223 249
224 /* Success (for now, we lie. We actually do not know...) */ 250 /* Success (for now, we lie. We actually do not know...) */
225 dso->loaded_filename = filename; 251 dso->loaded_filename = filename;
226 return(1); 252 return(1);
227 err: 253 err:
228 /* Cleanup! */ 254 /* Cleanup! */
229 if(p != NULL) 255 if(p != NULL)
230 OPENSSL_free(p); 256 OPENSSL_free(p);
231 if(filename != NULL) 257 if(filename != NULL)
232 OPENSSL_free(filename); 258 OPENSSL_free(filename);
233 return(0); 259 return(0);
234 } 260 }
235 261
236 /* Note that this doesn't actually unload the shared image, as there is no 262 /* Note that this doesn't actually unload the shared image, as there is no
237 * such thing in VMS. Next time it get loaded again, a new copy will 263 * such thing in VMS. Next time it get loaded again, a new copy will
238 * actually be loaded. 264 * actually be loaded.
239 */ 265 */
240 static int vms_unload(DSO *dso) 266 static int vms_unload(DSO *dso)
241 { 267 {
242 DSO_VMS_INTERNAL *p; 268 DSO_VMS_INTERNAL *p;
243 if(dso == NULL) 269 if(dso == NULL)
244 { 270 {
245 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 271 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
246 return(0); 272 return(0);
247 } 273 }
248 » if(sk_num(dso->meth_data) < 1) 274 » if(sk_void_num(dso->meth_data) < 1)
249 return(1); 275 return(1);
250 » p = (DSO_VMS_INTERNAL *)sk_pop(dso->meth_data); 276 » p = (DSO_VMS_INTERNAL *)sk_void_pop(dso->meth_data);
251 if(p == NULL) 277 if(p == NULL)
252 { 278 {
253 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE); 279 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE);
254 return(0); 280 return(0);
255 } 281 }
256 /* Cleanup */ 282 /* Cleanup */
257 OPENSSL_free(p); 283 OPENSSL_free(p);
258 return(1); 284 return(1);
259 } 285 }
260 286
(...skipping 22 matching lines...) Expand all
283 { 309 {
284 DSO_VMS_INTERNAL *ptr; 310 DSO_VMS_INTERNAL *ptr;
285 int status; 311 int status;
286 #if 0 312 #if 0
287 int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't 313 int flags = (1<<4); /* LIB$M_FIS_MIXEDCASE, but this symbol isn't
288 defined in VMS older than 7.0 or so */ 314 defined in VMS older than 7.0 or so */
289 #else 315 #else
290 int flags = 0; 316 int flags = 0;
291 #endif 317 #endif
292 struct dsc$descriptor_s symname_dsc; 318 struct dsc$descriptor_s symname_dsc;
319
320 /* Arrange 32-bit pointer to (copied) string storage, if needed. */
321 #if __INITIAL_POINTER_SIZE == 64
322 # define SYMNAME symname_32p
323 # pragma pointer_size save
324 # pragma pointer_size 32
325 char *symname_32p;
326 # pragma pointer_size restore
327 char symname_32[ NAMX_MAXRSS+ 1];
328 #else /* __INITIAL_POINTER_SIZE == 64 */
329 # define SYMNAME ((char *) symname)
330 #endif /* __INITIAL_POINTER_SIZE == 64 [else] */
331
293 *sym = NULL; 332 *sym = NULL;
294 333
295 symname_dsc.dsc$w_length = strlen(symname);
296 symname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
297 symname_dsc.dsc$b_class = DSC$K_CLASS_S;
298 symname_dsc.dsc$a_pointer = (char *)symname; /* The cast is needed */
299
300 if((dso == NULL) || (symname == NULL)) 334 if((dso == NULL) || (symname == NULL))
301 { 335 {
302 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER); 336 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER);
303 return; 337 return;
304 } 338 }
305 » if(sk_num(dso->meth_data) < 1) 339
340 #if __INITIAL_POINTER_SIZE == 64
341 » /* Copy the symbol name to storage with a 32-bit pointer. */
342 » symname_32p = symname_32;
343 » strcpy( symname_32p, symname);
344 #endif /* __INITIAL_POINTER_SIZE == 64 [else] */
345
346 » symname_dsc.dsc$w_length = strlen(SYMNAME);
347 » symname_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
348 » symname_dsc.dsc$b_class = DSC$K_CLASS_S;
349 » symname_dsc.dsc$a_pointer = SYMNAME;
350
351 » if(sk_void_num(dso->meth_data) < 1)
306 { 352 {
307 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR); 353 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR);
308 return; 354 return;
309 } 355 }
310 » ptr = (DSO_VMS_INTERNAL *)sk_value(dso->meth_data, 356 » ptr = (DSO_VMS_INTERNAL *)sk_void_value(dso->meth_data,
311 » » sk_num(dso->meth_data) - 1); 357 » » sk_void_num(dso->meth_data) - 1);
312 if(ptr == NULL) 358 if(ptr == NULL)
313 { 359 {
314 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE); 360 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE);
315 return; 361 return;
316 } 362 }
317 363
318 if(dso->flags & DSO_FLAG_UPCASE_SYMBOL) flags = 0; 364 if(dso->flags & DSO_FLAG_UPCASE_SYMBOL) flags = 0;
319 365
320 status = do_find_symbol(ptr, &symname_dsc, sym, flags); 366 status = do_find_symbol(ptr, &symname_dsc, sym, flags);
321 367
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 return sym; 411 return sym;
366 } 412 }
367 413
368 static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname) 414 static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname)
369 { 415 {
370 DSO_FUNC_TYPE sym = 0; 416 DSO_FUNC_TYPE sym = 0;
371 vms_bind_sym(dso, symname, (void **)&sym); 417 vms_bind_sym(dso, symname, (void **)&sym);
372 return sym; 418 return sym;
373 } 419 }
374 420
421
375 static char *vms_merger(DSO *dso, const char *filespec1, const char *filespec2) 422 static char *vms_merger(DSO *dso, const char *filespec1, const char *filespec2)
376 { 423 {
377 int status; 424 int status;
378 int filespec1len, filespec2len; 425 int filespec1len, filespec2len;
379 struct FAB fab; 426 struct FAB fab;
380 #ifdef NAML$C_MAXRSS 427 » struct NAMX_STRUCT nam;
381 » struct NAML nam; 428 » char esa[ NAMX_MAXRSS+ 1];
382 » char esa[NAML$C_MAXRSS];
383 #else
384 » struct NAM nam;
385 » char esa[NAM$C_MAXRSS];
386 #endif
387 char *merged; 429 char *merged;
388 430
431 /* Arrange 32-bit pointer to (copied) string storage, if needed. */
432 #if __INITIAL_POINTER_SIZE == 64
433 # define FILESPEC1 filespec1_32p;
434 # define FILESPEC2 filespec2_32p;
435 # pragma pointer_size save
436 # pragma pointer_size 32
437 char *filespec1_32p;
438 char *filespec2_32p;
439 # pragma pointer_size restore
440 char filespec1_32[ NAMX_MAXRSS+ 1];
441 char filespec2_32[ NAMX_MAXRSS+ 1];
442 #else /* __INITIAL_POINTER_SIZE == 64 */
443 # define FILESPEC1 ((char *) filespec1)
444 # define FILESPEC2 ((char *) filespec2)
445 #endif /* __INITIAL_POINTER_SIZE == 64 [else] */
446
389 if (!filespec1) filespec1 = ""; 447 if (!filespec1) filespec1 = "";
390 if (!filespec2) filespec2 = ""; 448 if (!filespec2) filespec2 = "";
391 filespec1len = strlen(filespec1); 449 filespec1len = strlen(filespec1);
392 filespec2len = strlen(filespec2); 450 filespec2len = strlen(filespec2);
393 451
452 #if __INITIAL_POINTER_SIZE == 64
453 /* Copy the file names to storage with a 32-bit pointer. */
454 filespec1_32p = filespec1_32;
455 filespec2_32p = filespec2_32;
456 strcpy( filespec1_32p, filespec1);
457 strcpy( filespec2_32p, filespec2);
458 #endif /* __INITIAL_POINTER_SIZE == 64 [else] */
459
394 fab = cc$rms_fab; 460 fab = cc$rms_fab;
395 #ifdef NAML$C_MAXRSS 461 » nam = CC_RMS_NAMX;
396 » nam = cc$rms_naml;
397 #else
398 » nam = cc$rms_nam;
399 #endif
400 462
401 » fab.fab$l_fna = (char *)filespec1; 463 » FAB_OR_NAML( fab, nam).FAB_OR_NAML_FNA = FILESPEC1;
402 » fab.fab$b_fns = filespec1len; 464 » FAB_OR_NAML( fab, nam).FAB_OR_NAML_FNS = filespec1len;
403 » fab.fab$l_dna = (char *)filespec2; 465 » FAB_OR_NAML( fab, nam).FAB_OR_NAML_DNA = FILESPEC2;
404 » fab.fab$b_dns = filespec2len; 466 » FAB_OR_NAML( fab, nam).FAB_OR_NAML_DNS = filespec2len;
405 #ifdef NAML$C_MAXRSS 467 » NAMX_DNA_FNA_SET( fab)
406 » if (filespec1len > NAM$C_MAXRSS) 468
407 » » { 469 » nam.NAMX_ESA = esa;
408 » » fab.fab$l_fna = 0; 470 » nam.NAMX_ESS = NAMX_MAXRSS;
409 » » fab.fab$b_fns = 0; 471 » nam.NAMX_NOP = NAM$M_SYNCHK | NAM$M_PWD;
410 » » nam.naml$l_long_filename = (char *)filespec1; 472 » SET_NAMX_NO_SHORT_UPCASE( nam);
411 » » nam.naml$l_long_filename_size = filespec1len; 473
412 » » } 474 » fab.FAB_NAMX = &nam;
413 » if (filespec2len > NAM$C_MAXRSS)
414 » » {
415 » » fab.fab$l_dna = 0;
416 » » fab.fab$b_dns = 0;
417 » » nam.naml$l_long_defname = (char *)filespec2;
418 » » nam.naml$l_long_defname_size = filespec2len;
419 » » }
420 » nam.naml$l_esa = esa;
421 » nam.naml$b_ess = NAM$C_MAXRSS;
422 » nam.naml$l_long_expand = esa;
423 » nam.naml$l_long_expand_alloc = sizeof(esa);
424 » nam.naml$b_nop = NAM$M_SYNCHK | NAM$M_PWD;
425 » nam.naml$v_no_short_upcase = 1;
426 » fab.fab$l_naml = &nam;
427 #else
428 » nam.nam$l_esa = esa;
429 » nam.nam$b_ess = NAM$C_MAXRSS;
430 » nam.nam$b_nop = NAM$M_SYNCHK | NAM$M_PWD;
431 » fab.fab$l_nam = &nam;
432 #endif
433 475
434 status = sys$parse(&fab, 0, 0); 476 status = sys$parse(&fab, 0, 0);
435 477
436 if(!$VMS_STATUS_SUCCESS(status)) 478 if(!$VMS_STATUS_SUCCESS(status))
437 { 479 {
438 unsigned short length; 480 unsigned short length;
439 char errstring[257]; 481 char errstring[257];
440 struct dsc$descriptor_s errstring_dsc; 482 struct dsc$descriptor_s errstring_dsc;
441 483
442 errstring_dsc.dsc$w_length = sizeof(errstring); 484 errstring_dsc.dsc$w_length = sizeof(errstring);
(...skipping 10 matching lines...) Expand all
453 errstring[length] = '\0'; 495 errstring[length] = '\0';
454 496
455 DSOerr(DSO_F_VMS_MERGER,DSO_R_FAILURE); 497 DSOerr(DSO_F_VMS_MERGER,DSO_R_FAILURE);
456 ERR_add_error_data(7, 498 ERR_add_error_data(7,
457 "filespec \"", filespec1, "\", ", 499 "filespec \"", filespec1, "\", ",
458 "defaults \"", filespec2, "\": ", 500 "defaults \"", filespec2, "\": ",
459 errstring); 501 errstring);
460 } 502 }
461 return(NULL); 503 return(NULL);
462 } 504 }
463 #ifdef NAML$C_MAXRSS 505
464 » if (nam.naml$l_long_expand_size) 506 » merged = OPENSSL_malloc( nam.NAMX_ESL+ 1);
465 » » {
466 » » merged = OPENSSL_malloc(nam.naml$l_long_expand_size + 1);
467 » » if(!merged)
468 » » » goto malloc_err;
469 » » strncpy(merged, nam.naml$l_long_expand,
470 » » » nam.naml$l_long_expand_size);
471 » » merged[nam.naml$l_long_expand_size] = '\0';
472 » » }
473 » else
474 » » {
475 » » merged = OPENSSL_malloc(nam.naml$b_esl + 1);
476 » » if(!merged)
477 » » » goto malloc_err;
478 » » strncpy(merged, nam.naml$l_esa,
479 » » » nam.naml$b_esl);
480 » » merged[nam.naml$b_esl] = '\0';
481 » » }
482 #else
483 » merged = OPENSSL_malloc(nam.nam$b_esl + 1);
484 if(!merged) 507 if(!merged)
485 goto malloc_err; 508 goto malloc_err;
486 » strncpy(merged, nam.nam$l_esa, 509 » strncpy( merged, nam.NAMX_ESA, nam.NAMX_ESL);
487 » » nam.nam$b_esl); 510 » merged[ nam.NAMX_ESL] = '\0';
488 » merged[nam.nam$b_esl] = '\0';
489 #endif
490 return(merged); 511 return(merged);
491 malloc_err: 512 malloc_err:
492 DSOerr(DSO_F_VMS_MERGER, 513 DSOerr(DSO_F_VMS_MERGER,
493 ERR_R_MALLOC_FAILURE); 514 ERR_R_MALLOC_FAILURE);
494 } 515 }
495 516
496 static char *vms_name_converter(DSO *dso, const char *filename) 517 static char *vms_name_converter(DSO *dso, const char *filename)
497 { 518 {
498 int len = strlen(filename); 519 int len = strlen(filename);
499 char *not_translated = OPENSSL_malloc(len+1); 520 char *not_translated = OPENSSL_malloc(len+1);
500 strcpy(not_translated,filename); 521 strcpy(not_translated,filename);
501 return(not_translated); 522 return(not_translated);
502 } 523 }
503 524
504 #endif /* OPENSSL_SYS_VMS */ 525 #endif /* OPENSSL_SYS_VMS */
OLDNEW
« no previous file with comments | « openssl/crypto/dso/dso_openssl.c ('k') | openssl/crypto/dso/dso_win32.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698