diff -urp pads-1.2.orig/src/configuration.c pads-1.2/src/configuration.c --- pads-1.2.orig/src/configuration.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/configuration.c 2008-06-30 13:28:28.000000000 -0400 @@ -26,6 +26,9 @@ * **************************************************************************/ #include "configuration.h" +#include "util.h" +#include "bstring/util.h" +#include "monnet.h" /* Variable Declarations */ @@ -44,7 +47,7 @@ void init_configuration (bstring filenam verbose_message("config - Processing '%s'.", bdata(filename)); - if ((fp = fopen(bdata(filename), "r")) == NULL) { + if ((fp = fopen((char *)bdata(filename), "r")) == NULL) { err_message("Unable to open configuration file - %s", bdata(filename)); } @@ -59,7 +62,7 @@ void init_configuration (bstring filenam /* Clean Up */ bdestroy(filedata); bstrListDestroy(lines); - close(fp); + fclose(fp); } /* ---------------------------------------------------------- @@ -147,7 +150,7 @@ void parse_line (bstring line) } else if ((biseqcstr(param, "network")) == 1) { /* NETWORK */ - parse_networks(bdata(value)); + parse_networks((char *)bdata(value)); } diff -urp pads-1.2.orig/src/global.h pads-1.2/src/global.h --- pads-1.2.orig/src/global.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/global.h 2008-06-30 13:28:28.000000000 -0400 @@ -25,6 +25,9 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#ifndef GLOBAL_HEADER +#define GLOBAL_HEADER + #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -68,6 +71,7 @@ #include #include #include +#include #include "bstring/bstrlib.h" @@ -160,3 +164,6 @@ extern GC gc; /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ + +#endif + diff -urp pads-1.2.orig/src/identification.c pads-1.2/src/identification.c --- pads-1.2.orig/src/identification.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/identification.c 2008-06-30 13:28:28.000000000 -0400 @@ -26,6 +26,9 @@ * **************************************************************************/ #include "identification.h" +#include "util.h" +#include "storage.h" +#include "output/output.h" Signature *signature_list; @@ -57,7 +60,7 @@ int init_identification() } /* Open Signature File */ - if ((fp = fopen(bdata(filename), "r")) == NULL) { + if ((fp = fopen((char *)bdata(filename), "r")) == NULL) { err_message("Unable to open signature file - %s", bdata(filename)); } @@ -73,7 +76,7 @@ int init_identification() bdestroy(filename); bdestroy(filedata); bstrListDestroy(lines); - close(fp); + fclose(fp); return 0; } @@ -91,7 +94,7 @@ int init_identification() int parse_raw_signature (bstring line, int lineno) { struct bstrList *raw_sig; - struct bstrList *title; + struct bstrList *title = NULL; Signature *sig; bstring pcre_string; const char *err; /* PCRE */ @@ -101,7 +104,7 @@ int parse_raw_signature (bstring line, i /* Check to see if this line has something to read. */ if (line->data[0] == '\0' || line->data[0] == '#') - return; + return -1; /* Split Line */ if ((raw_sig = bsplit(line, ',')) == NULL) @@ -125,8 +128,10 @@ int parse_raw_signature (bstring line, i /* Split Title */ if (raw_sig->entry[1] != NULL && ret != -1) - if ((title = bsplit(raw_sig->entry[1], '/')) == NULL) - ret = -1; + title = bsplit(raw_sig->entry[1], '/'); + if (title == NULL) + return -1; + if (title->qty < 3) ret = -1; @@ -145,7 +150,7 @@ int parse_raw_signature (bstring line, i /* PCRE */ if (pcre_string != NULL) { - if ((sig->regex = pcre_compile (bdata(pcre_string), 0, &err, &erroffset, NULL)) == NULL) { + if ((sig->regex = pcre_compile ((char *)bdata(pcre_string), 0, &err, &erroffset, NULL)) == NULL) { err_message("Unable to compile signature: %s at line %d (%s)", err, lineno, bdata(line)); ret = -1; @@ -265,7 +270,6 @@ int pcre_identify (struct in_addr ip_add Signature *list = signature_list; int rc; int ovector[15]; - int i; bstring app; while (list != NULL) { @@ -312,18 +316,18 @@ bstring get_app_name (Signature *sig, /* Create Application string using the values in signature[i].title. */ if (sig->title.app != NULL) { - strlcpy(app, bdata(sig->title.app), MAX_APP); + strlcpy(app, (char *)bdata(sig->title.app), MAX_APP); } if (sig->title.ver != NULL) { if (sig->title.ver->slen > 0) { strcat(app, " "); - strlcat(app, bdata(sig->title.ver), MAX_VER); + strlcat(app, (char *)bdata(sig->title.ver), MAX_VER); } } if (sig->title.misc != NULL) { if (sig->title.misc->slen > 0) { strcat(app, " ("); - strlcat(app, bdata(sig->title.misc), MAX_MISC); + strlcat(app, (char *)bdata(sig->title.misc), MAX_MISC); strcat(app, ")"); } } @@ -416,7 +420,8 @@ void print_signature() printf("2a: %s\n", bdata(list->title.app)); printf("2b: %s\n", bdata(list->title.ver)); printf("2c: %s\n", bdata(list->title.misc)); - printf("3: %s\n", list->regex); + // FIXME: This is a compiled expression + // printf("3: %s\n", list->regex); printf("\n"); i++; diff -urp pads-1.2.orig/src/mac-resolution.c pads-1.2/src/mac-resolution.c --- pads-1.2.orig/src/mac-resolution.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/mac-resolution.c 2008-06-30 13:28:28.000000000 -0400 @@ -32,6 +32,7 @@ #ifndef DISABLE_VENDOR #include "mac-resolution.h" +#include "util.h" Vendor *vendor_list = NULL; @@ -60,7 +61,7 @@ int init_mac_resolution (void) { } /* Open Signature File */ - if ((fp = fopen(bdata(filename), "r")) == NULL) { + if ((fp = fopen((char *)bdata(filename), "r")) == NULL) { err_message("Unable to open MAC resolution file - %s", bdata(filename)); } @@ -79,7 +80,7 @@ int init_mac_resolution (void) { bdestroy(filedata); if (lines != NULL) bstrListDestroy(lines); - close(fp); + fclose(fp); return 0; } @@ -99,10 +100,8 @@ int parse_raw_mac (bstring line) char vendor[80]; int m1, m2, m3; - int pos; - /* Parse out the contents of the line. */ - if (sscanf(bdata(line), "%02X:%02X:%02X %80[^,\n],\n", &m1, &m2, &m3, vendor) != 4) + if (sscanf((char *)bdata(line), "%02X:%02X:%02X %80[^,\n],\n", &m1, &m2, &m3, vendor) != 4) return -1; mac[0] = (char) (m1); @@ -215,7 +214,7 @@ void show_vendor (void){ list = vendor_list; while(list != NULL) { - printf("Mac: %s\nVendor: %s\n\n", list->mac, bdata(list->vendor)); + printf("Mac: %u\nVendor: %s\n\n", list->mac, bdata(list->vendor)); list = list->next; } } diff -urp pads-1.2.orig/src/monnet.c pads-1.2/src/monnet.c --- pads-1.2.orig/src/monnet.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/monnet.c 2008-06-30 13:28:28.000000000 -0400 @@ -27,7 +27,10 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include +#include #include "monnet.h" +#include "util.h" struct mon_net *mn; @@ -45,7 +48,6 @@ void parse_networks (char *cmdline) { int i = 0; char network[16], netmask[3], tmp[16]; - struct in_addr in_net; /* Make sure something was defined. */ if (cmdline == NULL) @@ -81,7 +83,7 @@ void parse_networks (char *cmdline) i++; } - *cmdline++; + cmdline++; } } diff -urp pads-1.2.orig/src/output/output.c pads-1.2/src/output/output.c --- pads-1.2.orig/src/output/output.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output.c 2008-06-30 13:28:28.000000000 -0400 @@ -26,6 +26,10 @@ * **************************************************************************/ #include "output.h" +#include "output-screen.h" +#include "output-csv.h" +#include "output-fifo.h" +#include "storage.h" /* Global Variables */ OutputPluginList *output_plugin_list; @@ -149,7 +153,7 @@ int print_asset (struct in_addr ip_addr, /* Make sure that a record was found. */ if (rec == NULL) - return; + return -1; /* Cycle through output plugins and print to those that are active. */ head = output_plugin_list; @@ -182,7 +186,7 @@ int print_arp_asset (struct in_addr ip_a /* Find Asset */ ArpAsset *list; - ArpAsset *rec; + ArpAsset *rec = NULL; list = (ArpAsset *)get_arp_pointer(); while (list != NULL) { @@ -199,7 +203,7 @@ int print_arp_asset (struct in_addr ip_a /* Make sure that a record was found. */ if (rec == NULL) - return; + return -1; /* Cycle through output plugins and print to those that are active. */ head = output_plugin_list; @@ -298,8 +302,8 @@ void end_output (void) #ifdef DEBUG int debug_output_list (void) { - OutputPluginList *head, *head2; - OutputPlugin *tmp, *tmp2; + OutputPluginList *head; + OutputPlugin *tmp; int i = 1; printf("output_plugin_list:\n"); diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c --- pads-1.2.orig/src/output/output-csv.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-csv.c 2008-06-30 13:28:28.000000000 -0400 @@ -24,7 +24,10 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include #include "output-csv.h" +#include "util.h" +#include "storage.h" OutputCSVConf output_csv_conf; @@ -40,7 +43,6 @@ int setup_output_csv (void) { OutputPlugin *plugin; - bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); @@ -68,7 +70,7 @@ setup_output_csv (void) * : will read in the file and add each asset * : to the asset data structure. * INPUT : 0 - CSV filename - * RETURN : None! + * RETURN : 0 success, -1 fail * --------------------------------------------------------- */ int init_output_csv (bstring filename) @@ -84,14 +86,15 @@ init_output_csv (bstring filename) output_csv_conf.filename = bstrcpy(bfromcstr("assets.csv")); /* Check to see if *filename exists. */ - if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) { + if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) { /* File does not exist, create new.. */ - if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "w")) != NULL) { + if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "w")) != NULL) { fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n"); } else { err_message("Cannot open file %s!", bdata(output_csv_conf.filename)); + return -1; } } else { @@ -101,12 +104,13 @@ init_output_csv (bstring filename) read_report_file(); /* Open file and assign it to the global FILE pointer. */ - if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "a")) == NULL) { + if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "a")) == NULL) { err_message("Cannot open file %s!", bdata(output_csv_conf.filename)); + return -1; } } - return; + return 0; } /* ---------------------------------------------------------- @@ -129,7 +133,7 @@ read_report_file (void) printf("[-] Processing Existing %s\n", bdata(output_csv_conf.filename)); /* Open Signature File */ - if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) { + if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) { err_message("Unable to open CSV file - %s", bdata(output_csv_conf.filename)); } @@ -144,7 +148,7 @@ read_report_file (void) /* Clean Up */ bdestroy(filedata); bstrListDestroy(lines); - close(fp); + fclose(fp); } /* ---------------------------------------------------------- @@ -172,7 +176,7 @@ parse_raw_report (bstring line) /* Check to see if this line has something to read. */ if (line->data[0] == '\0' || line->data[0] == '#') - return; + return -1; /* Break line apart. */ if ((list = bsplit(line, ',')) == NULL) @@ -186,13 +190,13 @@ parse_raw_report (bstring line) } /* Place data from 'list' into temporary data storage. */ - if ((inet_aton(bdata(list->entry[0]), &ip_addr)) == -1) + if ((inet_aton((char *)bdata(list->entry[0]), &ip_addr)) == -1) ret = -1; - if ((port = htons(atoi(bdata(list->entry[1])))) == -1) + if ((port = htons(atoi((char *)bdata(list->entry[1])))) == -1) ret = -1; - if ((proto = atoi(bdata(list->entry[2]))) == -1) + if ((proto = atoi((char *)bdata(list->entry[2]))) == -1) ret = -1; if ((service = bstrcpy(list->entry[3])) == NULL) @@ -201,7 +205,7 @@ parse_raw_report (bstring line) if ((application = bstrcpy(list->entry[4])) == NULL) ret = -1; - if ((discovered = atol(bdata(list->entry[5]))) == -1) + if ((discovered = atol((char *)bdata(list->entry[5]))) == -1) ret = -1; /* Make sure that this line contains 'good' data. */ @@ -211,7 +215,7 @@ parse_raw_report (bstring line) /* Add Asset to Data Structure */ if (proto == 0 && ret != -1) { /* ARP */ - mac2hex(bdata(application), mac_addr, MAC_LEN); + mac2hex((char *)bdata(application), mac_addr, MAC_LEN); add_arp_asset(ip_addr, mac_addr, discovered); } else { /* Everything Else */ @@ -249,8 +253,9 @@ print_asset_csv (Asset *rec) if (gc.hide_unknowns == 0 || ((biseqcstr(rec->service, "unknown") != 0) && (biseqcstr(rec->application, "unknown") != 0))) { fprintf(output_csv_conf.file, "%s,%d,%d,%s,%s,%d\n", - inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service), - bdata(rec->application), rec->discovered); + inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, + bdata(rec->service), bdata(rec->application), + (int)rec->discovered); fflush(output_csv_conf.file); } } else { @@ -277,11 +282,13 @@ print_arp_asset_csv (ArpAsset *rec) /* Print to File */ if (output_csv_conf.file != NULL) { if (rec->mac_resolved != NULL) { - fprintf(output_csv_conf.file, "%s,0,0,ARP (%s),%s,%d\n", inet_ntoa(rec->ip_addr), - bdata(rec->mac_resolved), hex2mac(rec->mac_addr), rec->discovered); + fprintf(output_csv_conf.file, "%s,0,0,ARP (%s),%s,%d\n", + inet_ntoa(rec->ip_addr), bdata(rec->mac_resolved), + hex2mac(rec->mac_addr), (int)rec->discovered); } else { - fprintf(output_csv_conf.file, "%s,0,0,ARP,%s,%d\n", inet_ntoa(rec->ip_addr), - hex2mac(rec->mac_addr), rec->discovered); + fprintf(output_csv_conf.file, "%s,0,0,ARP,%s,%d\n", + inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr), + (int)rec->discovered); } fflush(output_csv_conf.file); @@ -311,5 +318,7 @@ end_output_csv () if (output_csv_conf.filename != NULL) bdestroy(output_csv_conf.filename); + + return 0; } diff -urp pads-1.2.orig/src/output/output-csv.h pads-1.2/src/output/output-csv.h --- pads-1.2.orig/src/output/output-csv.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-csv.h 2008-06-30 13:28:28.000000000 -0400 @@ -25,6 +25,8 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#ifndef OUTPUT_CSV_HEADER +#define OUTPUT_CSV_HEADER /* DEFINES ----------------------------------------- */ #ifdef LINUX @@ -64,3 +66,5 @@ int print_asset_csv (Asset *rec); int print_arp_asset_csv (ArpAsset *rec); int end_output_csv (void); +#endif + diff -urp pads-1.2.orig/src/output/output-fifo.c pads-1.2/src/output/output-fifo.c --- pads-1.2.orig/src/output/output-fifo.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-fifo.c 2008-06-30 13:28:45.000000000 -0400 @@ -25,7 +25,9 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include #include "output-fifo.h" +#include "util.h" /* * MODULE NOTES @@ -66,7 +68,6 @@ int setup_output_fifo (void) { OutputPlugin *plugin; - bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); @@ -92,15 +93,11 @@ setup_output_fifo (void) * DESCRIPTION : This function will initialize the FIFO * : file. * INPUT : 0 - FIFO filename - * RETURN : None! + * RETURN : 0 success, -1 failure * --------------------------------------------------------- */ int init_output_fifo (bstring fifo_file) { - FILE *fp; - register u_int len = 0; - char *filename; - verbose_message("Initializing FIFO output plugin."); /* Make sure report_file isn't NULL. */ @@ -109,13 +106,13 @@ init_output_fifo (bstring fifo_file) output_fifo_conf.filename = bstrcpy(fifo_file); - mkfifo (bdata(fifo_file), S_IFIFO | 0755); + mkfifo ((char *)bdata(fifo_file), 0755); verbose_message("Open FIFO File\n"); - if ((output_fifo_conf.file = fopen(bdata(fifo_file), "w+")) == NULL) + if ((output_fifo_conf.file = fopen((char*)bdata(fifo_file), "w+")) == NULL) err_message("Unable to open FIFO file (%s)!\n", bdata(fifo_file)); - return; + return 0; } /* ---------------------------------------------------------- @@ -138,8 +135,9 @@ print_asset_fifo (Asset *rec) if (gc.hide_unknowns == 0 || ((biseq(rec->service, bfromcstr("unknown")) != 0) && (biseq(rec->application, bfromcstr("unknown")) != 0))) { fprintf(output_fifo_conf.file, "01,%s,%d,%d,%s,%s,%d\n", - inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service), - bdata(rec->application), rec->discovered); + inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, + bdata(rec->service), bdata(rec->application), + (int)rec->discovered); fflush(output_fifo_conf.file); } } else { @@ -165,11 +163,13 @@ print_arp_asset_fifo (ArpAsset *rec) /* Print to File */ if (output_fifo_conf.file != NULL) { if (rec->mac_resolved != NULL) { - fprintf(output_fifo_conf.file, "02,%s,%s,%s,%d\n", inet_ntoa(rec->ip_addr), - rec->mac_resolved, hex2mac(&rec->mac_addr), rec->discovered); + fprintf(output_fifo_conf.file, "02,%s,%s,%s,%d\n", + inet_ntoa(rec->ip_addr), bdata(rec->mac_resolved), + hex2mac(rec->mac_addr), (int)rec->discovered); } else { - fprintf(output_fifo_conf.file, "02,%s,unknown,%s,%d\n", inet_ntoa(rec->ip_addr), - hex2mac(&rec->mac_addr), rec->discovered); + fprintf(output_fifo_conf.file, "02,%s,unknown,%s,%d\n", + inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr), + (int)rec->discovered); } fflush(output_fifo_conf.file); @@ -196,7 +196,8 @@ print_stat_fifo (Asset *rec) { if (output_fifo_conf.file != NULL) { fprintf(output_fifo_conf.file, "03,%s,%d,%d,%d\n", - inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, time(NULL)); + inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, + (int)time(NULL)); fflush(output_fifo_conf.file); } else { diff -urp pads-1.2.orig/src/output/output-fifo.h pads-1.2/src/output/output-fifo.h --- pads-1.2.orig/src/output/output-fifo.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-fifo.h 2008-06-30 13:28:28.000000000 -0400 @@ -25,6 +25,8 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#ifndef OUTPUT_FIFO_HEADER +#define OUTPUT_FIFO_HEADER /* DEFINES ----------------------------------------- */ #ifdef LINUX @@ -56,9 +58,11 @@ typedef struct _OutputFIFOConf /* PROTOTYPES -------------------------------------- */ +int setup_output_fifo (void); int init_output_fifo (bstring fifo_file); int print_asset_fifo (Asset *rec); int print_arp_asset_fifo (ArpAsset *rec); int print_stat_fifo (Asset *rec); int end_output_fifo (void); +#endif diff -urp pads-1.2.orig/src/output/output.h pads-1.2/src/output/output.h --- pads-1.2.orig/src/output/output.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output.h 2008-06-30 13:28:28.000000000 -0400 @@ -25,6 +25,8 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#ifndef OUTPUT_HEADER +#define OUTPUT_HEADER /* DEFINES ----------------------------------------- */ #ifdef LINUX @@ -77,3 +79,4 @@ int print_arp_asset (struct in_addr ip_a int print_stat(struct in_addr ip_addr, u_int16_t port, unsigned short proto); void end_output (void); +#endif diff -urp pads-1.2.orig/src/output/output-screen.c pads-1.2/src/output/output-screen.c --- pads-1.2.orig/src/output/output-screen.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-screen.c 2008-06-30 13:28:28.000000000 -0400 @@ -24,7 +24,9 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include #include "output-screen.h" +#include "util.h" /* ---------------------------------------------------------- * FUNCTION : setup_output_screen @@ -38,7 +40,6 @@ int setup_output_screen (void) { OutputPlugin *plugin; - bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); diff -urp pads-1.2.orig/src/output/output-screen.h pads-1.2/src/output/output-screen.h --- pads-1.2.orig/src/output/output-screen.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/output/output-screen.h 2008-06-30 13:28:28.000000000 -0400 @@ -25,6 +25,8 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#ifndef OUTPUT_SCREEN_HEADER +#define OUTPUT_SCREEN_HEADER /* DEFINES ----------------------------------------- */ #ifdef LINUX @@ -43,16 +45,12 @@ #include "output.h" -/* TYPEDEFS ---------------------------------------- */ -typedef struct _OutputCSVConf -{ - FILE *file; -} OutputCSVConf; - - /* PROTOTYPES -------------------------------------- */ int setup_output_screen (void); int init_output_screen (bstring args); int print_asset_screen (Asset *rec); int print_arp_asset_screen (ArpAsset *rec); int end_output_screen (void); + +#endif + diff -urp pads-1.2.orig/src/packet.c pads-1.2/src/packet.c --- pads-1.2.orig/src/packet.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/packet.c 2008-06-30 13:28:28.000000000 -0400 @@ -26,6 +26,10 @@ * **************************************************************************/ #include "packet.h" +#include "output/output.h" +#include "storage.h" +#include "monnet.h" +#include "identification.h" /* ---------------------------------------------------------- * FUNCTION : process_eth @@ -157,9 +161,9 @@ void process_arp (const struct pcap_pkth case ARPOP_REPLY: memcpy(&ip_addr.s_addr, arph->arp_spa, sizeof(u_int8_t) * 4); - if (check_arp_asset(ip_addr, arph->arp_sha) == 1) { - add_arp_asset(ip_addr, arph->arp_sha, 0); - print_arp_asset (ip_addr, arph->arp_sha); + if (check_arp_asset(ip_addr, (char *)arph->arp_sha) == 1) { + add_arp_asset(ip_addr, (char *)arph->arp_sha, 0); + print_arp_asset (ip_addr, (char *)arph->arp_sha); } break; @@ -222,7 +226,7 @@ void process_tcp (const struct pcap_pkth * Check to see if this ACK packet needs to be * identified. */ - payload = (u_char *)(packet + sizeof(struct tcphdr) + len); + payload = (char *)(packet + sizeof(struct tcphdr) + len); /* Attempt to identify this asset. */ if(tcp_identify(ip_src, tcph->th_sport, payload, diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c --- pads-1.2.orig/src/pads.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/pads.c 2008-06-30 13:28:28.000000000 -0400 @@ -26,6 +26,13 @@ * **************************************************************************/ #include "pads.h" +#include "util.h" +#include "storage.h" +#include "output/output.h" +#include "identification.h" +#include "mac-resolution.h" +#include "monnet.h" +#include "configuration.h" /* Variable Declarations */ GC gc; /* Global Configuration */ @@ -34,6 +41,9 @@ proc_t processor; char **prog_argv; int prog_argc; +/* Function Declarations */ +static int process_cmdline (int argc, char *argv[]); + /* ---------------------------------------------------------- * FUNCTION : process_pkt * DESCRIPTION : This function takes data from libpcap and @@ -210,7 +220,7 @@ main_pads (void) if (gc.pcap_file) { /* Read from PCAP file specified by '-r' switch. */ log_message("Reading from file %s\n", bdata(gc.pcap_file)); - if (!(gc.handle = pcap_open_offline(bdata(gc.pcap_file), errbuf))) { + if (!(gc.handle = pcap_open_offline((char *)bdata(gc.pcap_file), errbuf))) { err_message("Unable to open %s. (%s)", bdata(gc.pcap_file), errbuf); } @@ -268,7 +278,7 @@ main_pads (void) /* Open banner dump file if specified (-d). */ if (gc.dump_file) { verbose_message("Opening Banner Dump File"); - if (!(gc.dumper = pcap_dump_open(gc.handle, bdata(gc.dump_file)))) + if (!(gc.dumper = pcap_dump_open(gc.handle, (char *)bdata(gc.dump_file)))) err_message("Cannot open dump file - %s\n", pcap_geterr(gc.handle)); } @@ -323,7 +333,7 @@ end_pads(void) /* Remove PID File */ if (gc.daemon_mode == 1) - if ((unlink(bdata(gc.pid_file))) != 0) + if ((unlink((char *)bdata(gc.pid_file))) != 0) log_message("WARNING: Unable to remove PID file - %s\n", bdata(gc.pid_file)); /* End Modules */ @@ -370,7 +380,7 @@ end_pads(void) * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ -int +static int process_cmdline (int argc, char *argv[]) { int ch; @@ -477,11 +487,6 @@ sig_hup_handler(int signal) int main(int argc, char *argv[]) { - /* Variables */ - int i; - struct pcap_pkthdr header; /* The header that pcap gives us */ - const u_char *packet; /* The actual packet */ - /* Copy Command Line Args */ prog_argc = argc; prog_argv = argv; diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c --- pads-1.2.orig/src/storage.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/storage.c 2008-06-30 13:28:28.000000000 -0400 @@ -24,7 +24,10 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include +#include #include "storage.h" +#include "mac-resolution.h" Asset *asset_list; ArpAsset *arp_asset_list; @@ -400,7 +403,7 @@ inline Asset * find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto) { Asset *list; - Asset *rec; + Asset *rec = NULL; list = asset_list; @@ -469,7 +472,7 @@ void print_database () while (rec != NULL) { printf("%d: %s,%d,%d,%d,%s,%s,%d\n", id, inet_ntoa(rec->ip_addr), ntohs(rec->port), - rec->proto, rec->discovered, + rec->proto, (int)rec->discovered, bdata(rec->service), bdata(rec->application), rec->i_attempts); rec = rec->next; @@ -482,7 +485,7 @@ void print_database () arp = arp_asset_list; while (arp != NULL) { printf("%d: %s,%s,%d\n", id, inet_ntoa(arp->ip_addr), - ether_ntoa(&arp->mac_addr), arp->discovered); + ether_ntoa((struct ether_addr *)arp->mac_addr), (int)arp->discovered); arp = arp->next; id++; } diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c --- pads-1.2.orig/src/util.c 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/util.c 2008-06-30 13:28:28.000000000 -0400 @@ -25,8 +25,10 @@ * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $ * **************************************************************************/ +#include +#include #include "util.h" - +#include "pads.h" /* ---------------------------------------------------------- * FUNCTION : strip_comment @@ -60,11 +62,12 @@ strip_comment (char *string) int chomp (char *string, int size) { - for (size; size >= 0; size--) { + while (size >= 0) { if (string[size] == '\n') { string[size] = '\0'; return 1; } + size--; } return 0; @@ -121,7 +124,7 @@ init_pid_file (bstring pid_file, bstring gc.pid_file = bfromcstr("/var/run/pads.pid"); /* Create PID File */ - if ((fp = fopen(bdata(gc.pid_file), "w")) != NULL) { + if ((fp = fopen((char *)bdata(gc.pid_file), "w")) != NULL) { pid = (int) getpid(); fprintf(fp, "%d\n", pid); fclose(fp); @@ -133,11 +136,11 @@ init_pid_file (bstring pid_file, bstring if (user == NULL || group == NULL) return; - if ((this_group = getgrnam(bdata(group))) == NULL) + if ((this_group = getgrnam((char *)bdata(group))) == NULL) err_message("'%s' group does not appear to exist.", bdata(group)); - if ((this_user = getpwnam(bdata(user))) == NULL) + if ((this_user = getpwnam((char *)bdata(user))) == NULL) err_message("'%s' user does not appear to exist.", bdata(user)); - if ((chown(pid_file, this_user->pw_uid, this_group->gr_gid)) != 0) + if ((chown((char *)bdata(pid_file), this_user->pw_uid, this_group->gr_gid)) != 0) err_message("Unable to change PID file's ownership."); } @@ -343,7 +346,7 @@ strlcpy(char *dst, const char *src, size size_t strlcat(char *dst, const char *src, size_t len) { char *dstptr = dst; - size_t dstlen, tocopy; + size_t dstlen, tocopy = len; const char *srcptr = src; while (tocopy-- && *dstptr) dstptr++; @@ -384,10 +387,10 @@ drop_privs (bstring newuser, bstring new if (newuser == NULL || newgroup == NULL) return; - if ((this_group = getgrnam(bdata(newgroup))) == NULL) + if ((this_group = getgrnam((char *)bdata(newgroup))) == NULL) err_message("'%s' group does not appear to exist.", bdata(newgroup)); - if ((this_user = getpwnam(bdata(newuser))) == NULL) + if ((this_user = getpwnam((char *)bdata(newuser))) == NULL) err_message("'%s' user does not appear to exist.", bdata(newuser)); /* Set Group */ @@ -458,7 +461,7 @@ mac2hex(const char *mac, char *dst, int * RETURN : 0 - MAC Address String * ---------------------------------------------------------- */ char * -hex2mac(unsigned const char *mac) +hex2mac(const char *mac) { static char buf[18]; diff -urp pads-1.2.orig/src/util.h pads-1.2/src/util.h --- pads-1.2.orig/src/util.h 2008-06-29 20:16:30.000000000 -0400 +++ pads-1.2/src/util.h 2008-06-30 13:28:28.000000000 -0400 @@ -53,6 +53,6 @@ size_t strlcat(char *dst, const char *sr #endif void drop_privs (bstring newuser, bstring newgroup); void mac2hex(const char *mac, char *dst, int len); -char *hex2mac(unsigned const char *mac); +char *hex2mac(const char *mac); /* GLOBALS ----------------------------------------- */