close Warning: Can't synchronize with repository "(default)" (The repository directory has changed, you should resynchronize the repository with: trac-admin $ENV repository resync '(default)'). Look in the Trac log for more information.

Changeset 51


Ignore:
Timestamp:
Jul 17, 2006, 10:31:56 PM (20 years ago)
Author:
rainer
Message:

Fix problems with linux kernel 2.6.17

Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/configure.ac

    r50 r51  
    1313dnl start
    1414dnl
    15 AM_INIT_AUTOMAKE(samhain, 2.2.1c)
     15AM_INIT_AUTOMAKE(samhain, 2.2.2)
    1616AC_CANONICAL_HOST
    1717
  • trunk/docs/Changelog

    r50 r51  
    1 2.2.1c
     12.2.2 (17-07-2006)
     2        * minor fixes for regression test scripts
     3        * minor updates to the manual (suggested by Brian A. Seklecki)
     4        * fix sh_kern.c, kern_head.c: kernel rootkit detection for 2.6.17+
     5          (problem reported by Leonhard Maylein)
     6        * fix samhain_hide.c for 2.6.17+: use module_param() if MODULE_PARM
     7          is not defined
     8
     92.2.1c (11-07-2006)
    210        * fix sh_extern.c: sh_ext_add_default() cast to (void) was too early
    311          (Solaris 8 build failure reported by Jesse)
  • trunk/src/kern_head.c

    r49 r51  
    354354
    355355
    356 struct inode_operations {
    357   int (*create) (int *,int *,int);
    358   int * (*lookup) (int *,int *);
    359   int (*link) (int *,int *,int *);
    360   int (*unlink) (int *,int *);
    361   int (*symlink) (int *,int *,const char *);
    362   int (*mkdir) (int *,int *,int);
    363   int (*rmdir) (int *,int *);
    364   int (*mknod) (int *,int *,int,int);
    365   int (*rename) (int *, int *,
    366                  int *, int *);
    367   int (*readlink) (int *, char *,int);
    368   int (*follow_link) (int *, int *);
    369   void (*truncate) (int *);
    370   int (*permission) (int *, int);
    371   int (*revalidate) (int *);
    372   /*
    373     int (*setattr) (int *, int *);
    374     int (*getattr) (int *, int *);
    375     int (*setxattr) (int *, const char *, void *, size_t, int);
    376     ssize_t (*getxattr) (int *, const char *, void *, size_t);
    377     ssize_t (*listxattr) (int *, char *, size_t);
    378     int (*removexattr) (int *, const char *);
    379   */
    380 };
    381 
    382 struct file_operations {
    383   int (*create) (int *,int *,int);
    384 };
    385 
    386 struct proc_dir_entry {
    387   unsigned short low_ino;
    388   unsigned short namelen;
    389   const char * name;
    390   mode_t mode;
    391   nlink_t nlink;
    392   uid_t uid;
    393   gid_t gid;
    394   unsigned long size;
    395   struct inode_operations * proc_iops;
    396   struct file_operations * proc_fops;
    397   /*
    398   get_info_t *get_info;
    399   struct module *owner;
    400   struct proc_dir_entry *next, *parent, *subdir;
    401   void *data;
    402   read_proc_t *read_proc;
    403   write_proc_t *write_proc;
    404   atomic_t count;         
    405   int deleted; 
    406   */         
    407 };
    408 
    409 
    410 
    411356int main(int argc, char * argv[])
    412357{
    413358  int i, count, maxcall, qq;
    414359  int which = 4;
     360  int two_six_seventeen_plus = 0;
    415361  smap_entry sh_smap[SH_MAXCALLS];
    416362  struct utsname utbuf;
    … …  
    455401    which = 4;
    456402  else if (strncmp(p, "2.6", 3) == 0)
    457     which = 6;
     403    {
     404      which = 6;
     405      if (17 >= atoi (&p[4]))
     406        {
     407          two_six_seventeen_plus = 1;
     408        }
     409    }
    458410  else
    459411    {
    … …  
    668620  if (proc_root_iops != 0) {
    669621    printf("#define PROC_ROOT_IOPS_LOC %#lx\n\n", proc_root_iops);
     622  }
     623
     624  if (two_six_seventeen_plus == 1) {
     625    printf("#define TWO_SIX_SEVENTEEN_PLUS 1\n\n");
    670626  }
    671627
  • trunk/src/samhain_hide.c

    r6 r51  
    214214static int removeme = 1;
    215215
     216#ifdef MODULE_PARM
    216217MODULE_PARM (removeme, "i");
     218#else
     219module_param(removeme, int, 0444);
     220#endif
     221
     222#ifdef MODULE_PARM_DESC
     223MODULE_PARM_DESC(removeme, "Choose zero for not hiding.");
     224#endif
     225
     226/* LINUX26 */
    217227#endif
    218228
  • trunk/src/sh_kern.c

    r41 r51  
    448448};
    449449
     450/* this one is just for dummy purposes
     451 */
    450452struct file_operations {
    451453  int (*create) (int *,int *,int);
    … …  
    460462  uid_t uid;
    461463  gid_t gid;
    462   unsigned long size;
     464#if defined  TWO_SIX_SEVENTEEN_PLUS
     465  /* size is loff_t in 2.6.17+ kernels */
     466  unsigned long dummy;
     467#endif
     468  unsigned long size;
    463469  struct inode_operations * proc_iops;
    464470  struct file_operations * proc_fops;
    … …  
    892898                       _("proc_root_inode_operations.lookup != proc_root_lookup"));
    893899    }
    894   else if ( ( ((unsigned int) * &proc_root_dir.proc_iops) != proc_root_iops) &&
    895       (proc_root_dir.size != proc_root_iops))
     900  else if ( ( ((unsigned int) * &proc_root_dir.proc_iops) != proc_root_iops)
     901            && (proc_root_dir.size != proc_root_iops))
    896902    {
    897903      sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_KERN_PROC,
  • trunk/test/test.sh

    r30 r51  
    398398}
    399399
     400# This looks silly, but with solaris10/i386 on vmware,
     401# 'sleep' occasionally does not sleep...
     402
     403one_sec_sleep () {
     404    onesdate=`date`
     405    onestest=0
     406    while [ $onestest -eq 0 ]; do
     407        sleep 1
     408        twosdate=`date`
     409        if [ "x$twosdate" = "x$onesdate" ]; then
     410            onestest=0
     411        else
     412            onestest=1
     413        fi
     414    done
     415}
     416
     417five_sec_sleep () {
     418    for f in 1 2 3 4 5; do
     419        one_sec_sleep
     420    done
     421}
     422
    400423do_cleanup () {
    401424    rm -f testrc_1.dyn
  • trunk/test/testext.sh

    r30 r51  
    101101   
    102102        # The shell is too fast ...
    103         sleep 1
     103        one_sec_sleep
    104104        [ -z "$verbose" ] || {
    105105            echo;
  • trunk/test/testrun_1.sh

    r30 r51  
    7676
    7777mod_testdata_11 () {
    78     sleep 1
     78    one_sec_sleep
    7979    echo "foobar" >"${BASE}/c/x"; # bad
    8080    chmod 0555  "${BASE}/a/y";    # bad
    8181    ORIGINAL='SetFilecheckTime=60'
    8282    REPLACEMENT='FileCheckScheduleOne = 6 12 * * *'
    83     ex $RCFILE <<EOF
     83    ex -s $RCFILE <<EOF
    8484%s/${ORIGINAL}/${REPLACEMENT}/g
    8585wq
    … …  
    120120
    121121mod_testdata_10 () {
    122     sleep 1
     122    one_sec_sleep
    123123    echo "foobar" >"${BASE}/b/x"; # ok
    124124    echo "foobar" >"${BASE}/c/x"; # bad
    … …  
    222222
    223223mod_testdata_7 () {
    224     sleep 1
     224    one_sec_sleep
    225225    echo "foobar" >"${BASE}/a/a/a/z" # ok
    226226    echo "foobar" >"${BASE}/a/a/a/x" # bad
    … …  
    275275
    276276mod_testdata_6 () {
    277     sleep 1
     277    one_sec_sleep
    278278    for ff in $TDIRS; do
    279279        echo "foobar" >"${BASE}/${ff}/x"
    … …  
    446446
    447447mod_testdata_4 () {
    448     sleep 1
     448    one_sec_sleep
    449449    echo "foobar" >> "${BASE}/a/a/x"    # Attributes
    450450    echo "foobar" > "${BASE}/a/a/c/foo" # new within LogFiles
    … …  
    535535"
    536536mod_testdata_3 () {
    537     sleep 1
     537    one_sec_sleep
    538538    echo "foobar" > "${BASE}/a/b/foo"   # new within Attributes
    539539    chmod 0555 "${BASE}/a/b"
    … …  
    666666
    667667mod_testdata_1 () {
    668     sleep 1
     668    one_sec_sleep
    669669    touch "${BASE}/a/a/x"
    670670    chmod 0555 "${BASE}/a/a/y"
  • trunk/test/testrun_1b.sh

    r27 r51  
    123123    PID=$!
    124124
    125     sleep 5
     125    five_sec_sleep
    126126
    127127    ./samhain -t check -p none -l info --set-prelude-severity=info --prelude --server-addr 127.0.0.1:5500 >/dev/null
  • trunk/test/testrun_1c.sh

    r30 r51  
    5353
    5454mod_suiddata_6 () {
    55     sleep 1
     55    one_sec_sleep
    5656    chmod 4755 "${BASE}/a/a/y"
    5757}
    5858
    5959chk_suiddata_6 () {
    60     sleep 1
     60    one_sec_sleep
    6161    tmp=`ls -l "${BASE}/a/a/y" 2>/dev/null | awk '{ print $1}'`
    6262    if [ "x$tmp" = "x-rwsr-xr-x" ]; then
    … …  
    9191
    9292mod_suiddata_5 () {
    93     sleep 1
     93    one_sec_sleep
    9494    chmod 4755 "${BASE}/a/a/y"
    9595}
    9696
    9797chk_suiddata_5 () {
    98     sleep 1
     98    one_sec_sleep
    9999    if [ -f "${BASE}/a/a/y" ]; then
    100100        [ -z "$verbose" ] || log_msg_fail "${BASE}/a/a/y (not deleted)";
    … …  
    127127
    128128mod_suiddata_4 () {
    129     sleep 1
     129    one_sec_sleep
    130130    chmod 4755 "${BASE}/a/a/y"
    131131}
    132132
    133133chk_suiddata_4 () {
    134     sleep 1
     134    one_sec_sleep
    135135    tmp=`cat "${BASE}/a/a/y" 2>/dev/null | wc -c`
    136136    if [ $tmp -ne 0 ]; then
    … …  
    164164
    165165mod_suiddata_3 () {
    166     sleep 1
     166    one_sec_sleep
    167167    chmod 4755 "${BASE}/a/a/y"
    168168}
    169169
    170170chk_suiddata_3 () {
    171     sleep 1
     171    one_sec_sleep
    172172    tmp=`ls -l "${BASE}/a/a/y" 2>/dev/null | awk '{ print $1}'`
    173173    if [ "x$tmp" = "x-rwxr-xr-x" ]; then
    … …  
    192192
    193193mod_suiddata_2 () {
    194     sleep 1
     194    one_sec_sleep
    195195    chmod 4755 "${BASE}/a/a/y"
    196196}
    197197
    198198chk_suiddata_2 () {
    199     sleep 1
     199    one_sec_sleep
    200200    tmp=`cat "${BASE}/a/a/y" 2>/dev/null | wc -c`
    201201    if [ $tmp -ne 0 ]; then
    … …  
    218218
    219219mod_suiddata_1 () {
    220     sleep 1
     220    one_sec_sleep
    221221    chmod 4755 "${BASE}/a/a/y"
    222222}
    223223
    224224chk_suiddata_1 () {
    225     sleep 1
     225    one_sec_sleep
    226226    if [ -f "${BASE}/a/a/y" ]; then
    227227        [ -z "$verbose" ] || log_msg_fail "${BASE}/a/a/y (not removed)";
  • trunk/test/testrun_2.sh

    r34 r51  
    3737        ${VALGRIND} ./yule.2 -l info -p none >/dev/null 2>>test_log_valgrind &
    3838        PROC_Y2=$!
    39         sleep 5
     39        five_sec_sleep
    4040
    4141        [ -z "$verbose" ] || {
    … …  
    4848            --server-port=49778 >/dev/null 2>>test_log_valgrind &
    4949        PROC_Y=$!
    50         sleep 5
     50        five_sec_sleep
    5151
    5252        [ -z "$verbose" ] || {
    … …  
    6868        kill $PROC_Y
    6969        kill $PROC_Y2
    70         sleep 5
     70        five_sec_sleep
    7171
    7272        # cp ${LOGFILE}  triple_test
    … …  
    137137        ORIGINAL="UseSeparateLogs=no"
    138138        REPLACEMENT="UseSeparateLogs=yes"
    139         ex $RCFILE <<EOF
     139        ex -s $RCFILE <<EOF
    140140%s/$ORIGINAL/$REPLACEMENT/g
    141141wq
    … …  
    154154        ${VALGRIND} ./yule -l info -p none >/dev/null 2>>test_log_valgrind &
    155155        PROC_Y=$!
    156         sleep 5
     156        five_sec_sleep
    157157
    158158        [ -z "$verbose" ] || {
    … …  
    172172
    173173        kill $PROC_Y
    174         sleep 5
     174        five_sec_sleep
    175175
    176176        if [ -f ${LOGFILE}.${SH_LOCALHOST} ]; then
    … …  
    242242        ORIGINAL_5="dir=1"
    243243        REPLACEMENT_5="#dir=1"
    244         ex $RCFILE <<EOF
     244        ex -s $RCFILE <<EOF
    245245%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
    246246%s/${ORIGINAL_2}/${REPLACEMENT_2}/g
    … …  
    263263        ${VALGRIND} ./yule -p none -e none >/dev/null 2>>test_log_valgrind &
    264264        PROC_Y=$!
    265         sleep 5
     265        five_sec_sleep
    266266
    267267        [ -z "$verbose" ] || {
    … …  
    276276            # echo "PID is ${PROC_S}"
    277277            [ -z "$verbose" ] || log_msg_ok    "samhain.new -t check";
    278             sleep 5
     278            five_sec_sleep
    279279            # Redirect the shells (un-)helpful job monitoring messages.
    280280            # The 'disown' buildin is not portable.
    … …  
    293293
    294294        kill $PROC_Y
    295         sleep 5
     295        five_sec_sleep
    296296
    297297        egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
    … …  
    340340
    341341        # 'id -u' is posix
    342         me=`id -u`
     342        if test -f /usr/xpg4/bin/id
     343        then
     344            me=`/usr/xpg4/bin/id -u`
     345        else
     346            me=`id -u`
     347        fi
    343348
    344349        ORIGINAL_1="SetSocketAllowUid=0"
    345350        REPLACEMENT_1="SetSocketAllowUid=$me"
    346         ex $RCFILE <<EOF
     351        ex -s $RCFILE <<EOF
    347352%s/${ORIGINAL_1}/${REPLACEMENT_1}/g
    348353wq
    … …  
    361366            >/dev/null 2>>test_log_valgrind &
    362367        PROC_Y=$!
    363         sleep 5
     368        five_sec_sleep
    364369
    365370        [ -z "$verbose" ] || {
    … …  
    444449
    445450        kill ${PROC_Y}
    446         sleep 2
     451        one_sec_sleep
     452        one_sec_sleep
    447453        kill -9 ${PROC_Y} >/dev/null 2>&1
    448454
    … …  
    499505            >/dev/null 2>>test_log_valgrind &
    500506        PROC_Y=$!
    501         sleep 5
     507        five_sec_sleep
    502508
    503509        egrep '<!-- head -->' $HTML >/dev/null 2>&1
    … …  
    533539
    534540        kill $PROC_Y
    535         sleep 5
     541        five_sec_sleep
    536542
    537543        # rm -f head.html; rm -f foot.html; rm -f entry.html;
  • trunk/test/testrun_2a.sh

    r44 r51  
    3838        ${VALGRIND} ./yule -l info -p none >/dev/null 2>>test_log_valgrind &
    3939        PROC_Y=$!
    40         sleep 5
     40        five_sec_sleep
    4141
    4242        [ -z "$verbose" ] || {
    … …  
    5656
    5757        kill $PROC_Y
    58         sleep 5
     58        five_sec_sleep
    5959
    6060        egrep "START(>|\").*Yule(>|\")" $LOGFILE >/dev/null 2>&1
  • trunk/test/testrun_2c.sh

    r30 r51  
    9191    ORIGINAL="DatabaseSeverity=none"
    9292    REPLACEMENT="DatabaseSeverity=info"
    93     ex $RCFILE <<EOF
     93    ex -s $RCFILE <<EOF
    9494%s/$ORIGINAL/$REPLACEMENT/g
    9595wq
  • trunk/test/testrun_2d.sh

    r30 r51  
    9393    ORIGINAL="DatabaseSeverity=none"
    9494    REPLACEMENT="DatabaseSeverity=info"
    95     ex $RCFILE <<EOF
     95    ex -s $RCFILE <<EOF
    9696%s/$ORIGINAL/$REPLACEMENT/g
    9797wq
  • trunk/test/testtimesrv.sh

    r30 r51  
    186186        count=0
    187187        until [ -f $PIDFILE ]; do
    188             sleep 1
     188            one_sec_sleep
    189189            let "count = count + 1" >/dev/null
    190190            if [ $count -gt 12 ]; then
    … …  
    241241    count=0
    242242    while [ `kill -0 $PID` ]; do
    243         sleep 1
     243        one_sec_sleep
    244244        let "count = count + 1" >/dev/null
    245245        if [ $count -gt 12 ]; then
    … …  
    261261    tmp2=`grep 'SUSPEND' $LOGFILE | wc -l`
    262262    while [ $tmp2 -ne $2 ]; do
    263         sleep 1
     263        one_sec_sleep
    264264        let "count = count + 1" >/dev/null
    265265        if [ $count -gt 12 ]; then
    … …  
    275275    tmp2=$tmp
    276276    while [ $tmp2 -eq $tmp ]; do
    277         sleep 1
     277        one_sec_sleep
    278278        let "count = count + 1" >/dev/null
    279279        if [ $count -gt 12 ]; then
    … …  
    294294    tmp2=$tmp
    295295    while [ $tmp2 -eq $tmp ]; do
    296         sleep 1
     296        one_sec_sleep
    297297        let "count = count + 1" >/dev/null
    298298        if [ $count -gt 12 ]; then
    … …  
    324324        tmp=`grep CRIT $LOGFILE | grep -v Runtime | wc -l`
    325325        while [ $tmp -lt 2 ]; do
    326             sleep 1
     326            one_sec_sleep
    327327            if [ $count -gt 12 ]; then
    328328                [ -z "$verbose" ] || log_msg_fail "policy count (after)";
    … …  
    336336    tmp2=0
    337337    while [ $tmp2 -ne $2 ]; do
    338         sleep 1
     338        one_sec_sleep
    339339        let "count = count + 1" >/dev/null
    340340        if [ $count -gt 12 ]; then
    … …  
    353353    count=0
    354354    while [ -f $LOGFILE.lock ]; do
    355         sleep 1
     355        one_sec_sleep
    356356        let "count = count + 1" >/dev/null
    357357        if [ $count -gt 12 ]; then
    … …  
    363363    kill -TTOU $PID
    364364
    365     sleep 4
     365    five_sec_sleep
    366366
    367367    if [ -f $LOGFILE.lock ]; then
Note: See TracChangeset for help on using the changeset viewer.