ubusd: fix a memory leak on user/group client info
authorFelix Fietkau <nbd@openwrt.org>
Tue, 26 Jan 2016 09:10:39 +0000 (10:10 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 26 Jan 2016 09:10:39 +0000 (10:10 +0100)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
ubusd_acl.c
ubusd_acl.h
ubusd_proto.c

index 15a58d8b2cd659eb97fe2a47f61101a128dcf2e1..85ada5dc87904207e8f002a28548c67072c95f9d 100644 (file)
@@ -174,6 +174,13 @@ ubusd_acl_init_client(struct ubus_client *cl, int fd)
        return 0;
 }
 
+void
+ubusd_acl_free_client(struct ubus_client *cl)
+{
+       free(cl->group);
+       free(cl->user);
+}
+
 static void
 ubusd_acl_file_free(struct ubusd_acl_file *file)
 {
index 8464a01e18ec405bc9b8275b0e49acda9cc5ab5e..c5dfd8a9b3d553d00e48c206a53dee33893ac422 100644 (file)
@@ -22,6 +22,7 @@ enum ubusd_acl_type {
 
 int ubusd_acl_check(struct ubus_client *cl, const char *obj, const char *method, enum ubusd_acl_type type);
 int ubusd_acl_init_client(struct ubus_client *cl, int fd);
+void ubusd_acl_free_client(struct ubus_client *cl);
 void ubusd_acl_load(void);
 
 #endif
index baf3eb63459a92209a278d42b638ad10cb52cbba..0af11f2742d10eb7af069d521842fc668815607d 100644 (file)
@@ -500,6 +500,7 @@ void ubusd_proto_free_client(struct ubus_client *cl)
                ubusd_free_object(obj);
        }
 
+       ubusd_acl_free_client(cl);
        ubus_free_id(&clients, &cl->id);
 }