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