basicauth: use sblist
This commit is contained in:
parent
487f2aba47
commit
a5381223df
@ -48,10 +48,10 @@ ssize_t basicauth_string(const char *user, const char *pass,
|
||||
/*
|
||||
* Add entry to the basicauth list
|
||||
*/
|
||||
void basicauth_add (vector_t authlist,
|
||||
void basicauth_add (sblist *authlist,
|
||||
const char *user, const char *pass)
|
||||
{
|
||||
char b[BASE64ENC_BYTES((256+2)-1) + 1];
|
||||
char b[BASE64ENC_BYTES((256+2)-1) + 1], *s;
|
||||
ssize_t ret;
|
||||
|
||||
ret = basicauth_string(user, pass, b, sizeof b);
|
||||
@ -65,7 +65,8 @@ void basicauth_add (vector_t authlist,
|
||||
return;
|
||||
}
|
||||
|
||||
if (vector_append(authlist, b, ret + 1) == -ENOMEM) {
|
||||
if (!(s = safestrdup(b)) || !sblist_add(authlist, &s)) {
|
||||
safefree(s);
|
||||
log_message (LOG_ERR,
|
||||
"Unable to allocate memory in basicauth_add()");
|
||||
return;
|
||||
@ -80,18 +81,16 @@ void basicauth_add (vector_t authlist,
|
||||
* is in the basicauth list.
|
||||
* return 1 on success, 0 on failure.
|
||||
*/
|
||||
int basicauth_check (vector_t authlist, const char *authstring)
|
||||
int basicauth_check (sblist *authlist, const char *authstring)
|
||||
{
|
||||
ssize_t vl, i;
|
||||
size_t el;
|
||||
const char* entry;
|
||||
size_t i;
|
||||
char** entry;
|
||||
|
||||
vl = vector_length (authlist);
|
||||
if (vl == -EINVAL) return 0;
|
||||
if (!authlist) return 0;
|
||||
|
||||
for (i = 0; i < vl; i++) {
|
||||
entry = vector_getentry (authlist, i, &el);
|
||||
if (strcmp (authstring, entry) == 0)
|
||||
for (i = 0; i < sblist_getsize(authlist); i++) {
|
||||
entry = sblist_get (authlist, i);
|
||||
if (entry && strcmp (authstring, *entry) == 0)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -22,14 +22,14 @@
|
||||
#define TINYPROXY_BASICAUTH_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include "vector.h"
|
||||
#include "sblist.h"
|
||||
|
||||
extern ssize_t basicauth_string(const char *user, const char *pass,
|
||||
char *buf, size_t bufsize);
|
||||
|
||||
extern void basicauth_add (vector_t authlist,
|
||||
extern void basicauth_add (sblist *authlist,
|
||||
const char *user, const char *pass);
|
||||
|
||||
extern int basicauth_check (vector_t authlist, const char *authstring);
|
||||
extern int basicauth_check (sblist *authlist, const char *authstring);
|
||||
|
||||
#endif
|
||||
|
12
src/conf.c
12
src/conf.c
@ -289,7 +289,7 @@ free_added_headers (sblist* add_headers)
|
||||
|
||||
void free_config (struct config_s *conf)
|
||||
{
|
||||
char *k;
|
||||
char *k, **s;
|
||||
htab_value *v;
|
||||
size_t it;
|
||||
safefree (conf->logf_name);
|
||||
@ -297,7 +297,13 @@ void free_config (struct config_s *conf)
|
||||
safefree (conf->user);
|
||||
safefree (conf->group);
|
||||
vector_delete(conf->listen_addrs);
|
||||
vector_delete(conf->basicauth_list);
|
||||
if(conf->basicauth_list) {
|
||||
for(it = 0; it < sblist_getsize(conf->basicauth_list); it++) {
|
||||
s = sblist_get(conf->basicauth_list, it);
|
||||
if(s) safefree(*s);
|
||||
}
|
||||
sblist_free(conf->basicauth_list);
|
||||
}
|
||||
#ifdef FILTER_ENABLE
|
||||
safefree (conf->filter);
|
||||
#endif /* FILTER_ENABLE */
|
||||
@ -915,7 +921,7 @@ static HANDLE_FUNC (handle_basicauth)
|
||||
return -1;
|
||||
}
|
||||
if (!conf->basicauth_list) {
|
||||
conf->basicauth_list = vector_create ();
|
||||
conf->basicauth_list = sblist_new (sizeof(char*), 16);
|
||||
}
|
||||
|
||||
basicauth_add (conf->basicauth_list, user, pass);
|
||||
|
@ -38,7 +38,7 @@ typedef struct {
|
||||
* Hold all the configuration time information.
|
||||
*/
|
||||
struct config_s {
|
||||
vector_t basicauth_list;
|
||||
sblist *basicauth_list;
|
||||
char *logf_name;
|
||||
unsigned int syslog; /* boolean */
|
||||
unsigned int port;
|
||||
|
Loading…
Reference in New Issue
Block a user