From cf6ca2dbef9995b4b8a8e3a0058c99bfd5b584d7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Milo=C5=A1=20Mula=C4=8D?= Date: Thu, 22 Nov 2007 16:38:13 +0000 Subject: [PATCH] fixing memory leaks in XML parsing --- org.glite.lb.common/src/xml_conversions.c | 6 +++-- org.glite.lb.common/src/xml_parse.c.T | 42 +++++++++++-------------------- org.glite.lb.server/src/lb_xml_parse.c.T | 36 +++++++------------------- 3 files changed, 27 insertions(+), 57 deletions(-) diff --git a/org.glite.lb.common/src/xml_conversions.c b/org.glite.lb.common/src/xml_conversions.c index 6bf7e6b..32fab9e 100644 --- a/org.glite.lb.common/src/xml_conversions.c +++ b/org.glite.lb.common/src/xml_conversions.c @@ -94,8 +94,10 @@ void edg_wll_freeXMLCtx(edg_wll_XML_ctx *c) { void edg_wll_freeBuf(edg_wll_XML_ctx *c) { - free(c->char_buf); - c->char_buf = NULL; + if (c->char_buf) { + free(c->char_buf); + c->char_buf = NULL; + } c->char_buf_len = 0; } diff --git a/org.glite.lb.common/src/xml_parse.c.T b/org.glite.lb.common/src/xml_parse.c.T index 3a0c88e..4702fca 100644 --- a/org.glite.lb.common/src/xml_parse.c.T +++ b/org.glite.lb.common/src/xml_parse.c.T @@ -785,8 +785,7 @@ static void endQueryJobs(void *data, const char *el) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -863,8 +862,7 @@ static void endQueryEvents(void *data, const char *el UNUSED_VAR) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; @@ -1005,8 +1003,7 @@ static void endJobStat(void *data, const char *el) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -1039,8 +1036,7 @@ static void endStrList(void *data, const char *el UNUSED_VAR) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -1073,8 +1069,7 @@ static void endIntList(void *data, const char *el UNUSED_VAR) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -1106,8 +1101,7 @@ static void endTagList(void *data, const char *el UNUSED_VAR) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -1143,8 +1137,7 @@ static void endStsList(void *data, const char *el) break; } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); memset(&(XMLCtx->element), 0, sizeof(XMLCtx->element)); XMLCtx->level--; } @@ -1179,8 +1172,7 @@ static void endPurgeResult(void *data, const char *el UNUSED_VAR) } } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1207,8 +1199,7 @@ static void endDumpResult(void *data, const char *el UNUSED_VAR) } } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1228,8 +1219,7 @@ static void endLoadResult(void *data, const char *el UNUSED_VAR) } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1263,8 +1253,7 @@ static void endIndexedAttrs(void *data, const char *el) } } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1279,8 +1268,7 @@ static void endNotifResult(void *data, const char *el UNUSED_VAR) XMLCtx->notifValidity = edg_wll_from_string_to_time_t(XMLCtx); } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1295,8 +1283,7 @@ static void endQuerySequenceCodeResult(void *data, const char *el UNUSED_VAR) XMLCtx->seqCode = edg_wll_from_string_to_string(XMLCtx); } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -1325,8 +1312,7 @@ static void endStatsResult(void *data, const char *el UNUSED_VAR) XMLCtx->statsResTo = edg_wll_from_string_to_int(XMLCtx); } - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } diff --git a/org.glite.lb.server/src/lb_xml_parse.c.T b/org.glite.lb.server/src/lb_xml_parse.c.T index 409709a..cdbaab5 100644 --- a/org.glite.lb.server/src/lb_xml_parse.c.T +++ b/org.glite.lb.server/src/lb_xml_parse.c.T @@ -556,9 +556,7 @@ static void endJobQueryRec(void *data, const char *el UNUSED_VAR) break; } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -585,9 +583,7 @@ static void endQueryJobsRequest(void *data, const char *el UNUSED_VAR) &XMLCtx->job_conditions); } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -733,9 +729,7 @@ static void endQueryEventsRequest(void *data, const char *el UNUSED_VAR) } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); } XMLCtx->level--; } @@ -776,9 +770,7 @@ static void endPurgeRequest(void *data, const char *el UNUSED_VAR) } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -805,9 +797,7 @@ static void endDumpRequest(void *data, const char *el UNUSED_VAR) free(s); } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -822,9 +812,7 @@ static void endLoadRequest(void *data, const char *el UNUSED_VAR) XMLCtx->loadRequestGlobal.server_file = edg_wll_from_string_to_string(XMLCtx); } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -858,9 +846,7 @@ static void endNotifRequest(void *data, const char *el UNUSED_VAR) } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -879,9 +865,7 @@ static void endQuerySequenceCodeRequest(void *data, const char *el UNUSED_VAR) } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } @@ -915,9 +899,7 @@ static void endStatsRequest(void *data, const char *el UNUSED_VAR) } } - if (XMLCtx->char_buf) free(XMLCtx->char_buf); - XMLCtx->char_buf = NULL; - XMLCtx->char_buf_len = 0; + edg_wll_freeBuf(XMLCtx); XMLCtx->level--; } -- 1.8.2.3