fixing memory leaks in XML parsing
authorMiloš Mulač <mulac@civ.zcu.cz>
Thu, 22 Nov 2007 16:38:13 +0000 (16:38 +0000)
committerMiloš Mulač <mulac@civ.zcu.cz>
Thu, 22 Nov 2007 16:38:13 +0000 (16:38 +0000)
org.glite.lb.common/src/xml_conversions.c
org.glite.lb.common/src/xml_parse.c.T
org.glite.lb.server/src/lb_xml_parse.c.T

index 6bf7e6b..32fab9e 100644 (file)
@@ -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;
 }
 
index 3a0c88e..4702fca 100644 (file)
@@ -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--;
 }
 
index 409709a..cdbaab5 100644 (file)
@@ -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--;
 }