Discussion:
[Bug exp/23225] New: Gdb prints the wrong address for local variables, in 32 bit mode
kkireeva at andrew dot cmu.edu
2018-05-23 17:32:59 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=23225

Bug ID: 23225
Summary: Gdb prints the wrong address for local variables, in
32 bit mode
Product: gdb
Version: 7.11.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: exp
Assignee: unassigned at sourceware dot org
Reporter: kkireeva at andrew dot cmu.edu
Target Milestone: ---

I didn't compile the binary myself.
It has no stack protections

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
volatile int modified;
char buffer[64];

modified = 0;
gets(buffer);

if(modified != 0) {
printf("you have changed the 'modified' variable\n");
} else {
printf("Try again?\n");
}
}

The addresses of modified and buffer are printed above argv, which is nonsense.
Also their true location is different, as evidenced by what strcpy modifies.
print &modified
$1 = (volatile int*) 0xffffcf3c
print &argv
$2 = (char***) 0xffffcf64
--
You are receiving this mail because:
You are on the CC list for the bug.
schwab@linux-m68k.org
2018-05-23 20:28:27 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=23225

Andreas Schwab <***@linux-m68k.org> changed:

What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |DUPLICATE

--- Comment #1 from Andreas Schwab <***@linux-m68k.org> ---
.

*** This bug has been marked as a duplicate of bug 23220 ***
--
You are receiving this mail because:
You are on the CC list for the bug.
Loading...