summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/txt_db/txt_db.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libcrypto/txt_db/txt_db.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/libcrypto/txt_db/txt_db.c b/src/lib/libcrypto/txt_db/txt_db.c
index 58b300b00b..3ed5f72ee9 100644
--- a/src/lib/libcrypto/txt_db/txt_db.c
+++ b/src/lib/libcrypto/txt_db/txt_db.c
@@ -66,7 +66,7 @@
66#undef BUFSIZE 66#undef BUFSIZE
67#define BUFSIZE 512 67#define BUFSIZE 512
68 68
69const char *TXT_DB_version="TXT_DB" OPENSSL_VERSION_PTEXT; 69const char TXT_DB_version[]="TXT_DB" OPENSSL_VERSION_PTEXT;
70 70
71TXT_DB *TXT_DB_read(BIO *in, int num) 71TXT_DB *TXT_DB_read(BIO *in, int num)
72 { 72 {
@@ -92,7 +92,7 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
92 goto err; 92 goto err;
93 if ((ret->index=(LHASH **)OPENSSL_malloc(sizeof(LHASH *)*num)) == NULL) 93 if ((ret->index=(LHASH **)OPENSSL_malloc(sizeof(LHASH *)*num)) == NULL)
94 goto err; 94 goto err;
95 if ((ret->qual=(int (**)())OPENSSL_malloc(sizeof(int (**)())*num)) == NULL) 95 if ((ret->qual=(int (**)(char **))OPENSSL_malloc(sizeof(int (**)(char **))*num)) == NULL)
96 goto err; 96 goto err;
97 for (i=0; i<num; i++) 97 for (i=0; i<num; i++)
98 { 98 {
@@ -179,10 +179,13 @@ err:
179#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) 179#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16)
180 if (er == 1) fprintf(stderr,"OPENSSL_malloc failure\n"); 180 if (er == 1) fprintf(stderr,"OPENSSL_malloc failure\n");
181#endif 181#endif
182 if (ret->data != NULL) sk_free(ret->data); 182 if (ret != NULL)
183 if (ret->index != NULL) OPENSSL_free(ret->index); 183 {
184 if (ret->qual != NULL) OPENSSL_free(ret->qual); 184 if (ret->data != NULL) sk_free(ret->data);
185 if (ret != NULL) OPENSSL_free(ret); 185 if (ret->index != NULL) OPENSSL_free(ret->index);
186 if (ret->qual != NULL) OPENSSL_free(ret->qual);
187 if (ret != NULL) OPENSSL_free(ret);
188 }
186 return(NULL); 189 return(NULL);
187 } 190 }
188 else 191 else
@@ -210,11 +213,11 @@ char **TXT_DB_get_by_index(TXT_DB *db, int idx, char **value)
210 return(ret); 213 return(ret);
211 } 214 }
212 215
213int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(), 216int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(char **),
214 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp) 217 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp)
215 { 218 {
216 LHASH *idx; 219 LHASH *idx;
217 char *r; 220 char **r;
218 int i,n; 221 int i,n;
219 222
220 if (field >= db->num_fields) 223 if (field >= db->num_fields)
@@ -230,12 +233,12 @@ int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(),
230 n=sk_num(db->data); 233 n=sk_num(db->data);
231 for (i=0; i<n; i++) 234 for (i=0; i<n; i++)
232 { 235 {
233 r=(char *)sk_value(db->data,i); 236 r=(char **)sk_value(db->data,i);
234 if ((qual != NULL) && (qual(r) == 0)) continue; 237 if ((qual != NULL) && (qual(r) == 0)) continue;
235 if ((r=lh_insert(idx,r)) != NULL) 238 if ((r=lh_insert(idx,r)) != NULL)
236 { 239 {
237 db->error=DB_ERROR_INDEX_CLASH; 240 db->error=DB_ERROR_INDEX_CLASH;
238 db->arg1=sk_find(db->data,r); 241 db->arg1=sk_find(db->data,(char *)r);
239 db->arg2=i; 242 db->arg2=i;
240 lh_free(idx); 243 lh_free(idx);
241 return(0); 244 return(0);