new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / src / analysisd / lists.c
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 */
15 void Lists_OP_CreateLists()
16 {
17     OS_CreateListsList();
18     return;
19 }
20
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