Skip to content

Commit d4ec786

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

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/utils/msc_tree.cc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -407,8 +407,10 @@ TreeNode *CPTAddElement(unsigned char *ipdata, unsigned int ip_bitmask, CPTTree
407407
CPTData *prefix_data = CPTCreateCPTData(netmask);
408408
CPTAppendToCPTDataList(prefix_data, &prefix->prefix_data);
409409

410-
if(CheckBitmask(netmask, ip_bitmask))
410+
if(CheckBitmask(netmask, ip_bitmask)) {
411+
free(prefix);
411412
return node;
413+
}
412414

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

424426
if ((node->count -1) == 0) {
425427
node->netmasks[0] = netmask;
428+
free(prefix);
426429
return new_node;
427430
}
428431

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

450453
new_node = CPTCreateNode();
451454

452-
if(new_node == NULL)
455+
if(new_node == NULL) {
456+
free(prefix);
453457
return NULL;
458+
}
454459

455460
new_node->prefix = prefix;
456461
new_node->bit = prefix->bitlen;

0 commit comments

Comments
 (0)