From 980bd2e7a475d3c03806ecc1c65584e07ee94cf7 Mon Sep 17 00:00:00 2001 From: Christian Mehlis Date: Sun, 16 Feb 2014 23:06:48 +0100 Subject: [PATCH] ccnl: fix memory leak on CS error --- sys/net/ccn_lite/ccn-lite-relay.c | 6 +++++- sys/net/ccn_lite/ccnl-core.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/net/ccn_lite/ccn-lite-relay.c b/sys/net/ccn_lite/ccn-lite-relay.c index cce0259f11..07d454543f 100644 --- a/sys/net/ccn_lite/ccn-lite-relay.c +++ b/sys/net/ccn_lite/ccn-lite-relay.c @@ -242,8 +242,12 @@ void ccnl_populate_cache(struct ccnl_relay_s *ccnl, unsigned char *buf, int data goto Done; } - ccnl_content_add2cache(ccnl, c); c->flags |= CCNL_CONTENT_FLAGS_STATIC; + if (!ccnl_content_add2cache(ccnl, c)) { + // content store error + free_content(c); + } + Done: free_prefix(prefix); ccnl_free(pkt); diff --git a/sys/net/ccn_lite/ccnl-core.c b/sys/net/ccn_lite/ccnl-core.c index d67359d4cd..089f1718bb 100644 --- a/sys/net/ccn_lite/ccnl-core.c +++ b/sys/net/ccn_lite/ccnl-core.c @@ -912,7 +912,7 @@ struct ccnl_content_s * ccnl_content_remove(struct ccnl_relay_s *ccnl, struct ccnl_content_s *c) { struct ccnl_content_s *c2; - DEBUGMSG(99, "ccnl_content_remove\n"); + DEBUGMSG(99, "ccnl_content_remove: %s\n", ccnl_prefix_to_path(c->name)); c2 = c->next; DBL_LINKED_LIST_REMOVE(ccnl->contents, c);