summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/by_dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/by_dir.c')
-rw-r--r--src/lib/libcrypto/x509/by_dir.c57
1 files changed, 20 insertions, 37 deletions
diff --git a/src/lib/libcrypto/x509/by_dir.c b/src/lib/libcrypto/x509/by_dir.c
index 11725ec94c..734e39ac77 100644
--- a/src/lib/libcrypto/x509/by_dir.c
+++ b/src/lib/libcrypto/x509/by_dir.c
@@ -63,9 +63,8 @@
63#include <sys/stat.h> 63#include <sys/stat.h>
64 64
65#include "cryptlib.h" 65#include "cryptlib.h"
66#include "lhash.h" 66#include <openssl/lhash.h>
67#include "x509.h" 67#include <openssl/x509.h>
68#include "pem.h"
69 68
70typedef struct lookup_dir_st 69typedef struct lookup_dir_st
71 { 70 {
@@ -76,21 +75,13 @@ typedef struct lookup_dir_st
76 int num_dirs_alloced; 75 int num_dirs_alloced;
77 } BY_DIR; 76 } BY_DIR;
78 77
79#ifndef NOPROTO 78static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
80static int dir_ctrl(X509_LOOKUP *ctx,int cmd,char *argp,long argl,char **ret); 79 char **ret);
81static int new_dir(X509_LOOKUP *lu); 80static int new_dir(X509_LOOKUP *lu);
82static void free_dir(X509_LOOKUP *lu); 81static void free_dir(X509_LOOKUP *lu);
83static int add_cert_dir(BY_DIR *ctx,char *dir,int type); 82static int add_cert_dir(BY_DIR *ctx,const char *dir,int type);
84static int get_cert_by_subject(X509_LOOKUP *xl,int type,X509_NAME *name, 83static int get_cert_by_subject(X509_LOOKUP *xl,int type,X509_NAME *name,
85 X509_OBJECT *ret); 84 X509_OBJECT *ret);
86#else
87static int dir_ctrl();
88static int new_dir();
89static void free_dir();
90static int add_cert_dir();
91static int get_cert_by_subject();
92#endif
93
94X509_LOOKUP_METHOD x509_dir_lookup= 85X509_LOOKUP_METHOD x509_dir_lookup=
95 { 86 {
96 "Load certs from files in a directory", 87 "Load certs from files in a directory",
@@ -105,17 +96,13 @@ X509_LOOKUP_METHOD x509_dir_lookup=
105 NULL, /* get_by_alias */ 96 NULL, /* get_by_alias */
106 }; 97 };
107 98
108X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir() 99X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void)
109 { 100 {
110 return(&x509_dir_lookup); 101 return(&x509_dir_lookup);
111 } 102 }
112 103
113static int dir_ctrl(ctx,cmd,argp,argl,retp) 104static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
114X509_LOOKUP *ctx; 105 char **retp)
115int cmd;
116long argl;
117char *argp;
118char **retp;
119 { 106 {
120 int ret=0; 107 int ret=0;
121 BY_DIR *ld; 108 BY_DIR *ld;
@@ -147,8 +134,7 @@ char **retp;
147 return(ret); 134 return(ret);
148 } 135 }
149 136
150static int new_dir(lu) 137static int new_dir(X509_LOOKUP *lu)
151X509_LOOKUP *lu;
152 { 138 {
153 BY_DIR *a; 139 BY_DIR *a;
154 140
@@ -167,8 +153,7 @@ X509_LOOKUP *lu;
167 return(1); 153 return(1);
168 } 154 }
169 155
170static void free_dir(lu) 156static void free_dir(X509_LOOKUP *lu)
171X509_LOOKUP *lu;
172 { 157 {
173 BY_DIR *a; 158 BY_DIR *a;
174 int i; 159 int i;
@@ -182,17 +167,18 @@ X509_LOOKUP *lu;
182 Free(a); 167 Free(a);
183 } 168 }
184 169
185static int add_cert_dir(ctx,dir, type) 170static int add_cert_dir(BY_DIR *ctx, const char *dir, int type)
186BY_DIR *ctx;
187char *dir;
188int type;
189 { 171 {
190 int j,len; 172 int j,len;
191 int *ip; 173 int *ip;
192 char *s,*ss,*p; 174 const char *s,*ss,*p;
193 char **pp; 175 char **pp;
194 176
195 if (dir == NULL) return(0); 177 if (dir == NULL || !*dir)
178 {
179 X509err(X509_F_ADD_CERT_DIR,X509_R_INVALID_DIRECTORY);
180 return 0;
181 }
196 182
197 s=dir; 183 s=dir;
198 p=s; 184 p=s;
@@ -243,11 +229,8 @@ int type;
243 return(1); 229 return(1);
244 } 230 }
245 231
246static int get_cert_by_subject(xl,type,name,ret) 232static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
247X509_LOOKUP *xl; 233 X509_OBJECT *ret)
248int type;
249X509_NAME *name;
250X509_OBJECT *ret;
251 { 234 {
252 BY_DIR *ctx; 235 BY_DIR *ctx;
253 union { 236 union {
@@ -266,7 +249,7 @@ X509_OBJECT *ret;
266 BUF_MEM *b=NULL; 249 BUF_MEM *b=NULL;
267 struct stat st; 250 struct stat st;
268 X509_OBJECT stmp,*tmp; 251 X509_OBJECT stmp,*tmp;
269 char *postfix=""; 252 const char *postfix="";
270 253
271 if (name == NULL) return(0); 254 if (name == NULL) return(0);
272 255