From daa808f9a2abb0c395653f30bb2fdc06a50f9ae2 Mon Sep 17 00:00:00 2001 From: 7u83 <7u83@mail.ru> Date: Sun, 14 Aug 2022 16:03:31 +0200 Subject: [PATCH] Fixed some memory leaks --- src/cw/cw_setup_dtls.c | 2 +- src/cw/msgset.c | 24 +++++++++--------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/cw/cw_setup_dtls.c b/src/cw/cw_setup_dtls.c index 6ae591bd..a1fff5cf 100644 --- a/src/cw/cw_setup_dtls.c +++ b/src/cw/cw_setup_dtls.c @@ -36,7 +36,7 @@ static int get_psk(struct cw_Conn *conn, const char *username, uint8_t ** psk, * @param default_cipher * @return */ -int cw_setup_dtls(struct cw_Conn *conn, mavl_t cfg, const char *prefix, +int cw_setup_dtls(struct cw_Conn *conn, cw_Cfg_t * cfg, const char *prefix, char *default_cipher) { char key[CW_CFG_MAX_KEY_LEN]; diff --git a/src/cw/msgset.c b/src/cw/msgset.c index d465fee9..ec2064bb 100644 --- a/src/cw/msgset.c +++ b/src/cw/msgset.c @@ -71,23 +71,19 @@ static int cmp_machinestate(const void *state1, const void *state2) return s1->prevstate-s2->prevstate; } -static void msgdata_destroy(struct cw_MsgData *data) + +static void del_mavl_msgdata(void * d) { - if (!data) - return; + struct cw_MsgData *data = (struct cw_MsgData *) d; if (data->elements_list) mlist_destroy(data->elements_list); if (data->elements_tree) mavl_destroy(data->elements_tree); + + if (data->mand_keys) + mlist_destroy(data->mand_keys); - free(data); -} - - -static void del_mavl_msdgdata(void *d) -{ - msgdata_destroy(d); } @@ -146,7 +142,7 @@ struct cw_MsgSet *cw_msgset_create() } /* create mavl for messages */ - set->msgdata = mavl_create(cmp_msgdata, del_mavl_msdgdata, + set->msgdata = mavl_create(cmp_msgdata, del_mavl_msgdata, sizeof(struct cw_MsgData)); if (set->msgdata == NULL) { cw_msgset_destroy(set); @@ -286,7 +282,6 @@ int cw_msgset_add(struct cw_MsgSet *set, struct cw_ElemHandler *handler; struct cw_MsgDef *msgdef; - /* Create mavl for all handlers */ for (handler = handlers; handler->id; handler++) { cw_dbg(DBG_MOD, "Adding handler for element %d - %s - with key: %s", @@ -299,8 +294,8 @@ int cw_msgset_add(struct cw_MsgSet *set, struct cw_MsgData search; struct cw_MsgData *msg; int exists; - /* add the message */ + memset(&search,0,sizeof(struct cw_MsgData)); search.type = msgdef->type; msg = mavl_insert(set->msgdata, &search, &exists); @@ -310,7 +305,7 @@ int cw_msgset_add(struct cw_MsgSet *set, } /* Look if message already exists */ - if (!exists) { + if (!exists ) { /* message is fresh createt, initialize data */ msg->elements_tree = mavl_create(cmp_elemdata, NULL, sizeof(struct cw_ElemData)); @@ -319,7 +314,6 @@ int cw_msgset_add(struct cw_MsgSet *set, msg->postprocess=NULL; msg->preprocess=NULL; } - /* Overwrite the found message */ if (msgdef->name != NULL) msg->name = msgdef->name;