basicauth: use sblist

master
rofl0r 2020-09-16 01:54:05 +01:00
parent 487f2aba47
commit a5381223df
4 changed files with 24 additions and 19 deletions

View File

@ -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;

View File

@ -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

View File

@ -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);

View File

@ -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;