diff options
Diffstat (limited to 'elf/cache.c')
-rw-r--r-- | elf/cache.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/elf/cache.c b/elf/cache.c index e63979da7d..c4cd825c30 100644 --- a/elf/cache.c +++ b/elf/cache.c @@ -199,6 +199,11 @@ print_cache (const char *cache_name) } else { + /* Check for corruption, avoiding overflow. */ + if ((cache_size - sizeof (struct cache_file)) / sizeof (struct file_entry) + < cache->nlibs) + error (EXIT_FAILURE, 0, _("File is not a cache file.\n")); + size_t offset = ALIGN_CACHE (sizeof (struct cache_file) + (cache->nlibs * sizeof (struct file_entry))); |