Version 0.3.28
* Fixed memory corruption when using execve() in a traced program
(closes: Bug#160341, Bug#165626)
diff --git a/proc.c b/proc.c
index 294340d..8a05e2b 100644
--- a/proc.c
+++ b/proc.c
@@ -27,36 +27,8 @@
proc->breakpoints_enabled = -1;
proc->callstack_depth = 0;
proc->breakpoint_being_enabled = NULL;
+ breakpoints_init(proc);
proc->next = NULL;
- if (opt_L && filename) {
- proc->list_of_symbols = read_elf(filename);
- if (opt_e) {
- struct library_symbol ** tmp1 = &(proc->list_of_symbols);
- while(*tmp1) {
- struct opt_e_t * tmp2 = opt_e;
- int keep = !opt_e_enable;
-
- while(tmp2) {
- if (!strcmp((*tmp1)->name, tmp2->name)) {
- keep = opt_e_enable;
- }
- tmp2 = tmp2->next;
- }
- if (!keep) {
- *tmp1 = (*tmp1)->next;
- } else {
- tmp1 = &((*tmp1)->next);
- }
- }
- }
- } else {
- proc->list_of_symbols = NULL;
- }
- sym = proc->list_of_symbols;
- while (sym) {
- insert_breakpoint(proc, sym->enter_addr); /* proc->pid==0 delays enabling. */
- sym = sym->next;
- }
proc->next = list_of_processes;
list_of_processes = proc;