[illumos-Advocates] [RTI] 1222-1224, 1230 constant string overwrites and GCC4.x stdarg
Richard Lowe
richlowe at richlowe.net
Sat Jul 23 13:50:27 PDT 2011
outgoing:
comparing with /builds/illumos-clone
searching for changes
changeset: 13410:887780fcf2f5
user: Richard Lowe <richlowe at richlowe.net>
date: Mon Jun 27 18:29:43 2011 +0100
description:
1224 lp may overwrite constant data
Reviewed by: Gordon Ross <gwr at nexenta.com>
Reviewed by: Albert Lee <trisk at nexenta.com>
modified:
usr/src/cmd/lp/cmd/lpadmin/options.c
usr/src/cmd/lp/cmd/lpfilter.c
usr/src/cmd/lp/cmd/lpforms.c
usr/src/cmd/lp/cmd/lpusers.c
usr/src/cmd/lp/lib/lp/isterminfo.c
usr/src/cmd/lp/lib/lp/tidbit.c
changeset: 13411:23161d58e78a
user: Richard Lowe <richlowe at richlowe.net>
date: Thu Jun 16 07:46:34 2011 +0100
description:
1223 catman may modify constant data
Reviewed by: Gordon Ross <gwr at nexenta.com>
Reviewed by: Albert Lee <trisk at nexenta.com>
modified:
usr/src/cmd/man/src/man.c
changeset: 13412:b5ca1dcc04d2
user: Richard Lowe <richlowe at richlowe.net>
date: Wed Jun 15 13:30:14 2011 +0100
description:
1222 crypt may modify constant data
Reviewed by: Gordon Ross <gwr at nexenta.com>
Reviewed by: Albert Lee <trisk at nexenta.com>
modified:
usr/src/cmd/crypt/crypt.c
changeset: 13413:862e53600e55
tag: tip
user: Richard Lowe <richlowe at richlowe.net>
date: Mon May 16 00:20:30 2011 +0100
description:
1230 need support for recent gcc stdarg builtins
1240 va_*.h use non-existent __GNUC_MINOR
Reviewed by: Alexander Eremin <alexander.eremin at nexenta.com>
Reviewed by: Jason King <jason.brian.king at gmail.com>
Reviewed by: Gordon Ross <gwr at nexenta.com>
Reviewed by: Garret D'Amore <garrett at nexenta.com>
modified:
usr/src/uts/common/sys/va_impl.h
usr/src/uts/common/sys/va_list.h
pbchk:
Copyright check:
usr/src/cmd/crypt/crypt.c: no copyright claim for current year found
usr/src/cmd/lp/cmd/lpadmin/options.c: no copyright claim for current year found
usr/src/cmd/lp/cmd/lpfilter.c: no copyright claim for current year found
usr/src/cmd/lp/cmd/lpforms.c: no copyright claim for current year found
usr/src/cmd/lp/cmd/lpusers.c: no copyright claim for current year found
usr/src/cmd/lp/lib/lp/isterminfo.c: no copyright claim for current year found
usr/src/cmd/lp/lib/lp/tidbit.c: no copyright claim for current year found
usr/src/cmd/man/src/man.c: no copyright claim for current year found
usr/src/uts/common/sys/va_impl.h: no copyright claim for current year found
usr/src/uts/common/sys/va_list.h: no copyright claim for current year found
C style check:
Skipping usr/src/cmd/lp/cmd/lpadmin/options.c...
Skipping usr/src/cmd/lp/cmd/lpfilter.c...
Skipping usr/src/cmd/lp/cmd/lpforms.c...
Skipping usr/src/cmd/lp/cmd/lpusers.c...
Skipping usr/src/cmd/lp/lib/lp/isterminfo.c...
Skipping usr/src/cmd/lp/lib/lp/tidbit.c...
Header format check:
Java style check:
Mapfile comment check:
File permission check:
Keywords check:
Comments check:
Checking for new tags:
Checking for multiple heads (or branches):
Checking for branch changes:
Checking for uncommitted changes:
Checking for merges:
As you can see, I NOT'd cmd/lp from cstyle, because it is utterly
rank. (I didn't make it worse).
testing:
String overwrites: These come from a workspace in which I'm working
on GCC4.x support. GCC puts constant strings in read-only memory.
Testing was via using the software (after building it with 4.x), and
then repeated here in a normal build, except in the case of catman.
catman:
built with GCC4:
unset MANPATH; catman -w
(the bug is MANPATH/PATH sensitive)
lp:
run all the options-related ones with incorrect options, etc.
built lp with -xstrconst (to get the reliable crash) and:
lpfilter -f posttek -F /etc/lp/fd/posttek.fd
(using posttek from build 148)
crypt:
Built with -xstrconst:
crypt foo </etc/passwd
The versions tested using xstrconst v. gcc4 were largely out of
convenience of forcing the appropriate strings to be crashily
constant, for ease of testing.
stdarg changes:
Built illumos with studio+gcc3
Built illumos+patches with gcc4+studio
Tried to build a simple stdarg-using test program using an old GCC,
prior that supported by our headers (2.95), and watched it fail.
Built that same test program using a GCC old enough to take the
__builtin_stdarg_start path (GCC 3.2.1 from SunFreeware), and
verified it built and ran. Verified with -E that it did take the
path through the conditional I expected.
gcc3.2:
% /usr/local/bin/gcc -E foo.c -nostdinc -I $ROOT/usr/include 2>&1 | grep '^ *__builtin'
__builtin_stdarg_start(ap, fmt);
gcc3.4:
% gcc -E foo.c -nostdinc -I $ROOT/usr/include 2>&1 | grep '^ *__builtin'
__builtin_va_start(ap, fmt);
gcc4.4:
% /opt/gcc/4.4.4/bin/gcc -E foo.c -nostdinc -I $ROOT/usr/include 2>&1 | grep '^ *__builtin'
__builtin_va_start(ap, fmt);
I would REALLY appreciate other ideas for testing this, as I am,
obviously, pretty worried about breaking something so critical.
mail_msg inline below.
-- Rich
==== Nightly distributed build started: Fri Jul 22 23:55:33 BST 2011 ====
==== Nightly distributed build completed: Sat Jul 23 01:24:56 BST 2011 ====
==== Total build time ====
real 1:29:22
==== Build environment ====
/usr/bin/uname
SunOS richlowe.openindiana.org 5.11 oi_148 i86pc i386 i86pc
/opt/SUNWspro/bin/dmake
dmake: Sun Distributed Make 7.8 SunOS_i386 Patch 126504-01 2007/07/19
number of concurrent jobs = 16
32-bit compiler
/opt/onbld/bin/i386/cw -_cc
cw version 1.29
primary: /opt/onnv-tools/SUNWspro/SS12/bin/cc
cc: Sun C 5.9 SunOS_i386 Patch 124868-10 2009/04/30
shadow: /usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
64-bit compiler
/opt/onbld/bin/i386/cw -_cc
cw version 1.29
primary: /opt/onnv-tools/SUNWspro/SS12/bin/cc
cc: Sun C 5.9 SunOS_i386 Patch 124868-10 2009/04/30
shadow: /usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
/usr/java/bin/javac
java full version "1.6.0_21-b06"
/usr/ccs/bin/as
as: Sun Compiler Common 12 SunOS_i386 snv_121 08/03/2009
/usr/ccs/bin/ld
ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1725
Build project: #build
Build taskid: 2618
==== Nightly argument issues ====
==== Build version ====
illumos-richlowe_73
==== Make clobber ERRORS ====
==== Make tools clobber ERRORS ====
==== Tools build errors ====
==== Build errors (non-DEBUG) ====
==== Build warnings (non-DEBUG) ====
==== Elapsed build time (non-DEBUG) ====
real 29:28.2
user 4:00:03.6
sys 53:15.8
==== Build noise differences (non-DEBUG) ====
==== package build errors (non-DEBUG) ====
==== Build errors (DEBUG) ====
==== Build warnings (DEBUG) ====
==== Elapsed build time (DEBUG) ====
real 25:52.4
user 3:24:20.7
sys 45:42.3
==== Build noise differences (DEBUG) ====
==== package build errors (DEBUG) ====
==== Validating manifests against proto area ====
==== Check ELF runtime attributes ====
==== Diff ELF runtime attributes (since last build) ====
==== 'dmake lint' of src ERRORS ====
==== Elapsed time of 'dmake lint' of src ====
real 19:43.0
user 1:07:34.1
sys 49:21.7
==== lint warnings src ====
==== lint noise differences src ====
==== cstyle/hdrchk errors ====
==== Find core files ====
==== Diff unreferenced files (since last build) ====
==== Check lists of files ====
==== Impact on file permissions ====
More information about the Advocates
mailing list