diff --git a/libasn1parser/asn1parser.c b/libasn1parser/asn1parser.c index 6a3477d109b9405cb0eec22d27dfd873fa1b36ca..05330d6d5572d6019d6bbea3ecb2c15442ecb19b 100644 --- a/libasn1parser/asn1parser.c +++ b/libasn1parser/asn1parser.c @@ -1,5 +1,5 @@ #include <stdio.h> -#include <string.h> +#include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <assert.h> @@ -181,10 +181,12 @@ _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 = strdup(fname); + mod->source_file_name = malloc(flen); 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);