diff options
Diffstat (limited to 'src/lib/libcrypto/conf/conf.c')
-rw-r--r-- | src/lib/libcrypto/conf/conf.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/lib/libcrypto/conf/conf.c b/src/lib/libcrypto/conf/conf.c index 7d8b89168a..3031fa3b44 100644 --- a/src/lib/libcrypto/conf/conf.c +++ b/src/lib/libcrypto/conf/conf.c | |||
@@ -86,28 +86,25 @@ const char *CONF_version="CONF" OPENSSL_VERSION_PTEXT; | |||
86 | LHASH *CONF_load(LHASH *h, const char *file, long *line) | 86 | LHASH *CONF_load(LHASH *h, const char *file, long *line) |
87 | { | 87 | { |
88 | LHASH *ltmp; | 88 | LHASH *ltmp; |
89 | FILE *in=NULL; | 89 | BIO *in=NULL; |
90 | 90 | ||
91 | #ifdef VMS | 91 | #ifdef VMS |
92 | in=fopen(file,"r"); | 92 | in=BIO_new_file(file, "r"); |
93 | #else | 93 | #else |
94 | in=fopen(file,"rb"); | 94 | in=BIO_new_file(file, "rb"); |
95 | #endif | 95 | #endif |
96 | if (in == NULL) | 96 | if (in == NULL) |
97 | { | 97 | { |
98 | SYSerr(SYS_F_FOPEN,get_last_sys_error()); | ||
99 | ERR_set_error_data(BUF_strdup(file), | ||
100 | ERR_TXT_MALLOCED|ERR_TXT_STRING); | ||
101 | CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB); | 98 | CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB); |
102 | return NULL; | 99 | return NULL; |
103 | } | 100 | } |
104 | 101 | ||
105 | ltmp = CONF_load_fp(h, in, line); | 102 | ltmp = CONF_load_bio(h, in, line); |
106 | fclose(in); | 103 | BIO_free(in); |
107 | 104 | ||
108 | return ltmp; | 105 | return ltmp; |
109 | } | 106 | } |
110 | 107 | #ifndef NO_FP_API | |
111 | LHASH *CONF_load_fp(LHASH *h, FILE *in, long *line) | 108 | LHASH *CONF_load_fp(LHASH *h, FILE *in, long *line) |
112 | { | 109 | { |
113 | BIO *btmp; | 110 | BIO *btmp; |
@@ -120,6 +117,7 @@ LHASH *CONF_load_fp(LHASH *h, FILE *in, long *line) | |||
120 | BIO_free(btmp); | 117 | BIO_free(btmp); |
121 | return ltmp; | 118 | return ltmp; |
122 | } | 119 | } |
120 | #endif | ||
123 | 121 | ||
124 | LHASH *CONF_load_bio(LHASH *h, BIO *in, long *line) | 122 | LHASH *CONF_load_bio(LHASH *h, BIO *in, long *line) |
125 | { | 123 | { |
@@ -338,7 +336,7 @@ again: | |||
338 | ERR_R_MALLOC_FAILURE); | 336 | ERR_R_MALLOC_FAILURE); |
339 | goto err; | 337 | goto err; |
340 | } | 338 | } |
341 | vv=(CONF_VALUE *)lh_insert(ret,(char *)v); | 339 | vv=(CONF_VALUE *)lh_insert(ret,v); |
342 | if (vv != NULL) | 340 | if (vv != NULL) |
343 | { | 341 | { |
344 | sk_CONF_VALUE_delete_ptr(ts,vv); | 342 | sk_CONF_VALUE_delete_ptr(ts,vv); |
@@ -380,7 +378,7 @@ char *CONF_get_string(LHASH *conf, char *section, char *name) | |||
380 | { | 378 | { |
381 | vv.name=name; | 379 | vv.name=name; |
382 | vv.section=section; | 380 | vv.section=section; |
383 | v=(CONF_VALUE *)lh_retrieve(conf,(char *)&vv); | 381 | v=(CONF_VALUE *)lh_retrieve(conf,&vv); |
384 | if (v != NULL) return(v->value); | 382 | if (v != NULL) return(v->value); |
385 | if (strcmp(section,"ENV") == 0) | 383 | if (strcmp(section,"ENV") == 0) |
386 | { | 384 | { |
@@ -390,7 +388,7 @@ char *CONF_get_string(LHASH *conf, char *section, char *name) | |||
390 | } | 388 | } |
391 | vv.section="default"; | 389 | vv.section="default"; |
392 | vv.name=name; | 390 | vv.name=name; |
393 | v=(CONF_VALUE *)lh_retrieve(conf,(char *)&vv); | 391 | v=(CONF_VALUE *)lh_retrieve(conf,&vv); |
394 | if (v != NULL) | 392 | if (v != NULL) |
395 | return(v->value); | 393 | return(v->value); |
396 | else | 394 | else |
@@ -407,7 +405,7 @@ static CONF_VALUE *get_section(LHASH *conf, char *section) | |||
407 | if ((conf == NULL) || (section == NULL)) return(NULL); | 405 | if ((conf == NULL) || (section == NULL)) return(NULL); |
408 | vv.name=NULL; | 406 | vv.name=NULL; |
409 | vv.section=section; | 407 | vv.section=section; |
410 | v=(CONF_VALUE *)lh_retrieve(conf,(char *)&vv); | 408 | v=(CONF_VALUE *)lh_retrieve(conf,&vv); |
411 | return(v); | 409 | return(v); |
412 | } | 410 | } |
413 | 411 | ||
@@ -445,12 +443,12 @@ void CONF_free(LHASH *conf) | |||
445 | 443 | ||
446 | conf->down_load=0; /* evil thing to make sure the 'Free()' | 444 | conf->down_load=0; /* evil thing to make sure the 'Free()' |
447 | * works as expected */ | 445 | * works as expected */ |
448 | lh_doall_arg(conf,(void (*)())value_free_hash,(char *)conf); | 446 | lh_doall_arg(conf,(void (*)())value_free_hash,conf); |
449 | 447 | ||
450 | /* We now have only 'section' entries in the hash table. | 448 | /* We now have only 'section' entries in the hash table. |
451 | * Due to problems with */ | 449 | * Due to problems with */ |
452 | 450 | ||
453 | lh_doall_arg(conf,(void (*)())value_free_stack,(char *)conf); | 451 | lh_doall_arg(conf,(void (*)())value_free_stack,conf); |
454 | lh_free(conf); | 452 | lh_free(conf); |
455 | } | 453 | } |
456 | 454 | ||
@@ -458,7 +456,7 @@ static void value_free_hash(CONF_VALUE *a, LHASH *conf) | |||
458 | { | 456 | { |
459 | if (a->name != NULL) | 457 | if (a->name != NULL) |
460 | { | 458 | { |
461 | a=(CONF_VALUE *)lh_delete(conf,(char *)a); | 459 | a=(CONF_VALUE *)lh_delete(conf,a); |
462 | } | 460 | } |
463 | } | 461 | } |
464 | 462 | ||
@@ -710,7 +708,7 @@ static CONF_VALUE *new_section(LHASH *conf, char *section) | |||
710 | v->name=NULL; | 708 | v->name=NULL; |
711 | v->value=(char *)sk; | 709 | v->value=(char *)sk; |
712 | 710 | ||
713 | vv=(CONF_VALUE *)lh_insert(conf,(char *)v); | 711 | vv=(CONF_VALUE *)lh_insert(conf,v); |
714 | if (vv != NULL) | 712 | if (vv != NULL) |
715 | { | 713 | { |
716 | #if !defined(NO_STDIO) && !defined(WIN16) | 714 | #if !defined(NO_STDIO) && !defined(WIN16) |