1 /* Copyright (C) 2009 Trend Micro Inc.
2  * All rights reserved.
3  *
4  * This program is a free software; you can redistribute it
5  * and/or modify it under the terms of the GNU General Public
6  * License (version 3) as published by the FSF - Free Software
7  * Foundation.
8  */
9 
10 #include "config.h"
11 #include "eventinfo.h"
12 
13 
14 /* Initialize the cdb lookup lists */
Lists_OP_CreateLists()15 void Lists_OP_CreateLists()
16 {
17     OS_CreateListsList();
18     return;
19 }
20 
Lists_OP_LoadList(char * listfile)21 int Lists_OP_LoadList(char *listfile)
22 {
23     /* XXX Jeremy: I hate this.  I think I'm missing something dumb here */
24     char *holder;
25     char a_filename[OS_MAXSTR];
26     char b_filename[OS_MAXSTR];
27     ListNode *tmp_listnode_pt = NULL;
28 
29     a_filename[OS_MAXSTR - 2] = '\0';
30     b_filename[OS_MAXSTR - 2] = '\0';
31 
32     tmp_listnode_pt = (ListNode *)calloc(1, sizeof(ListNode));
33     if (tmp_listnode_pt == NULL) {
34         ErrorExit(MEM_ERROR, ARGV0, errno, strerror(errno));
35     }
36 
37     snprintf(a_filename, OS_MAXSTR - 1, "%s", listfile);
38     if ((strchr(a_filename, '/') == NULL)) {
39         /* default to rules/ if a path is not given */
40         snprintf(b_filename, OS_MAXSTR - 1, "rules/%s", a_filename);
41         snprintf(a_filename, OS_MAXSTR - 1, "%s", b_filename);
42     }
43     if ((holder = strstr(a_filename, ".cdb"))) {
44         snprintf(b_filename, (size_t)(holder - a_filename) + 1, "%s", a_filename);
45         snprintf(a_filename, OS_MAXSTR - 1, "%s", b_filename);
46     }
47 
48     snprintf(b_filename, OS_MAXSTR - 1, "%s.cdb", a_filename);
49 
50     os_strdup(a_filename, tmp_listnode_pt->txt_filename);
51     os_strdup(b_filename, tmp_listnode_pt->cdb_filename);
52 
53     tmp_listnode_pt->loaded = 0;
54 
55     OS_AddList(tmp_listnode_pt);
56 
57     return 0;
58 }
59 
60