Just to share with fellow developers, in particular those who maintain
scientific software projects which still quite often come without
thorough unittests batteries.

Within NeuroDebian we have been preparing a package of AFNI (which now could
soon be uploaded to Debian proper) which, unfortunately, does not have/ship any
test suite.  To add oil into the fire, for "proper" building we maintain
a separate cmake build infrastructure.

Recently I have (blindly) enabled hardening flags and was pleasantly surprised
that no major issues popped up.  Yesterday I got a report from users that
a command providing a simple 'math' interface fails to compute a simple
product:

$> /usr/lib/afni/bin/ccalc -eval 1000 \* 10 
10.000000

long story short -- reason was the combination of optimization (-O1 was enough)
+  -D_FORTIFY_SOURCE=2 to fall into the "undefined"  darkness of C standard(s)
in s*printf() functions (man 3 sprintf, search for undefined or NOTES).

Original report
https://sourceware.org/bugzilla/show_bug.cgi?id=7075

On "your" code you could look for some (no multiline or more complex
expressions, no snprintf) hits in sprintf with following grep

grep -re 'sprintf(\s*\(\w\+\)\s*,[^,]\+,\s*\1\>' *

unfortunately codesearch.d.n seems to not have support for referencing a
group in regexp yet, thus couldn't search for obvious hits within archive.
If anyone comes up with proper parser/analyzer to catch those -- I would
be very grateful (I am surprised that gcc doesn't issue any warning).

To mitigate this issue, besides reporting upstream, for now I had to disable
this fortification with

DEB_BUILD_HARDENING_FORTIFY := 0
preceding inclusion of /usr/share/hardening-includes/hardening.make

P.S. Written with the sole hope to save someone unpleasant (or even
     painful) moments of stepping into this issue on your own.

Best regards,
-- 
Yaroslav O. Halchenko, Ph.D.
http://neuro.debian.net http://www.pymvpa.org http://www.fail2ban.org
Senior Research Associate,     Psychological and Brain Sciences Dept.
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130920190537.gz27...@onerussian.com

Reply via email to