diff options
author | djm <> | 2011-11-03 02:34:33 +0000 |
---|---|---|
committer | djm <> | 2011-11-03 02:34:33 +0000 |
commit | fc7396568e61a510b9336d6c220aaa889c03060f (patch) | |
tree | a8fc08e33aecdd21cb07aa47c8a3a9db715f2ef3 /src/lib/libcrypto/dso/dso_vms.c | |
parent | 1e8701dd2507fadf6d232d93eb4299a8b79c66d5 (diff) | |
download | openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.tar.gz openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.tar.bz2 openbsd-fc7396568e61a510b9336d6c220aaa889c03060f.zip |
openssl-1.0.0e: resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/dso/dso_vms.c')
-rw-r--r-- | src/lib/libcrypto/dso/dso_vms.c | 179 |
1 files changed, 100 insertions, 79 deletions
diff --git a/src/lib/libcrypto/dso/dso_vms.c b/src/lib/libcrypto/dso/dso_vms.c index 321512772a..eee20d14f1 100644 --- a/src/lib/libcrypto/dso/dso_vms.c +++ b/src/lib/libcrypto/dso/dso_vms.c | |||
@@ -68,8 +68,20 @@ | |||
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 | { |
@@ -121,14 +133,13 @@ typedef struct dso_internal_st | |||
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); |
@@ -139,7 +150,22 @@ static int vms_load(DSO *dso) | |||
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) |
@@ -192,7 +218,7 @@ static int vms_load(DSO *dso) | |||
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); |
@@ -290,18 +316,38 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym) | |||
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; |
293 | *sym = NULL; | ||
294 | 319 | ||
295 | symname_dsc.dsc$w_length = strlen(symname); | 320 | /* Arrange 32-bit pointer to (copied) string storage, if needed. */ |
296 | symname_dsc.dsc$b_dtype = DSC$K_DTYPE_T; | 321 | #if __INITIAL_POINTER_SIZE == 64 |
297 | symname_dsc.dsc$b_class = DSC$K_CLASS_S; | 322 | # define SYMNAME symname_32p |
298 | symname_dsc.dsc$a_pointer = (char *)symname; /* The cast is needed */ | 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 | |||
332 | *sym = NULL; | ||
299 | 333 | ||
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 | } |
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 | |||
305 | if(sk_void_num(dso->meth_data) < 1) | 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); |
@@ -372,64 +418,60 @@ static DSO_FUNC_TYPE vms_bind_func(DSO *dso, const char *symname) | |||
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 | ||
@@ -460,33 +502,12 @@ static char *vms_merger(DSO *dso, const char *filespec1, const char *filespec2) | |||
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, |