summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-01-22 06:08:30 +0000
committerUlrich Drepper <drepper@redhat.com>2008-01-22 06:08:30 +0000
commit06ec9db81eb938c7ece66f1a8667a1e2b346dae3 (patch)
treed7b4bcc14292dfd968b16919cdb0c23949dbfa92
parent4d8bc811506292938ab66120e51c9810e1d21c3d (diff)
downloadelfutils-06ec9db81eb938c7ece66f1a8667a1e2b346dae3.tar.gz
Fix problems in last checkin.
-rw-r--r--libcpu/i386_disasm.c4
-rw-r--r--libdw/dwarf_getpubnames.c13
2 files changed, 12 insertions, 5 deletions
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index 9024571c..843fd749 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -589,22 +589,26 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
#endif
case 0x98:
+#ifdef X86_64
if (prefixes == (has_rex_w | has_rex))
{
str = "cltq";
break;
}
+#endif
if (prefixes & ~has_data16)
goto print_prefix;
str = prefixes & has_data16 ? "cbtw" : "cwtl";
break;
case 0x99:
+#ifdef X86_64
if (prefixes == (has_rex_w | has_rex))
{
str = "cqto";
break;
}
+#endif
if (prefixes & ~has_data16)
goto print_prefix;
str = prefixes & has_data16 ? "cwtd" : "cltd";
diff --git a/libdw/dwarf_getpubnames.c b/libdw/dwarf_getpubnames.c
index 08b96cdc..fcf6eca4 100644
--- a/libdw/dwarf_getpubnames.c
+++ b/libdw/dwarf_getpubnames.c
@@ -1,5 +1,5 @@
/* Get public symbol information.
- Copyright (C) 2002, 2003, 2004, 2005 Red Hat, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2008 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -129,10 +129,13 @@ get_offsets (Dwarf *dbg)
mem[cnt].cu_offset = read_8ubyte_unaligned (dbg, readp + 2);
/* Determine the size of the CU header. */
- assert (dbg->sectiondata[IDX_debug_info] != NULL);
- assert (dbg->sectiondata[IDX_debug_info]->d_buf != NULL);
- assert (mem[cnt].cu_offset + 3
- < dbg->sectiondata[IDX_debug_info]->d_size);
+ if (dbg->sectiondata[IDX_debug_info] == NULL
+ || dbg->sectiondata[IDX_debug_info]->d_buf == NULL
+ || mem[cnt].cu_offset + 3 >= dbg->sectiondata[IDX_debug_info]->d_size)
+ {
+ __libdw_seterrno (DWARF_E_INVALID_DWARF);
+ goto err_return;
+ }
unsigned char *infop
= ((unsigned char *) dbg->sectiondata[IDX_debug_info]->d_buf
+ mem[cnt].cu_offset);