mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-17 12:51:36 +00:00
qt-faststart: check fseeko() return codes
Fixes CID733725 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
250fe6eeb4
commit
0de41ead6f
@ -136,22 +136,27 @@ int main(int argc, char *argv[])
|
|||||||
atom_size);
|
atom_size);
|
||||||
goto error_out;
|
goto error_out;
|
||||||
}
|
}
|
||||||
fseeko(infile, -ATOM_PREAMBLE_SIZE, SEEK_CUR);
|
if ( fseeko(infile, -ATOM_PREAMBLE_SIZE, SEEK_CUR)
|
||||||
if (fread(ftyp_atom, atom_size, 1, infile) != 1) {
|
|| fread(ftyp_atom, atom_size, 1, infile) != 1) {
|
||||||
perror(argv[1]);
|
perror(argv[1]);
|
||||||
goto error_out;
|
goto error_out;
|
||||||
}
|
}
|
||||||
start_offset = ftello(infile);
|
start_offset = ftello(infile);
|
||||||
} else {
|
} else {
|
||||||
|
int ret;
|
||||||
/* 64-bit special case */
|
/* 64-bit special case */
|
||||||
if (atom_size == 1) {
|
if (atom_size == 1) {
|
||||||
if (fread(atom_bytes, ATOM_PREAMBLE_SIZE, 1, infile) != 1) {
|
if (fread(atom_bytes, ATOM_PREAMBLE_SIZE, 1, infile) != 1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
atom_size = BE_64(&atom_bytes[0]);
|
atom_size = BE_64(&atom_bytes[0]);
|
||||||
fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE * 2, SEEK_CUR);
|
ret = fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE * 2, SEEK_CUR);
|
||||||
} else {
|
} else {
|
||||||
fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE, SEEK_CUR);
|
ret = fseeko(infile, atom_size - ATOM_PREAMBLE_SIZE, SEEK_CUR);
|
||||||
|
}
|
||||||
|
if(ret) {
|
||||||
|
perror(argv[1]);
|
||||||
|
goto error_out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("%c%c%c%c %10"PRIu64" %"PRIu64"\n",
|
printf("%c%c%c%c %10"PRIu64" %"PRIu64"\n",
|
||||||
@ -192,7 +197,10 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* moov atom was, in fact, the last atom in the chunk; load the whole
|
/* moov atom was, in fact, the last atom in the chunk; load the whole
|
||||||
* moov atom */
|
* moov atom */
|
||||||
fseeko(infile, -atom_size, SEEK_END);
|
if (fseeko(infile, -atom_size, SEEK_END)) {
|
||||||
|
perror(argv[1]);
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
last_offset = ftello(infile);
|
last_offset = ftello(infile);
|
||||||
moov_atom_size = atom_size;
|
moov_atom_size = atom_size;
|
||||||
moov_atom = malloc(moov_atom_size);
|
moov_atom = malloc(moov_atom_size);
|
||||||
@ -268,7 +276,11 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (start_offset > 0) { /* seek after ftyp atom */
|
if (start_offset > 0) { /* seek after ftyp atom */
|
||||||
fseeko(infile, start_offset, SEEK_SET);
|
if (fseeko(infile, start_offset, SEEK_SET)) {
|
||||||
|
perror(argv[1]);
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
|
|
||||||
last_offset -= start_offset;
|
last_offset -= start_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user