problem with i686-w64-mingw32-gcc -fstack-protector-all
Christian Franke
Christian.Franke@t-online.de
Wed Oct 4 19:18:00 GMT 2017
Lee wrote:
> Maybe I'm just Doing It Wrong, but
> gcc -fstack-protector-all
> seems to be working correctly &
> i686-w64-mingw32-gcc -fstack-protector-all
> seems to be broken - eg:
>
> $./ssp testtestx
> Illegal instruction
>
> printf's that happen before the stack over-write don't show up & no
> "*** stack smashing detected ***" msg is printed before the "Illegal
> instruction"
> ...
>
> extern
> int doit(char *s ) {
> char buf[]="12345678";
> int i=0;
> if ( *s != '\0' ) i = 1; /* return true */
> printf("doit: s=\"%s\" buf=\"%s\" i=%d\n", s, buf, i );
> strcpy(buf, s);
> /* buffer overflow into return status(int i) if strlen(s) > 8 */
> printf("doit: s=\"%s\" buf=\"%s\" i=%d\n", s, buf, i );
> return i;
> }
>
> + i686-w64-mingw32-gcc -c -fstack-protector-all func-ssp.c -o func-ssp.o
> + i686-w64-mingw32-gcc -c -fstack-protector-all main-ssp.c -o main-ssp.o
> + i686-w64-mingw32-gcc -static -o ssp.exe func-ssp.o main-ssp.o -lssp
BTW: There is no need to link with -lssp if the related code generation
option -fstack-protector* is also used during link.
> + ./ssp.exe testtestx
> ./doit: line 11: 9128 Illegal instruction ./ssp.exe testtestx
> + echo -e '\n\n'
>
The *** stack smashing detected *** message from MinGW runtime is only
visible if stdio is attached to a Windows console.
Works for me if one more overflow char is added:
Cygwin mintty:
$ ./ssp testtestx
main: argv[1]=testtestx
doit: s="testtestx" buf="12345678" i=1
doit: s="testtestx" buf="testtestx" i=1
main: exit
$ ./ssp testtestxx
Illegal instruction
Cygwin in Windows console (cygwin.bat):
$ ./ssp testtestxx
main: argv[1]=testtestxx
doit: s="testtestxx" buf="12345678" i=1
doit: s="testtestxx" buf="testtestxx" i=1
*** stack smashing detected ***: terminated
Illegal instruction
cmd.exe in Windows console:
C:\cygwin\tmp>.\ssp.exe testtestxx
main: argv[1]=testtestxx
doit: s="testtestxx" buf="12345678" i=1
doit: s="testtestxx" buf="testtestxx" i=1
*** stack smashing detected ***: terminated
[Windows Message Box: Debug/Abort Program ?]
Christian
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list