summaryrefslogtreecommitdiff
path: root/libelf/elf_getarsym.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-01-17 19:36:16 +0100
committerMark Wielaard <mjw@redhat.com>2014-01-23 11:31:53 +0100
commit720383c53b435de6647edd78060dd7d38ade25a5 (patch)
tree7437a0d1e3250ea4916f7caefdff05b218504510 /libelf/elf_getarsym.c
parent58d3619facfb708f4998d73270ca4082b20853b9 (diff)
downloadelfutils-720383c53b435de6647edd78060dd7d38ade25a5.tar.gz
robustify: libelf.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
Diffstat (limited to 'libelf/elf_getarsym.c')
-rw-r--r--libelf/elf_getarsym.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c
index d0bb28a9..7325190a 100644
--- a/libelf/elf_getarsym.c
+++ b/libelf/elf_getarsym.c
@@ -1,5 +1,5 @@
/* Return symbol table of archive.
- Copyright (C) 1998-2000, 2002, 2005, 2012 Red Hat, Inc.
+ Copyright (C) 1998-2000, 2002, 2005, 2009, 2012, 2014 Red Hat, Inc.
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
@@ -183,6 +183,9 @@ elf_getarsym (elf, ptr)
size_t index_size = atol (tmpbuf);
if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
+#if SIZE_MAX <= 4294967295U
+ || n >= SIZE_MAX / sizeof (Elf_Arsym)
+#endif
|| n * w > index_size)
{
/* This index table cannot be right since it does not fit into