Fix some memory leakage found
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 9d355b7..11acfae 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -2449,6 +2449,10 @@
AL_IMPORT((yyval.a_module), exports, (yyvsp[(1) - (3)].a_module), xp_next);
AL_IMPORT((yyval.a_module), imports, (yyvsp[(2) - (3)].a_module), xp_next);
AL_IMPORT((yyval.a_module), members, (yyvsp[(3) - (3)].a_module), next);
+
+ asn1p_module_free((yyvsp[(1) - (3)].a_module));
+ asn1p_module_free((yyvsp[(2) - (3)].a_module));
+ asn1p_module_free((yyvsp[(3) - (3)].a_module));
}
break;
@@ -2469,6 +2473,8 @@
break;
}
AL_IMPORT((yyval.a_module), members, (yyvsp[(2) - (2)].a_module), next);
+
+ asn1p_module_free((yyvsp[(2) - (2)].a_module));
}
break;
@@ -2925,7 +2931,7 @@
{
(yyval.a_expr) = NEW_EXPR();
checkmem((yyval.a_expr));
- (yyval.a_expr)->Identifier = "?";
+ (yyval.a_expr)->Identifier = strdup("?");
(yyval.a_expr)->expr_type = A1TC_REFERENCE;
(yyval.a_expr)->meta_type = AMT_VALUE;
(yyval.a_expr)->value = (yyvsp[(1) - (1)].a_value);
@@ -2989,6 +2995,7 @@
{
(yyval.a_expr) = (yyvsp[(1) - (5)].a_expr);
asn1p_expr_add_many((yyval.a_expr), (yyvsp[(4) - (5)].a_expr));
+ asn1p_expr_free((yyvsp[(4) - (5)].a_expr));
}
break;
@@ -3324,6 +3331,8 @@
} else {
if((yyval.a_expr)->constraints) {
assert(!(yyvsp[(2) - (3)].a_expr));
+ /* Check this : optConstraints is not used ?! */
+ asn1p_constraint_free((yyvsp[(3) - (3)].a_constr));
} else {
(yyval.a_expr)->constraints = (yyvsp[(3) - (3)].a_constr);
}
@@ -4412,6 +4421,7 @@
(yyval.a_constr) = asn1p_constraint_new(yylineno);
(yyval.a_constr)->type = ACT_CT_CTNG;
(yyval.a_constr)->value = asn1p_value_fromtype((yyvsp[(2) - (2)].a_expr));
+ asn1p_expr_free((yyvsp[(2) - (2)].a_expr));
}
break;