Codebase list faad2 / debian/2.7-9 debian / patches / path_max.patch
debian/2.7-9

Tree @debian/2.7-9 (Download .tar.gz)

path_max.patch @debian/2.7-9raw · history · blame

Description: Dynamically allocate file name buffers.
Author: Fabian Greffrath <fabian+debian@greffrath.com>
Bug-Ubuntu: https://launchpad.net/bugs/475050
Last-Update: 2011-11-11

--- faad.orig/frontend/main.c
+++ faad/frontend/main.c
@@ -1107,9 +1107,9 @@ int main(int argc, char *argv[])
     int mp4file = 0;
     int noGapless = 0;
     char *fnp;
-    char aacFileName[255];
-    char audioFileName[255];
-    char adtsFileName[255];
+    char *aacFileName = NULL;
+    char *audioFileName = NULL;
+    char *adtsFileName = NULL;
     unsigned char header[8];
     float length = 0;
     FILE *hMP4File;
@@ -1157,6 +1157,12 @@ int main(int argc, char *argv[])
             if (optarg)
             {
                 outfile_set = 1;
+                audioFileName = (char *) malloc(sizeof(char) * (strlen(optarg) + 1));
+                if (audioFileName == NULL)
+                {
+                    faad_fprintf(stderr, "Error allocating memory for audioFileName.\n");
+                    return 1;
+                }
                 strcpy(audioFileName, optarg);
             }
             break;
@@ -1164,6 +1170,12 @@ int main(int argc, char *argv[])
             if (optarg)
             {
                 adts_out = 1;
+                adtsFileName = (char *) malloc(sizeof(char) * (strlen(optarg) + 1));
+                if (adtsFileName == NULL)
+                {
+                    faad_fprintf(stderr, "Error allocating memory for adtsFileName.\n");
+                    return 1;
+                }
                 strcpy(adtsFileName, optarg);
             }
             break;
@@ -1284,6 +1296,12 @@ int main(int argc, char *argv[])
 #endif
 
     /* point to the specified file name */
+    aacFileName = (char *) malloc(sizeof(char) * (strlen(argv[optind]) + 1));
+    if (aacFileName == NULL)
+    {
+        faad_fprintf(stderr, "Error allocating memory for aacFileName.\n");
+        return 1;
+    }
     strcpy(aacFileName, argv[optind]);
 
 #ifdef _WIN32
@@ -1297,6 +1315,12 @@ int main(int argc, char *argv[])
      */
     if(!writeToStdio && !outfile_set)
     {
+        audioFileName = (char *) malloc(sizeof(char) * (strlen(aacFileName) + strlen(file_ext[format]) + 1));
+        if (audioFileName == NULL)
+        {
+            faad_fprintf(stderr, "Error allocating memory for audioFileName.\n");
+            return 1;
+        }
         strcpy(audioFileName, aacFileName);
 
         fnp = (char *)strrchr(audioFileName,'.');
@@ -1357,6 +1381,11 @@ int main(int argc, char *argv[])
             old_format, &length);
     }
 
+    if (audioFileName != NULL)
+      free (audioFileName);
+    if (adtsFileName != NULL)
+      free (adtsFileName);
+
     if (!result && !infoOnly)
     {
 #ifdef _WIN32
@@ -1372,5 +1401,8 @@ int main(int argc, char *argv[])
             dec_length, length/dec_length);
     }
 
+    if (aacFileName != NULL)
+      free (aacFileName);
+
     return 0;
 }