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