compile_et: Don't overflow input file buffer
[openafs.git] / src / comerr / compile_et.c
index 87e000e..e5b780c 100644 (file)
@@ -117,7 +117,6 @@ static const char msf_warning[] =
 char c_file[MAXPATHLEN];       /* output file */
 char h_file[MAXPATHLEN];       /* output */
 char msf_file[MAXPATHLEN];
-char et_file[MAXPATHLEN];      /* full path to input file */
 
 static void
 usage(void)
@@ -142,6 +141,7 @@ int
 main(int argc, char **argv)
 {
     char *p, *ename;
+    char *et_file;
     char const *const *cpp;
     int got_language = 0;
     char *got_include = 0;
@@ -314,7 +314,10 @@ main(int argc, char **argv)
        filename = p;
     }
 
-    sprintf(et_file, "%s/%s", got_prefix, filename);
+    if (asprintf(&et_file, "%s/%s", got_prefix, filename) < 0) {
+       fprintf(stderr, "Couldn't allocate memory for filename\n");
+       exit(1);
+    }
 
     yyin = fopen(et_file, "r");
     if (!yyin) {
@@ -322,6 +325,8 @@ main(int argc, char **argv)
        exit(1);
     }
 
+    free(et_file);
+
     /* on NT, yyout is not initialized to stdout */
     if (!yyout) {
        yyout = stdout;