From f024b245afc17a903620fab08101fda67d820d62 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Wed, 25 Jan 2017 14:07:34 +0900 Subject: [PATCH] Fix memory leaks Change-Id: I2f51cca965293143557b590fb40b29f523e0152c Signed-off-by: Sangyoon Jang --- parser/src/pkgmgr_parser.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/parser/src/pkgmgr_parser.c b/parser/src/pkgmgr_parser.c index 52c8328..a71f6b1 100644 --- a/parser/src/pkgmgr_parser.c +++ b/parser/src/pkgmgr_parser.c @@ -189,24 +189,30 @@ API int pkgmgr_parser_check_manifest_validation(const char *manifest) xschema = xmlSchemaParse(ctx); if (xschema == NULL) { _LOGE("xmlSchemaParse() Failed\n"); + xmlSchemaFreeParserCtxt(ctx); return PMINFO_R_ERROR; } vctx = xmlSchemaNewValidCtxt(xschema); if (vctx == NULL) { _LOGE("xmlSchemaNewValidCtxt() Failed\n"); + xmlSchemaFree(xschema); + xmlSchemaFreeParserCtxt(ctx); return PMINFO_R_ERROR; } xmlSchemaSetValidErrors(vctx, (xmlSchemaValidityErrorFunc) fprintf, (xmlSchemaValidityWarningFunc) fprintf, stderr); ret = xmlSchemaValidateFile(vctx, manifest, 0); if (ret == -1) { _LOGE("xmlSchemaValidateFile() failed\n"); - return PMINFO_R_ERROR; + ret = PMINFO_R_ERROR; } else if (ret == 0) { _LOGD("Manifest is Valid\n"); - return PMINFO_R_OK; + ret = PMINFO_R_OK; } else { _LOGE("Manifest Validation Failed with error code %d\n", ret); - return PMINFO_R_ERROR; + ret = PMINFO_R_ERROR; } - return PMINFO_R_OK; + xmlSchemaFreeValidCtxt(vctx); + xmlSchemaFree(xschema); + xmlSchemaFreeParserCtxt(ctx); + return ret; } -- 2.7.4