| OLD | NEW |
| 1 /* conf_lib.c */ | 1 /* conf_lib.c */ |
| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 #include <openssl/conf.h> | 62 #include <openssl/conf.h> |
| 63 #include <openssl/conf_api.h> | 63 #include <openssl/conf_api.h> |
| 64 #include <openssl/lhash.h> | 64 #include <openssl/lhash.h> |
| 65 | 65 |
| 66 const char CONF_version[]="CONF" OPENSSL_VERSION_PTEXT; | 66 const char CONF_version[]="CONF" OPENSSL_VERSION_PTEXT; |
| 67 | 67 |
| 68 static CONF_METHOD *default_CONF_method=NULL; | 68 static CONF_METHOD *default_CONF_method=NULL; |
| 69 | 69 |
| 70 /* Init a 'CONF' structure from an old LHASH */ | 70 /* Init a 'CONF' structure from an old LHASH */ |
| 71 | 71 |
| 72 void CONF_set_nconf(CONF *conf, LHASH *hash) | 72 void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash) |
| 73 { | 73 { |
| 74 if (default_CONF_method == NULL) | 74 if (default_CONF_method == NULL) |
| 75 default_CONF_method = NCONF_default(); | 75 default_CONF_method = NCONF_default(); |
| 76 | 76 |
| 77 default_CONF_method->init(conf); | 77 default_CONF_method->init(conf); |
| 78 conf->data = hash; | 78 conf->data = hash; |
| 79 } | 79 } |
| 80 | 80 |
| 81 /* The following section contains the "CONF classic" functions, | 81 /* The following section contains the "CONF classic" functions, |
| 82 rewritten in terms of the new CONF interface. */ | 82 rewritten in terms of the new CONF interface. */ |
| 83 | 83 |
| 84 int CONF_set_default_method(CONF_METHOD *meth) | 84 int CONF_set_default_method(CONF_METHOD *meth) |
| 85 { | 85 { |
| 86 default_CONF_method = meth; | 86 default_CONF_method = meth; |
| 87 return 1; | 87 return 1; |
| 88 } | 88 } |
| 89 | 89 |
| 90 LHASH *CONF_load(LHASH *conf, const char *file, long *eline) | 90 LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, |
| 91 » » » » long *eline) |
| 91 { | 92 { |
| 92 » LHASH *ltmp; | 93 » LHASH_OF(CONF_VALUE) *ltmp; |
| 93 BIO *in=NULL; | 94 BIO *in=NULL; |
| 94 | 95 |
| 95 #ifdef OPENSSL_SYS_VMS | 96 #ifdef OPENSSL_SYS_VMS |
| 96 in=BIO_new_file(file, "r"); | 97 in=BIO_new_file(file, "r"); |
| 97 #else | 98 #else |
| 98 in=BIO_new_file(file, "rb"); | 99 in=BIO_new_file(file, "rb"); |
| 99 #endif | 100 #endif |
| 100 if (in == NULL) | 101 if (in == NULL) |
| 101 { | 102 { |
| 102 CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB); | 103 CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB); |
| 103 return NULL; | 104 return NULL; |
| 104 } | 105 } |
| 105 | 106 |
| 106 ltmp = CONF_load_bio(conf, in, eline); | 107 ltmp = CONF_load_bio(conf, in, eline); |
| 107 BIO_free(in); | 108 BIO_free(in); |
| 108 | 109 |
| 109 return ltmp; | 110 return ltmp; |
| 110 } | 111 } |
| 111 | 112 |
| 112 #ifndef OPENSSL_NO_FP_API | 113 #ifndef OPENSSL_NO_FP_API |
| 113 LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline) | 114 LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, |
| 115 » » » » long *eline) |
| 114 { | 116 { |
| 115 BIO *btmp; | 117 BIO *btmp; |
| 116 » LHASH *ltmp; | 118 » LHASH_OF(CONF_VALUE) *ltmp; |
| 117 if(!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) { | 119 if(!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) { |
| 118 CONFerr(CONF_F_CONF_LOAD_FP,ERR_R_BUF_LIB); | 120 CONFerr(CONF_F_CONF_LOAD_FP,ERR_R_BUF_LIB); |
| 119 return NULL; | 121 return NULL; |
| 120 } | 122 } |
| 121 ltmp = CONF_load_bio(conf, btmp, eline); | 123 ltmp = CONF_load_bio(conf, btmp, eline); |
| 122 BIO_free(btmp); | 124 BIO_free(btmp); |
| 123 return ltmp; | 125 return ltmp; |
| 124 } | 126 } |
| 125 #endif | 127 #endif |
| 126 | 128 |
| 127 LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline) | 129 LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, |
| 130 » » » » long *eline) |
| 128 { | 131 { |
| 129 CONF ctmp; | 132 CONF ctmp; |
| 130 int ret; | 133 int ret; |
| 131 | 134 |
| 132 CONF_set_nconf(&ctmp, conf); | 135 CONF_set_nconf(&ctmp, conf); |
| 133 | 136 |
| 134 ret = NCONF_load_bio(&ctmp, bp, eline); | 137 ret = NCONF_load_bio(&ctmp, bp, eline); |
| 135 if (ret) | 138 if (ret) |
| 136 return ctmp.data; | 139 return ctmp.data; |
| 137 return NULL; | 140 return NULL; |
| 138 } | 141 } |
| 139 | 142 |
| 140 STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,const char *section) | 143 STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, |
| 144 » » » » const char *section) |
| 141 { | 145 { |
| 142 if (conf == NULL) | 146 if (conf == NULL) |
| 143 { | 147 { |
| 144 return NULL; | 148 return NULL; |
| 145 } | 149 } |
| 146 else | 150 else |
| 147 { | 151 { |
| 148 CONF ctmp; | 152 CONF ctmp; |
| 149 CONF_set_nconf(&ctmp, conf); | 153 CONF_set_nconf(&ctmp, conf); |
| 150 return NCONF_get_section(&ctmp, section); | 154 return NCONF_get_section(&ctmp, section); |
| 151 } | 155 } |
| 152 } | 156 } |
| 153 | 157 |
| 154 char *CONF_get_string(LHASH *conf,const char *group,const char *name) | 158 char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf,const char *group, |
| 159 » » const char *name) |
| 155 { | 160 { |
| 156 if (conf == NULL) | 161 if (conf == NULL) |
| 157 { | 162 { |
| 158 return NCONF_get_string(NULL, group, name); | 163 return NCONF_get_string(NULL, group, name); |
| 159 } | 164 } |
| 160 else | 165 else |
| 161 { | 166 { |
| 162 CONF ctmp; | 167 CONF ctmp; |
| 163 CONF_set_nconf(&ctmp, conf); | 168 CONF_set_nconf(&ctmp, conf); |
| 164 return NCONF_get_string(&ctmp, group, name); | 169 return NCONF_get_string(&ctmp, group, name); |
| 165 } | 170 } |
| 166 } | 171 } |
| 167 | 172 |
| 168 long CONF_get_number(LHASH *conf,const char *group,const char *name) | 173 long CONF_get_number(LHASH_OF(CONF_VALUE) *conf,const char *group, |
| 174 » » const char *name) |
| 169 { | 175 { |
| 170 int status; | 176 int status; |
| 171 long result = 0; | 177 long result = 0; |
| 172 | 178 |
| 173 if (conf == NULL) | 179 if (conf == NULL) |
| 174 { | 180 { |
| 175 status = NCONF_get_number_e(NULL, group, name, &result); | 181 status = NCONF_get_number_e(NULL, group, name, &result); |
| 176 } | 182 } |
| 177 else | 183 else |
| 178 { | 184 { |
| 179 CONF ctmp; | 185 CONF ctmp; |
| 180 CONF_set_nconf(&ctmp, conf); | 186 CONF_set_nconf(&ctmp, conf); |
| 181 status = NCONF_get_number_e(&ctmp, group, name, &result); | 187 status = NCONF_get_number_e(&ctmp, group, name, &result); |
| 182 } | 188 } |
| 183 | 189 |
| 184 if (status == 0) | 190 if (status == 0) |
| 185 { | 191 { |
| 186 /* This function does not believe in errors... */ | 192 /* This function does not believe in errors... */ |
| 187 ERR_clear_error(); | 193 ERR_clear_error(); |
| 188 } | 194 } |
| 189 return result; | 195 return result; |
| 190 } | 196 } |
| 191 | 197 |
| 192 void CONF_free(LHASH *conf) | 198 void CONF_free(LHASH_OF(CONF_VALUE) *conf) |
| 193 { | 199 { |
| 194 CONF ctmp; | 200 CONF ctmp; |
| 195 CONF_set_nconf(&ctmp, conf); | 201 CONF_set_nconf(&ctmp, conf); |
| 196 NCONF_free_data(&ctmp); | 202 NCONF_free_data(&ctmp); |
| 197 } | 203 } |
| 198 | 204 |
| 199 #ifndef OPENSSL_NO_FP_API | 205 #ifndef OPENSSL_NO_FP_API |
| 200 int CONF_dump_fp(LHASH *conf, FILE *out) | 206 int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out) |
| 201 { | 207 { |
| 202 BIO *btmp; | 208 BIO *btmp; |
| 203 int ret; | 209 int ret; |
| 204 | 210 |
| 205 if(!(btmp = BIO_new_fp(out, BIO_NOCLOSE))) { | 211 if(!(btmp = BIO_new_fp(out, BIO_NOCLOSE))) { |
| 206 CONFerr(CONF_F_CONF_DUMP_FP,ERR_R_BUF_LIB); | 212 CONFerr(CONF_F_CONF_DUMP_FP,ERR_R_BUF_LIB); |
| 207 return 0; | 213 return 0; |
| 208 } | 214 } |
| 209 ret = CONF_dump_bio(conf, btmp); | 215 ret = CONF_dump_bio(conf, btmp); |
| 210 BIO_free(btmp); | 216 BIO_free(btmp); |
| 211 return ret; | 217 return ret; |
| 212 } | 218 } |
| 213 #endif | 219 #endif |
| 214 | 220 |
| 215 int CONF_dump_bio(LHASH *conf, BIO *out) | 221 int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out) |
| 216 { | 222 { |
| 217 CONF ctmp; | 223 CONF ctmp; |
| 218 CONF_set_nconf(&ctmp, conf); | 224 CONF_set_nconf(&ctmp, conf); |
| 219 return NCONF_dump_bio(&ctmp, out); | 225 return NCONF_dump_bio(&ctmp, out); |
| 220 } | 226 } |
| 221 | 227 |
| 222 /* The following section contains the "New CONF" functions. They are | 228 /* The following section contains the "New CONF" functions. They are |
| 223 completely centralised around a new CONF structure that may contain | 229 completely centralised around a new CONF structure that may contain |
| 224 basically anything, but at least a method pointer and a table of data. | 230 basically anything, but at least a method pointer and a table of data. |
| 225 These functions are also written in terms of the bridge functions used | 231 These functions are also written in terms of the bridge functions used |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 | 398 |
| 393 status = NCONF_get_number_e(conf, group, name, &ret); | 399 status = NCONF_get_number_e(conf, group, name, &ret); |
| 394 if (status == 0) | 400 if (status == 0) |
| 395 { | 401 { |
| 396 /* This function does not believe in errors... */ | 402 /* This function does not believe in errors... */ |
| 397 ERR_get_error(); | 403 ERR_get_error(); |
| 398 } | 404 } |
| 399 return ret; | 405 return ret; |
| 400 } | 406 } |
| 401 #endif | 407 #endif |
| OLD | NEW |