No description
The following error handling is broken due to signedness.
int file_size;
uint32_t tag_bytes;
int64_t tag_start;
...
tag_start = file_size - tag_bytes - APE_TAG_FOOTER_BYTES;
if (tag_start < 0) { ... }
Note that tag_bytes is unsigned, which makes the right-hand side of
`tag_start = ...' unsigned, too. The 32-bit unsigned value is then
zero-extended to 64 bits. Therefore, tag_start must be non-negative,
and the check (tag_start < 0) is always false, which breaks the error
handling. This patch fixes the check.
Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
|
||
|---|---|---|
| compat | ||
| doc | ||
| libavcodec | ||
| libavdevice | ||
| libavfilter | ||
| libavformat | ||
| libavresample | ||
| libavutil | ||
| libswscale | ||
| presets | ||
| tests | ||
| tools | ||
| .gitignore | ||
| arch.mak | ||
| avconv.c | ||
| avconv.h | ||
| avconv_filter.c | ||
| avconv_opt.c | ||
| avplay.c | ||
| avprobe.c | ||
| avserver.c | ||
| Changelog | ||
| cmdutils.c | ||
| cmdutils.h | ||
| cmdutils_common_opts.h | ||
| common.mak | ||
| configure | ||
| COPYING.GPLv2 | ||
| COPYING.GPLv3 | ||
| COPYING.LGPLv2.1 | ||
| COPYING.LGPLv3 | ||
| CREDITS | ||
| INSTALL | ||
| library.mak | ||
| LICENSE | ||
| Makefile | ||
| README | ||
| RELEASE | ||
| version.sh | ||
Libav README ------------ 1) Documentation ---------------- * Read the documentation in the doc/ directory. 2) Licensing ------------ * See the LICENSE file.