Imported Upstream version 2.5.1
[ossec-hids.git] / src / analysisd / lists.c
1 /* @(#) $Id$ */
2
3 /* Copyright (C) 2009 Trend Micro Inc.
4  * All rights reserved.
5  *
6  * This program is a free software; you can redistribute it
7  * and/or modify it under the terms of the GNU General Public
8  * License (version 3) as published by the FSF - Free Software
9  * Foundation.
10  *
11  * License details at the LICENSE file included with OSSEC or 
12  * online at: http://www.ossec.net/en/licensing.html
13  */
14
15
16
17 #include "config.h"
18 #include "eventinfo.h"
19
20
21
22 /* Lists_OP_CreateLists, v0.1, 2010/01/08
23  * Will initilalize the cdb lookup lists
24  */
25 void Lists_OP_CreateLists()
26 {
27     OS_CreateListsList();
28     return; 
29 }
30
31 int Lists_OP_LoadList(char * listfile)
32 {
33     /* XXX Jeremy: I hate this.  I think I'm missing something dumb here */
34     char *holder;
35     char a_filename[OS_MAXSTR];
36     a_filename[OS_MAXSTR - 2] = '\0';
37     char b_filename[OS_MAXSTR];
38     b_filename[OS_MAXSTR - 2] = '\0';
39
40     ListNode *tmp_listnode_pt = NULL;
41     tmp_listnode_pt = (ListNode *)calloc(1,sizeof(ListNode));
42     debug1("crated new listnode for %s\n", listfile);
43     if (tmp_listnode_pt == NULL)
44         ErrorExit(MEM_ERROR,ARGV0);
45     snprintf(a_filename, OS_MAXSTR-1, "%s", listfile);
46     if((strchr(a_filename, '/') == NULL))
47     {
48         /* default to rules/ if a path is not given */
49         snprintf(b_filename, OS_MAXSTR-1, "rules/%s", a_filename);
50         snprintf(a_filename, OS_MAXSTR-1, "%s", b_filename);
51     }
52     if((holder = strstr(a_filename, ".cdb")))
53     {
54         snprintf(b_filename, (int)(holder - a_filename) + 1, "%s", a_filename);
55         snprintf(a_filename, OS_MAXSTR-1, "%s", b_filename);
56     }
57     snprintf(b_filename, OS_MAXSTR-1, "%s.cdb", a_filename);
58     os_strdup(a_filename, tmp_listnode_pt->txt_filename);
59     os_strdup(b_filename, tmp_listnode_pt->cdb_filename);
60     tmp_listnode_pt->loaded = 0;
61     OS_AddList(tmp_listnode_pt);
62     return 0;
63 }