Subject: bug#22856: closed (Re: "make check" can start a shell on binary data)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 29 Feb 2016 19:04:02 +0000

Your bug report

#22856: "make check" can start a shell on binary data

which was filed against the automake package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
22856: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22856
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: "make check" can start a shell on binary data
From: Vincent Lefevre <[email-masked]>
To: [email-masked]
Date: Mon, 29 Feb 2016 20:03:47 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Sorry, forget this bug report. After wondering where the problem came
from exactly, I've eventually found that this is some incredible bug
in dash!

-- 
Vincent Lefèvre <[email-masked]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Subject: "make check" can start a shell on binary data
From: Vincent Lefevre <[email-masked]>
To: [email-masked]
Date: Mon, 29 Feb 2016 19:59:47 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

When I cross-compile for Windows and run "make check" without
LOG_COMPILER=wine (by mistake), strange files appear.
For instance, as a simple example with MPFR:

cventin:...re/mpfr-3.1/tests> make tadd.log
FAIL: tadd.exe

The failure is expected, but I get:

-rw-r--r-- 1    491 2016-02-29 19:39:24 tadd.log
-rw-r--r-- 1     84 2016-02-29 19:39:24 tadd.trs
-rw-r--r-- 1      0 2016-02-29 19:39:24 \220\324V\366

Created files like "\220\324V\366" are very annoying. In particular,
they make svn unusable.

tadd.log contains:

./tadd.exe: 1: ./tadd.exe: MZ��¸@º´: not found
./tadd.exe: 2: ./tadd.exe: : not found
./tadd.exe: 1: ./tadd.exe: @.bss : not found
./tadd.exe: 1: ./tadd.exe: .textd*,: not found
./tadd.exe: 3: ./tadd.exe: JPL2@�.idata: not found
./tadd.exe: 3: ./tadd.exe: u
                             : not found
./tadd.exe: 4: ./tadd.exe: ~@0�.CRT4�@0�.tls: not found
./tadd.exe: 5: ./tadd.exe: @B/81P: not found
./tadd.exe: 13: ./tadd.exe: Syntax error: Missing '}'
FAIL tadd.exe (exit status: 2)

So, it appears that tadd.exe (which is a binary[*]) was executed
by a shell!

[*]
$ file tadd.exe
tadd.exe: PE32 executable (console) Intel 80386, for MS Windows

This is confirmed by strace:

[...]
10517 execve("./tadd.exe", ["./tadd.exe"], [/* 116 vars */]) = -1 ENOEXEC (Exec format error)
10517 execve("/bin/sh", ["/bin/sh", "./tadd.exe"], [/* 116 vars */]) = 0
[...]

Concerning the Makefile in the tests:

# Makefile.in generated by automake 1.15 from Makefile.am.
# tests/Makefile.  Generated from Makefile.in by configure.

This is under Debian/unstable.

-- 
Vincent Lefèvre <[email-masked]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)