From 6c1e2b663227cadff4255db3321976882df6b261 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 19 Nov 2012 17:10:11 -0800 Subject: rgw: fix xml parser leak Signed-off-by: Yehuda Sadeh (cherry picked from commit f86522cdfcd81b2d28c581ac8b8de6226bc8d1a4) --- src/rgw/rgw_xml.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/rgw/rgw_xml.cc b/src/rgw/rgw_xml.cc index 1d95abcb4b6..ae5b4bbfd97 100644 --- a/src/rgw/rgw_xml.cc +++ b/src/rgw/rgw_xml.cc @@ -133,11 +133,14 @@ static void xml_start(void *data, const char *el, const char **attr) { RGWXMLParser:: RGWXMLParser() : buf(NULL), buf_len(0), cur_obj(NULL), success(true) { + p = XML_ParserCreate(NULL); } RGWXMLParser:: ~RGWXMLParser() { + XML_ParserFree(p); + free(buf); vector::iterator iter; for (iter = objs.begin(); iter != objs.end(); ++iter) { @@ -194,7 +197,6 @@ void RGWXMLParser::handle_data(const char *s, int len) bool RGWXMLParser::init() { - p = XML_ParserCreate(NULL); if (!p) { return false; } @@ -219,8 +221,5 @@ bool RGWXMLParser::parse(const char *_buf, int len, int done) success = false; } - if (done || !success) - XML_ParserFree(p); - return success; } -- cgit v1.2.1