Imported Upstream version 2.3
[ossec-hids.git] / src / config / rules-config.c
1 /* @(#) $Id: rules-config.c,v 1.5 2009/06/24 17:06:25 dcid Exp $ */
2
3 /* Copyright (C) 2009 Trend Micro Inc.
4  * All right 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
12 /* Functions to handle the configuration files
13  */
14
15
16 #include "shared.h"
17 #include "global-config.h"
18
19
20 int Read_Rules(XML_NODE node, void *configp, void *mailp)
21 {
22     int i = 0;
23
24     /* White list size */
25     int rules_size = 1;
26
27
28     /* XML definitions */
29     char *xml_rules_include = "include";
30
31     _Config *Config;
32      
33     Config = (_Config *)configp;
34      
35     while(node[i])
36     {
37         if(!node[i]->element)
38         {
39             merror(XML_ELEMNULL, ARGV0);
40             return(OS_INVALID);
41         }
42         else if(!node[i]->content)
43         {
44             merror(XML_VALUENULL, ARGV0, node[i]->element);
45             return(OS_INVALID);
46         }
47         /* Mail notification */
48         else if(strcmp(node[i]->element, xml_rules_include) == 0)
49         {
50             rules_size++;
51             Config->includes = realloc(Config->includes, 
52                                        sizeof(char *)*rules_size);
53             if(!Config->includes)
54             {
55                 merror(MEM_ERROR, ARGV0);
56                 return(OS_INVALID);
57             }
58
59             os_strdup(node[i]->content,Config->includes[rules_size -2]);
60             Config->includes[rules_size -1] = NULL;
61         }
62         else
63         {
64             merror(XML_INVELEM, ARGV0, node[i]->element);
65             return(OS_INVALID);
66         }
67         i++;
68     }
69     return(0);
70 }
71
72
73 /* EOF */