diff --git a/tools/qt-faststart.c b/tools/qt-faststart.c
index 2b2e00ca57a6acbf4dc0fc1d08af217fe62f7ff5..5c511a0154816d461080e9a0c38b09c3482492d3 100644
--- a/tools/qt-faststart.c
+++ b/tools/qt-faststart.c
@@ -137,11 +137,11 @@ int main(int argc, char *argv[])
                 goto error_out;
             }
             if (fseeko(infile, -ATOM_PREAMBLE_SIZE, SEEK_CUR) ||
-                fread(ftyp_atom, atom_size, 1, infile) != 1) {
+                fread(ftyp_atom, atom_size, 1, infile) != 1 ||
+                (start_offset = ftello(infile)) < 0) {
                 perror(argv[1]);
                 goto error_out;
             }
-            start_offset = ftello(infile);
         } else {
             int ret;
             /* 64-bit special case */
@@ -202,6 +202,10 @@ int main(int argc, char *argv[])
         goto error_out;
     }
     last_offset    = ftello(infile);
+    if (last_offset < 0) {
+        perror(argv[1]);
+        goto error_out;
+    }
     moov_atom_size = atom_size;
     moov_atom      = malloc(moov_atom_size);
     if (!moov_atom) {