[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