Warn about "/** text" comments.
[ffmpeg.git] / tools / qt-faststart.c
index 172fdae..ace4c11 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <inttypes.h>
+#include <string.h>
 
 #ifdef __MINGW32__
 #define fseeko(x,y,z)  fseeko64(x,y,z)
@@ -83,7 +84,7 @@ int main(int argc, char *argv[])
     uint64_t atom_offset = 0;
     uint64_t last_offset;
     unsigned char *moov_atom = NULL;
-    unsigned char *ftyp_atom = 0;
+    unsigned char *ftyp_atom = NULL;
     uint64_t moov_atom_size;
     uint64_t ftyp_atom_size = 0;
     uint64_t i, j;
@@ -98,6 +99,11 @@ int main(int argc, char *argv[])
         return 0;
     }
 
+    if (!strcmp(argv[1], argv[2])) {
+        fprintf(stderr, "input and output files need to be different\n");
+        return 1;
+    }
+
     infile = fopen(argv[1], "rb");
     if (!infile) {
         perror(argv[1]);
@@ -163,6 +169,12 @@ int main(int argc, char *argv[])
             break;
         }
         atom_offset += atom_size;
+
+        /* The atom header is 8 (or 16 bytes), if the atom size (which
+         * includes these 8 or 16 bytes) is less than that, we won't be
+         * able to continue scanning sensibly after this atom, so break. */
+        if (atom_size < 8)
+            break;
     }
 
     if (atom_type != MOOV_ATOM) {
@@ -306,9 +318,9 @@ int main(int argc, char *argv[])
 
 error_out:
     if (infile)
-    fclose(infile);
+        fclose(infile);
     if (outfile)
-    fclose(outfile);
+        fclose(outfile);
     free(moov_atom);
     free(ftyp_atom);
     return 1;