summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Moore <timoore@redhat.com>2008-10-02 10:31:49 +0200
committerTim Moore <timoore@redhat.com>2008-10-02 12:13:39 +0200
commitcaf566cb319004a314b09ea6fd6781941db89f8e (patch)
treed59f1176575eda6bd723443f26c34bc733c1c046
parentdd4918442a55569175bda0575f746e84c99cee58 (diff)
downloadsystemtap-steved-caf566cb319004a314b09ea6fd6781941db89f8e.tar.gz
systemtap-steved-caf566cb319004a314b09ea6fd6781941db89f8e.tar.xz
systemtap-steved-caf566cb319004a314b09ea6fd6781941db89f8e.zip
fix bugs in add_bad_addr_entry
-rw-r--r--runtime/ChangeLog5
-rw-r--r--runtime/addr-map.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 677b32ee..e22bee26 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,8 @@
+2008-10-02 Tim Moore <timoore@redhat.com>
+
+ * addr-map.c (add_bad_addr_entry): Fix bugs in allocating a new
+ table and copying old entries into the new table.
+
2008-09-30 Tim Moore <timoore@redhat.com>
* addr-map.c (add_bad_addr_entry): Rewrite allocation of address
diff --git a/runtime/addr-map.c b/runtime/addr-map.c
index c215b744..706da454 100644
--- a/runtime/addr-map.c
+++ b/runtime/addr-map.c
@@ -139,8 +139,9 @@ add_bad_addr_entry(unsigned long min_addr, unsigned long max_addr,
if (!new_map)
return -ENOMEM;
new_map->size = old_size + 1;
- continue;
}
+ else
+ break;
}
if (!blackmap)
{
@@ -170,7 +171,7 @@ add_bad_addr_entry(unsigned long min_addr, unsigned long max_addr,
memcpy(&new_map->entries, old_map->entries,
existing * sizeof(*new_entry));
if (old_map->size > existing)
- memcpy(new_entry + 1, &old_map->entries[existing + 1],
+ memcpy(new_entry + 1, &old_map->entries[existing],
(old_map->size - existing) * sizeof(*new_entry));
}
blackmap = new_map;