Fix some memory leakage found
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 910989a..b8406b6 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -529,6 +529,10 @@
 		AL_IMPORT($$, exports, $1, xp_next);
 		AL_IMPORT($$, imports, $2, xp_next);
 		AL_IMPORT($$, members, $3, next);
+
+		asn1p_module_free($1);
+		asn1p_module_free($2);
+		asn1p_module_free($3);
 	}
 	;
 
@@ -544,6 +548,7 @@
 			break;
 		}
 		AL_IMPORT($$, members, $2, next);
+		asn1p_module_free($2);
 	}
 	;
 
@@ -874,6 +879,7 @@
 		ret = asn1p_ref_add_component($$.governor, $1, 0);
 		checkmem(ret == 0);
 		$$.argument = $3;
+		free($1);
 	}
 	| TypeRefName ':' TypeRefName {
 		int ret;
@@ -881,6 +887,7 @@
 		ret = asn1p_ref_add_component($$.governor, $1, 0);
 		checkmem(ret == 0);
 		$$.argument = $3;
+		free($1);
 	}
 	| BasicTypeId ':' Identifier {
 		int ret;
@@ -919,7 +926,7 @@
 	| SimpleValue {
 		$$ = NEW_EXPR();
 		checkmem($$);
-		$$->Identifier = "?";
+		$$->Identifier = strdup("?");
 		$$->expr_type = A1TC_REFERENCE;
 		$$->meta_type = AMT_VALUE;
 		$$->value = $1;
@@ -972,8 +979,9 @@
 		asn1p_expr_add($$, $3);
 	}
 	| ComponentTypeLists ',' TOK_VBracketLeft ComponentTypeLists TOK_VBracketRight {
-        $$ = $1;
+		$$ = $1;
 		asn1p_expr_add_many($$, $4);
+		asn1p_expr_free($4);
 	}
 	;
 
@@ -1225,6 +1233,8 @@
 		} else {
 			if($$->constraints) {
 				assert(!$2);
+				/* Check this : optConstraints is not used ?! */
+				asn1p_constraint_free($3);
 			} else {
 				$$->constraints = $3;
 			}
@@ -1316,6 +1326,7 @@
 		checkmem(ret == 0);
 		$$->expr_type = ASN_TYPE_ANY;
 		$$->meta_type = AMT_TYPE;
+		free($4);
 	}
 	| TOK_INSTANCE TOK_OF ComplexTypeReference {
 		$$ = NEW_EXPR();
@@ -1349,6 +1360,7 @@
 		ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free($1);
+		free($3);
 	}
 	| ObjectClassReference '.' TypeRefName {
 		int ret;
@@ -1359,6 +1371,7 @@
 		ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free($1);
+		free($3);
 	}
 	| TOK_typereference '.' Identifier {
 		int ret;
@@ -1369,6 +1382,7 @@
 		ret = asn1p_ref_add_component($$, $3, RLT_lowercase);
 		checkmem(ret == 0);
 		free($1);
+		free($3);
 	}
 	| ObjectClassReference {
 		int ret;
@@ -1438,14 +1452,17 @@
 	TOK_typefieldreference {
 		$$ = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component($$, $1, RLT_AmpUppercase);
+		free($1);
 	}
 	| FieldName '.' TOK_typefieldreference {
 		$$ = $$;
 		asn1p_ref_add_component($$, $3, RLT_AmpUppercase);
+		free($3);
 	}
 	| FieldName '.' TOK_valuefieldreference {
 		$$ = $$;
 		asn1p_ref_add_component($$, $3, RLT_Amplowercase);
+		free($3);
 	}
 	;
 
@@ -1453,12 +1470,15 @@
 	TOK_capitalreference {
 		$$ = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component($$, $1, RLT_CAPITALS);
+		free($1);
 	}
 /*
 	| TypeRefName '.' TOK_capitalreference {
 		$$ = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component($$, $1, RLT_AmpUppercase);
 		asn1p_ref_add_component($$, $3, RLT_CAPITALS);
+		free($1);
+		free($3);
 	}
 */
 	;
@@ -1515,10 +1535,12 @@
 	| TOK_bstring {
 		$$ = _convert_bitstring2binary($1, 'B');
 		checkmem($$);
+		free($1);
 	}
 	| TOK_hstring {
 		$$ = _convert_bitstring2binary($1, 'H');
 		checkmem($$);
+		free($1);
 	}
 	| RestrictedCharacterStringValue {
 		$$ = $$;
@@ -1849,6 +1871,7 @@
 		ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(ref, $2, RLT_lowercase);
 		$$->value = asn1p_value_fromref(ref, 0);
+		free($2);
 	}
 	;
 
@@ -1892,10 +1915,12 @@
 	TOK_bstring {
 		$$ = _convert_bitstring2binary($1, 'B');
 		checkmem($$);
+		free($1);
 	}
 	| TOK_hstring {
 		$$ = _convert_bitstring2binary($1, 'H');
 		checkmem($$);
+		free($1);
 	}
 	;
 
@@ -1993,6 +2018,7 @@
 		$$ = asn1p_constraint_new(yylineno);
 		$$->type = ACT_CT_CTNG;
 		$$->value = asn1p_value_fromtype($2);
+		asn1p_expr_free($2);
 	}
 	;
 
@@ -2026,6 +2052,7 @@
 		ct->type = ACT_EL_VALUE;
 		ct->value = asn1p_value_fromref(ref, 0);
 		CONSTRAINT_INSERT($$, ACT_CA_CRC, ct, 0);
+		free($2);
 	}
 	;
 
@@ -2094,6 +2121,8 @@
 		$$[l1] = '.';
 		memcpy($$ + l1 + 1, $3, l3);
 		$$[l1 + 1 + l3] = '\0';
+		free($1);
+		free($3);
 	}
 	;