diff --git a/libasn1parser/Makefile.in b/libasn1parser/Makefile.in
index 1f29cf7d250361ee0aa62f96c2b89ca46adeb4b1..cb9ebd03feca17370915a3eb452c4712ce362e86 100644
--- a/libasn1parser/Makefile.in
+++ b/libasn1parser/Makefile.in
@@ -447,8 +447,8 @@ distclean-generic:
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
-	-rm -f asn1p_y.c
 	-rm -f asn1p_l.c
+	-rm -f asn1p_y.c
 	-rm -f asn1p_y.h
 clean: clean-am
 
diff --git a/libasn1parser/asn1parser.c b/libasn1parser/asn1parser.c
index 05330d6d5572d6019d6bbea3ecb2c15442ecb19b..6a3477d109b9405cb0eec22d27dfd873fa1b36ca 100644
--- a/libasn1parser/asn1parser.c
+++ b/libasn1parser/asn1parser.c
@@ -1,5 +1,5 @@
 #include <stdio.h>
-#include <stdlib.h>
+#include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <assert.h>
@@ -181,12 +181,10 @@ _asn1p_fix_modules(asn1p_t *a, const char *fname) {
 	asn1p_module_t *mod;
 	TQ_FOR(mod, &(a->modules), mod_next) {
 		asn1p_expr_t *expr;
-		int flen = strlen(fname) + 1;
 
-		mod->source_file_name = malloc(flen);
+		mod->source_file_name = strdup(fname);
 		if(mod->source_file_name == NULL)
 			return -1;
-		memcpy(mod->source_file_name, fname, flen);
 
 		TQ_FOR(expr, &(mod->members), next) {
 			_asn1p_apply_module2expr(expr, mod);