use the new calloc_a function from libubox
authorFelix Fietkau <nbd@openwrt.org>
Mon, 31 Dec 2012 14:28:17 +0000 (15:28 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 31 Dec 2012 14:28:17 +0000 (15:28 +0100)
auth.c
uhttpd.h

diff --git a/auth.c b/auth.c
index da7263f..05bec66 100644 (file)
--- a/auth.c
+++ b/auth.c
@@ -26,6 +26,7 @@ void uh_auth_add(const char *path, const char *user, const char *pass)
        struct auth_realm *new = NULL;
        struct passwd *pwd;
        const char *new_pass = NULL;
+       char *dest_path, *dest_user, *dest_pass;
 
 #ifdef HAVE_SHADOW
        struct spwd *spwd;
@@ -52,12 +53,16 @@ void uh_auth_add(const char *path, const char *user, const char *pass)
        if (!new_pass || !new_pass[0])
                return;
 
-       new = calloc(1, sizeof(*new));
+       new = calloc_a(sizeof(*new),
+               &dest_path, strlen(path) + 1,
+               &dest_user, strlen(user) + 1,
+               &dest_pass, strlen(new_pass) + 1);
+
        if (!new)
                return;
 
-       snprintf(new->path, sizeof(new->path), "%s", path);
-       snprintf(new->user, sizeof(new->user), "%s", user);
-       snprintf(new->pass, sizeof(new->user), "%s", new_pass);
+       new->path = strcpy(dest_path, path);
+       new->user = strcpy(dest_user, user);
+       new->pass = strcpy(dest_pass, new_pass);
        list_add(&new->list, &auth_realms);
 }
index c023aff..1e487f8 100644 (file)
--- a/uhttpd.h
+++ b/uhttpd.h
@@ -28,6 +28,7 @@
 #include <libubox/uloop.h>
 #include <libubox/ustream.h>
 #include <libubox/blob.h>
+#include <libubox/utils.h>
 
 #include "utils.h"
 
@@ -52,9 +53,9 @@ struct config {
 
 struct auth_realm {
        struct list_head list;
-       char path[PATH_MAX];
-       char user[32];
-       char pass[128];
+       char *path;
+       char *user;
+       char *pass;
 };
 
 enum http_method {