Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/testcompile.sh

    r19 r30  
    11#! /bin/sh
    22
    3 MAXTEST=28; export MAXTEST
     3#
     4# Copyright Rainer Wichmann (2006)
     5#
     6# License Information:
     7# This program is free software; you can redistribute it and/or modify
     8# it under the terms of the GNU General Public License as published by
     9# the Free Software Foundation; either version 2 of the License, or
     10# (at your option) any later version.
     11#
     12# This program is distributed in the hope that it will be useful,
     13# but WITHOUT ANY WARRANTY; without even the implied warranty of
     14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15# GNU General Public License for more details.
     16#
     17# You should have received a copy of the GNU General Public License
     18# along with this program; if not, write to the Free Software
     19# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     20#
     21
     22MAXTEST=57; export MAXTEST
     23
     24run_flawfinder ()
     25{
     26    flawfinder --minlevel=3 --quiet src/s*.c | \
     27        egrep '^No hits found.' >/dev/null 2>&1
     28    if [ $? -eq 0 ]; then
     29        [ -z "$quiet" ] &&     log_ok   $2 ${MAXTEST} "$TEST";
     30    else
     31        flawfinder --minlevel=3 --quiet src/s*.c >test_log 2>&1
     32        [ -z "$quiet" ] && log_fail $2 ${MAXTEST} "$TEST";
     33        return 1
     34    fi
     35}
     36
     37run_smatch ()
     38{
     39    export CDIR=`pwd`;
     40
     41    if [ -z "$doall" ]; then
     42        [ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (smatch)";
     43        return 0
     44    fi
     45
     46    if [ "x$3" = "xdebug" ]; then memcheck=debug; else memcheck=simple; fi
     47    if [ -f ../sm_scripts/smatch.pm ]; then
     48        (
     49            cd ../sm_scripts;
     50           
     51            for i in ${CDIR}/*.c.sm ; do
     52                # echo $i;
     53                cat $i | ./unreached_code.pl;
     54                cat $i | ./ampersand_missing.sh;
     55                cat $i | ./uninitialized.pl;
     56                cat $i | ./eqeq.pl;
     57                cat $i | ./for_bounds.pl;
     58                cat $i | ./unchecked_returns.pl;
     59                cat $i | ./unreached_code.pl;
     60                cat $i | ./uninitialized.pl;
     61                # from http://people.redhat.com/mstefani/wine/smatch/
     62                if [ -f ./while_for_check.pl ]; then
     63                    cat $i | ./while_for_check.pl;
     64                fi
     65                # --> end wine <--
     66                # samhain specific
     67                if [ $memcheck = xsimple ]; then
     68                    if [ -f ./samhain_unfree.pl ]; then
     69                        cat $i | ./samhain_unfree.pl | \
     70                            egrep -v 'x_cutest_.*Test_' | \
     71                            egrep -v 'x_sh_unix.c .... .... sh_unix_copyenv';
     72                    fi
     73                fi
     74                if [ $memcheck = xdebug ]; then
     75                    if [ -f ./samhain_unfree_debug.pl ]; then
     76                        cat $i | ./samhain_unfree_debug.pl | \
     77                            egrep -v 'x_cutest_.*Test_' | \
     78                            egrep -v 'x_sh_unix.c .... .... sh_unix_copyenv';
     79                    fi
     80                fi
     81                # --> end samhain specific <--
     82                #cat $i | ./unfree.pl | \
     83                #    egrep -v 'x_cutest_.*Test_' | \
     84                #    grep -v 'x_sh_unix.c .... .... sh_unix_copyenv';
     85                touch list_null_funcs_uniq;
     86                cat $i | ./deference_check.pl;
     87                rm -f list_null_funcs_uniq;
     88                rm -f $i
     89            done
     90        ) >test_log_smatch 2>&1
     91        if [ -f test_log_smatch ]; then
     92            lines=`cat test_log_smatch | wc -l`
     93            if [ $lines -ne 0 ]; then
     94                cat test_log_smatch
     95                rm -f test_log_smatch
     96                [ -z "$quiet" ] && log_fail $2 ${MAXTEST} "$TEST (smatch)";
     97                return 1
     98            fi
     99        fi
     100        [ -z "$quiet" ] && log_ok $2 ${MAXTEST} "$TEST (smatch)";
     101        return 0
     102    fi
     103    [ -z "$quiet" ] && log_skip $2 ${MAXTEST} "$TEST (smatch)";
     104    return 0
     105}
    4106
    5107testmake ()
     
    8110        if test x$1 = x0; then
    9111                [ -z "$verbose" ]     ||  log_msg_ok  "configure...  $TEST";
    10                 $MAKE cutest > /dev/null 2>> test_log
     112                $MAKE ${SMATCH} cutest > /dev/null 2>> test_log
    11113                if test x$? = x0; then
    12114                    [ -z "$verbose" ] || log_msg_ok   "make cutest... $TEST";
     
    34136        log_start "COMPILE"
    35137
     138        if [ -f /usr/local/gcc-smatch/bin/gcc ]; then
     139            SAVE_CC="${CC}"
     140            SMATCH="DBGDEF=--smatch"; export SMATCH
     141            CC="/usr/local/gcc-smatch/bin/gcc"; export CC
     142        fi
     143
    36144        num=0
    37145        numfail=0
    38146
    39147        #
     148        # test flawfinder
     149        #
     150        TEST="${S}check w/flawfinder${E}"
     151        #
     152        #
     153        let "num = num + 1" >/dev/null
     154        FLAWFINDER=`find_path flawfinder`
     155        #
     156        if [ -z "$FLAWFINDER" ]; then
     157            log_skip $num $MAXTEST 'check w/flawfinder (not in PATH)'
     158        else
     159            run_flawfinder 0 $num || let "numfail = numfail + 1"  >/dev/null
     160        fi
     161        #
     162
     163        #
    40164        # test standalone compilation
    41165        #
    42         TEST="${S}standalone agent w/suidcheck${E}"
     166        TEST="${S}standalone w/suidcheck${E}"
    43167        #
    44168        if test -r "Makefile"; then
     
    50174        let "num = num + 1" >/dev/null
    51175        testmake $? $num || let "numfail = numfail + 1"  >/dev/null
     176        let "num = num + 1" >/dev/null
     177        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    52178
    53179        #
    54180        # test standalone compilation
    55181        #
    56         TEST="${S}standalone agent w/mounts-check and w/userfiles${E}"
     182        TEST="${S}standalone w/mounts-check w/userfiles${E}"
    57183        #
    58184        if test -r "Makefile"; then
     
    64190        let "num = num + 1" >/dev/null
    65191        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     192        let "num = num + 1" >/dev/null
     193        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    66194
    67195
     
    69197        # test standalone compilation
    70198        #
    71         TEST="${S}standalone agent w/timeserver and w/message-queue${E}"
     199        TEST="${S}standalone w/timeserver and w/msgqueue${E}"
    72200        #
    73201        if test -r "Makefile"; then
     
    79207        let "num = num + 1" >/dev/null
    80208        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     209        let "num = num + 1" >/dev/null
     210        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    81211
    82212        #
    83213        # test standalone compilation with --with-nocl=PW
    84214        #
    85         TEST="${S}standalone agent w/nocl${E}"
     215        TEST="${S}standalone w/nocl${E}"
    86216        #
    87217        if test -r "Makefile"; then
     
    93223        let "num = num + 1" >/dev/null
    94224        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     225        let "num = num + 1" >/dev/null
     226        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    95227
    96228        #
    97229        # test standalone compilation w/ debug
    98230        #
    99         TEST="${S}standalone agent w/debug${E}"
     231        TEST="${S}standalone w/debug${E}"
    100232        #
    101233        if test -r "Makefile"; then
     
    107239        let "num = num + 1" >/dev/null
    108240        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     241        let "num = num + 1" >/dev/null
     242        run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
    109243
    110244        #
    111245        # test standalone compilation w/ gpg
    112246        #
    113         TEST="${S}standalone agent w/gpg${E}"
     247        TEST="${S}standalone w/gpg${E}"
    114248        #
    115249        GPG=`find_path gpg`
     
    118252        if [ -z "$GPG" ]; then
    119253            log_skip $num $MAXTEST 'gpg not in PATH'
     254            let "num = num + 1" >/dev/null
    120255        else
    121256            if test -r "Makefile"; then
     
    126261            #
    127262            testmake $? $num || let "numfail = numfail + 1" >/dev/null
     263            let "num = num + 1" >/dev/null
     264            run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    128265        fi
    129266
     
    131268        # test standalone compilation w/stealth
    132269        #
    133         TEST="${S}standalone agent w/stealth${E}"
     270        TEST="${S}standalone w/stealth${E}"
    134271        #
    135272        if test -r "Makefile"; then
     
    141278        let "num = num + 1" >/dev/null
    142279        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     280        let "num = num + 1" >/dev/null
     281        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    143282
    144283        #
    145284        # test standalone compilation w/logwatch
    146285        #
    147         TEST="${S}standalone agent w/login-watch${E}"
     286        TEST="${S}standalone w/login-watch${E}"
    148287        #
    149288        if test -r "Makefile"; then
     
    155294        let "num = num + 1" >/dev/null
    156295        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     296        let "num = num + 1" >/dev/null
     297        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    157298
    158299        #
    159300        # test standalone compilation w/mysql
    160301        #
    161         TEST="${S}standalone agent w/mysql${E}"
     302        TEST="${S}standalone w/mysql${E}"
    162303        #
    163304        if test -r "Makefile"; then
     
    169310        let "num = num + 1" >/dev/null
    170311        testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
     312        let "num = num + 1" >/dev/null
     313        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    171314
    172315        #
    173316        # test standalone compilation w/postgresql
    174317        #
    175         TEST="${S}standalone agent w/postgresql${E}"
     318        TEST="${S}standalone w/postgresql${E}"
    176319        #
    177320        if test -r "Makefile"; then
     
    183326        let "num = num + 1" >/dev/null
    184327        testmake $? $num "skip" || let "numfail = numfail + 1" >/dev/null
     328        let "num = num + 1" >/dev/null
     329        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    185330
    186331        #
    187332        # test standalone compilation
    188333        #
    189         TEST="${S}standalone agent w/o mail${E}"
     334        TEST="${S}standalone w/o mail${E}"
    190335        #
    191336        if test -r "Makefile"; then
     
    197342        let "num = num + 1" >/dev/null
    198343        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     344        let "num = num + 1" >/dev/null
     345        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    199346
    200347        #
    201348        # test standalone compilation
    202349        #
    203         TEST="${S}standalone agent w/o external scripts${E}"
     350        TEST="${S}standalone w/o external${E}"
    204351        #
    205352        if test -r "Makefile"; then
     
    211358        let "num = num + 1" >/dev/null
    212359        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     360        let "num = num + 1" >/dev/null
     361        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    213362
    214363        # echo; echo "${S}__ TEST CLIENT/SERVER __${E}"; echo;
     
    227376        let "num = num + 1" >/dev/null
    228377        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     378        let "num = num + 1" >/dev/null
     379        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    229380       
    230381        if test -r "Makefile"; then
     
    236387        let "num = num + 1" >/dev/null
    237388        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     389        let "num = num + 1" >/dev/null
     390        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    238391
    239392        #
     
    247400        if [ -z "$GPG" ]; then
    248401            log_skip $num $MAXTEST 'gpg not in PATH'
    249             let "num = num + 1" >/dev/null
    250             log_skip $num $MAXTEST 'gpg not in PATH'
     402            let "num = num + 3" >/dev/null
    251403        else
    252404            if test -r "Makefile"; then
     
    257409            #
    258410            testmake $? $num || let "numfail = numfail + 1" >/dev/null
     411            let "num = num + 1" >/dev/null
     412            run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    259413            #
    260414            if test -r "Makefile"; then
     
    266420            let "num = num + 1" >/dev/null
    267421            testmake $? $num || let "numfail = numfail + 1" >/dev/null
     422            let "num = num + 1" >/dev/null
     423            run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    268424        fi
    269425
     
    282438        let "num = num + 1" >/dev/null
    283439        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     440        let "num = num + 1" >/dev/null
     441        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    284442        #
    285443        if test -r "Makefile"; then
     
    291449        let "num = num + 1" >/dev/null
    292450        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     451        let "num = num + 1" >/dev/null
     452        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    293453
    294454        #
     
    305465        let "num = num + 1" >/dev/null
    306466        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     467        let "num = num + 1" >/dev/null
     468        run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
    307469        #
    308470        if test -r "Makefile"; then
     
    314476        let "num = num + 1" >/dev/null
    315477        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     478        let "num = num + 1" >/dev/null
     479        run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
    316480
    317481        #
     
    328492        let "num = num + 1" >/dev/null
    329493        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     494        let "num = num + 1" >/dev/null
     495        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    330496        #
    331497        if test -r "Makefile"; then
     
    337503        let "num = num + 1" >/dev/null
    338504        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     505        let "num = num + 1" >/dev/null
     506        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    339507
    340508        #
     
    351519        let "num = num + 1" >/dev/null
    352520        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     521        let "num = num + 1" >/dev/null
     522        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    353523        #
    354524        if test -r "Makefile"; then
     
    360530        let "num = num + 1" >/dev/null
    361531        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     532        let "num = num + 1" >/dev/null
     533        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    362534
    363535        #
     
    374546        let "num = num + 1" >/dev/null
    375547        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     548        let "num = num + 1" >/dev/null
     549        run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
    376550        #
    377551        if test -r "Makefile"; then
     
    383557        let "num = num + 1" >/dev/null
    384558        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     559        let "num = num + 1" >/dev/null
     560        run_smatch $? $num debug || let "numfail = numfail + 1"  >/dev/null
    385561
    386562        #
    387563        # test client/server compilation
    388564        #
    389         TEST="${S}client/server application w/o external scripts${E}"
     565        TEST="${S}client/server application w/o external${E}"
    390566        #
    391567        if test -r "Makefile"; then
     
    397573        let "num = num + 1" >/dev/null
    398574        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     575        let "num = num + 1" >/dev/null
     576        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
    399577        #
    400578        if test -r "Makefile"; then
     
    406584        let "num = num + 1" >/dev/null
    407585        testmake $? $num || let "numfail = numfail + 1" >/dev/null
     586        let "num = num + 1" >/dev/null
     587        run_smatch $? $num || let "numfail = numfail + 1"  >/dev/null
     588
     589        [ -z "${SMATCH}" ] || { CC="${SAVE_CC}"; export CC; }
    408590
    409591        log_end "COMPILE"
Note: See TracChangeset for help on using the changeset viewer.