X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Fos_xml%2Fos_xml_node_access.c;h=6fba555fc89d1120ee4cf5f19c737024390138ae;hb=6ef2f786c6c8ead94841b5f93baf9f43421f08c8;hp=7d986ca554595184c10f3301d79961baf56f2378;hpb=914feba5d54f979cd5d7e69c349c3d01f630042a;p=ossec-hids.git diff --git a/src/os_xml/os_xml_node_access.c b/src/os_xml/os_xml_node_access.c index 7d986ca..6fba555 100755 --- a/src/os_xml/os_xml_node_access.c +++ b/src/os_xml/os_xml_node_access.c @@ -1,11 +1,12 @@ -/* @(#) $Id: os_xml_node_access.c,v 1.6 2009/06/24 17:06:32 dcid Exp $ */ +/* @(#) $Id: ./src/os_xml/os_xml_node_access.c, 2011/09/08 dcid Exp $ + */ /* Copyright (C) 2009 Trend Micro Inc. * All rights reserved. * * This program is a free software; you can redistribute it * and/or modify it under the terms of the GNU General Public - * License (version 3) as published by the FSF - Free Software + * License (version 2) as published by the FSF - Free Software * Foundation */ @@ -22,19 +23,23 @@ /* OS_ClearNode v0,1 - * Clear the Node structure + * Clear the Node structure */ void OS_ClearNode(xml_node **node) { if(node) - { + { int i=0; while(node[i]) { if(node[i]->element) + { free(node[i]->element); + } if(node[i]->content) + { free(node[i]->content); + } if(node[i]->attributes) { int j=0; @@ -62,7 +67,7 @@ void OS_ClearNode(xml_node **node) node[i]->values=NULL; free(node[i]); node[i]=NULL; - i++; + i++; } free(node); node=NULL; @@ -88,8 +93,8 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) i = node->key; j = _lxml->rl[i++]; } - - + + for(;i<_lxml->cur;i++) { if(_lxml->tp[i] == XML_ELEM) @@ -101,17 +106,17 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) ret = (xml_node**)realloc(ret,(k+1)*sizeof(xml_node*)); if(ret == NULL) return(NULL); - + /* Allocating for the xml_node * */ ret[k] = (xml_node *)calloc(1,sizeof(xml_node)); if(ret[k] == NULL) return(NULL); - + ret[k]->element = NULL; ret[k]->content = NULL; ret[k]->attributes = NULL; ret[k]->values = NULL; - + /* Getting the element */ ret[k]->element=strdup(_lxml->el[i]); if(ret[k]->element == NULL) @@ -119,7 +124,7 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) free(ret); return(NULL); } - + /* Getting the content */ if(_lxml->ct[i]) { @@ -136,13 +141,13 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) if((_lxml->tp[l] == XML_ATTR)&&(_lxml->rl[l] == j+1)&& (_lxml->el[l]) && (_lxml->ct[l])) { - ret[k]->attributes = + ret[k]->attributes = (char**)realloc(ret[k]->attributes, (l-i+1)*sizeof(char*)); - ret[k]->values = + ret[k]->values = (char**)realloc(ret[k]->values, (l-i+1)*sizeof(char*)); - if(!(ret[k]->attributes) || + if(!(ret[k]->attributes) || !(ret[k]->values)) return(NULL); ret[k]->attributes[l-i-1]=strdup(_lxml->el[l]); @@ -150,7 +155,7 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) if(!(ret[k]->attributes[l-i-1]) || !(ret[k]->values[l-i-1])) return(NULL); - l++; + l++; } else { @@ -174,7 +179,7 @@ xml_node **OS_GetElementsbyNode(OS_XML *_lxml, xml_node *node) break; } } - + if(ret ==NULL) return(NULL);