source: packages/net/dsniff/patches/003-gdbm.patch @ 15247

Last change on this file since 15247 was 15247, checked in by nico, 8 years ago

[packages] remove 'svn:keywords' property on /packages as well, not needed anymore after [15244]

  • Property svn:eol-style set to native
File size: 4.5 KB
  • configure

    diff -Nur dsniff-2.3/configure dsniff-2.3.patched/configure
    old new  
    1616ac_help="$ac_help 
    1717  --with-db=DIR           use Berkeley DB (with --enable-compat185) in DIR" 
    1818ac_help="$ac_help 
     19  --with-gdbm=DIR         use GNU DBM in DIR" 
     20ac_help="$ac_help 
    1921  --with-libpcap=DIR      use libpcap in DIR" 
    2022ac_help="$ac_help 
    2123  --with-libnet=DIR       use libnet in DIR" 
     
    30513053 
    30523054fi 
    30533055 
     3056echo $ac_n "checking for libgdbm""... $ac_c" 1>&6 
     3057echo "configure:3059: checking for libgdbm" >&5 
     3058# Check whether --with-gdbm or --without-gdbm was given. 
     3059if test "${with_gdbm+set}" = set; then 
     3060  withval="$with_gdbm" 
     3061   case "$withval" in 
     3062  yes|no) 
     3063     echo "$ac_t""no" 1>&6 
     3064     ;; 
     3065  *) 
     3066     echo "$ac_t""$withval" 1>&6 
     3067     if test -f $withval/include/gdbm.h -a -f $withval/lib/libgdbm.a; then 
     3068        owd=`pwd` 
     3069        if cd $withval; then withval=`pwd`; cd $owd; fi 
     3070        DBINC="-I$withval/include" 
     3071        DBLIB="-L$withval/lib -lgdbm" 
     3072     else 
     3073        { echo "configure: error: gdbm.h or libgdbm.a not found in $withval" 1>&2; exit 1; } 
     3074     fi 
     3075     ;; 
     3076  esac  
     3077else 
     3078   if test -f ${prefix}/include/gdbm.h; then 
     3079     LNETINC="-I${prefix}/include" 
     3080     LNETLIB="-L${prefix}/lib -lgdbm" 
     3081  elif test -f /usr/include/gdbm.h; then 
     3082     LNETLIB="-lgdbm" 
     3083  else 
     3084     echo "$ac_t""no" 1>&6 
     3085     { echo "configure: error: libgdbm not found" 1>&2; exit 1; } 
     3086  fi 
     3087  echo "$ac_t""yes" 1>&6  
    30543088 
     3089fi 
    30553090 
    30563091 
    30573092echo $ac_n "checking for libnet""... $ac_c" 1>&6 
  • dsniff-2.3

    diff -Nur dsniff-2.3/record.c dsniff-2.3.patched/record.c
    old new  
    1313#include <stdio.h> 
    1414#include <time.h> 
    1515#include <md5.h> 
    16 #ifdef HAVE_DB_185_H 
    17 #define DB_LIBRARY_COMPATIBILITY_API 
    18 #include <db_185.h> 
    19 #elif HAVE_DB_H 
    20 #include <db.h> 
    21 #endif 
     16#include <gdbm.h> 
    2217#include <libnet.h> 
    2318#include "options.h" 
    2419#include "record.h" 
     
    3429        struct netobj   data; 
    3530}; 
    3631         
    37 static DB *db; 
     32GDBM_FILE dbf; 
    3833 
    3934static int 
    4035xdr_rec(XDR *xdrs, struct rec *rec) 
     
    6156         
    6257        tm = localtime(&rec->time); 
    6358        strftime(tstr, sizeof(tstr), "%x %X", tm); 
    64          
    6559        srcp = libnet_host_lookup(rec->src, Opt_dns); 
    6660        dstp = libnet_host_lookup(rec->dst, Opt_dns); 
    6761 
     
    8680        fflush(stdout); 
    8781} 
    8882 
    89 static DBT * 
     83static datum 
    9084record_hash(struct rec *rec) 
    9185{ 
    92         static DBT key; 
     86        static datum key; 
    9387        static u_char hash[16]; 
    9488        MD5_CTX ctx; 
    9589 
     
    10296        MD5Update(&ctx, rec->data.n_bytes, rec->data.n_len); 
    10397        MD5Final(hash, &ctx); 
    10498 
    105         key.data = hash; 
    106         key.size = sizeof(hash); 
     99        key.dptr = hash; 
     100        key.dsize = sizeof(hash); 
    107101         
    108         return (&key); 
     102        return (key); 
    109103} 
    110104 
    111105static int 
    112106record_save(struct rec *rec) 
    113107{ 
    114         DBT *key, data; 
     108        datum key, data; 
    115109        XDR xdrs; 
    116110        u_char buf[2048]; 
    117111         
     
    120114        if (!xdr_rec(&xdrs, rec)) 
    121115                return (0); 
    122116         
    123         data.data = buf; 
    124         data.size = xdr_getpos(&xdrs); 
     117        data.dptr = buf; 
     118        data.dsize = xdr_getpos(&xdrs); 
    125119         
    126120        xdr_destroy(&xdrs); 
    127121 
    128122        key = record_hash(rec); 
    129123         
    130         if (db->put(db, key, &data, R_NOOVERWRITE) == 0) 
    131                 db->sync(db, 0); 
     124        if (gdbm_store(dbf, key, data, GDBM_INSERT) == 0) 
     125                gdbm_sync(dbf); 
    132126         
    133127        return (1); 
    134128} 
     
    136130void 
    137131record_dump(void) 
    138132{ 
    139         DBT key, data; 
     133        datum nextkey, key, content; 
    140134        XDR xdrs; 
    141135        struct rec rec; 
    142136         
    143         while (db->seq(db, &key, &data, R_NEXT) == 0) {  
     137        key = gdbm_firstkey(dbf); 
     138        while (key.dptr) {       
     139                nextkey = gdbm_nextkey(dbf, key); 
     140                content = gdbm_fetch(dbf, key); 
    144141                memset(&rec, 0, sizeof(rec)); 
    145                 xdrmem_create(&xdrs, data.data, data.size, XDR_DECODE); 
    146                  
     142                xdrmem_create(&xdrs, content.dptr, content.dsize, XDR_DECODE); 
    147143                if (xdr_rec(&xdrs, &rec)) { 
    148144                        record_print(&rec); 
    149145                } 
    150146                xdr_destroy(&xdrs); 
     147                free(key.dptr); 
     148                key = nextkey; 
    151149        } 
    152150} 
    153151 
     
    155153record_init(char *file) 
    156154{ 
    157155        int flags, mode; 
    158          
     156        // needed for gdbm_open, which does not have the option to create 
     157        // a database in memory 
     158        if(file == NULL) { 
     159                char *record_file = "/tmp/.dsniff.db"; 
     160                file = record_file; 
     161        } 
     162 
    159163        if (Opt_read) { 
    160                 flags = O_RDONLY; 
     164                flags = GDBM_READER; 
    161165                mode = 0; 
    162166        } 
    163167        else { 
    164                 flags = O_RDWR|O_CREAT; 
     168                flags = GDBM_WRCREAT; 
    165169                mode = S_IRUSR|S_IWUSR; 
    166170        } 
    167         if ((db = dbopen(file, flags, mode, DB_BTREE, NULL)) == NULL) 
     171 
     172        if ((dbf = gdbm_open(file, 1024, flags, mode, NULL)) == NULL) 
    168173                return (0); 
    169174 
    170175        return (1); 
     
    203208void 
    204209record_close(void) 
    205210{ 
    206         db->close(db); 
     211        gdbm_close(dbf); 
    207212} 
    208213 
Note: See TracBrowser for help on using the repository browser.