Skip to content

Commit b2f141a

Browse files
committed
fix: memory leak at msc_tree
1 parent 1ff9f2a commit b2f141a

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/utils/msc_tree.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* directly using the email address [email protected].
1313
*/
1414

15+
#include <cstdlib>
1516
#include <stdio.h>
1617
#include <stdlib.h>
1718
#include <string.h>
@@ -407,8 +408,10 @@ TreeNode *CPTAddElement(unsigned char *ipdata, unsigned int ip_bitmask, CPTTree
407408
CPTData *prefix_data = CPTCreateCPTData(netmask);
408409
CPTAppendToCPTDataList(prefix_data, &prefix->prefix_data);
409410

410-
if(CheckBitmask(netmask, ip_bitmask))
411+
if(CheckBitmask(netmask, ip_bitmask)) {
412+
free(prefix);
411413
return node;
414+
}
412415

413416
parent = node->parent;
414417
while (parent != NULL && netmask < (parent->bit + 1)) {
@@ -423,6 +426,7 @@ TreeNode *CPTAddElement(unsigned char *ipdata, unsigned int ip_bitmask, CPTTree
423426

424427
if ((node->count -1) == 0) {
425428
node->netmasks[0] = netmask;
429+
free(prefix);
426430
return new_node;
427431
}
428432

@@ -449,8 +453,10 @@ TreeNode *CPTAddElement(unsigned char *ipdata, unsigned int ip_bitmask, CPTTree
449453

450454
new_node = CPTCreateNode();
451455

452-
if(new_node == NULL)
456+
if(new_node == NULL) {
457+
free(prefix);
453458
return NULL;
459+
}
454460

455461
new_node->prefix = prefix;
456462
new_node->bit = prefix->bitlen;

0 commit comments

Comments
 (0)