delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2017/10/04/15:18:49

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:from:subject:to:references:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; q=dns; s=default; b=X9rkzOB7+6F4RTx5
YvJ6MwqbtZ4Dew+4S4HwRLhmk4wh4MVcpYMlJpFwxn2RQFn6LVDM7Hg1j0YEch8y
eO6EMkJmY/kx2B+FMC0ULPrOLViBnitDDQYb2LYC2wuGzscuuv56liueRLXGZAiW
6t9t8utnKHIOOuFLr0qZ3IF+0oA=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:from:subject:to:references:message-id:date
:mime-version:in-reply-to:content-type
:content-transfer-encoding; s=default; bh=YKo0pGbEkBabYn6+/R//Bx
AqV6g=; b=iSFsBpBMSlsmlSUK86zgZ4J4P08rcIITWOfk05iTlok8kkXRyERI4G
Xdg2hr1wkhH3rYnIa2nqAw3fWXC0LPFSEiJujMUhK9eXod7FTcnEQfedI00uYAcW
7l7xfG4rTaRkYHlm0owyalNgwkmPCmuTjpVNYkoKHuHUukidb7iXk=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=1.8 required=5.0 tests=BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD autolearn=no version=3.3.2 spammy=HX-Envelope-From:sk:Christi, smashing, sk:i686w6, testtestx
X-HELO: mailout01.t-online.de
From: Christian Franke <Christian DOT Franke AT t-online DOT de>
Subject: Re: problem with i686-w64-mingw32-gcc -fstack-protector-all
To: cygwin AT cygwin DOT com
References: <CAD8GWsuRTR2asWX2zNnYJWj2EwbTVjqb=kx4kh2XxnO4OmW4jg AT mail DOT gmail DOT com>
Message-ID: <1d6ce5fb-ea05-b830-8096-98d839cc6e02@t-online.de>
Date: Wed, 4 Oct 2017 21:18:21 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0 SeaMonkey/2.50
MIME-Version: 1.0
In-Reply-To: <CAD8GWsuRTR2asWX2zNnYJWj2EwbTVjqb=kx4kh2XxnO4OmW4jg@mail.gmail.com>
X-IsSubscribed: yes

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019