diff options
author | sangwan.kwon <sangwan.kwon@samsung.com> | 2016-07-28 15:17:14 +0900 |
---|---|---|
committer | sangwan.kwon <sangwan.kwon@samsung.com> | 2016-07-28 15:17:14 +0900 |
commit | 1ca1a139b4c1a00de4d72f64b7411e118111a161 (patch) | |
tree | 2c93e5dbce5b42d1efd45520b1c8cd50b6bf6998 /src/io.c | |
parent | fe8ea3dba5971ab3f47090ba52d7f824c3d23545 (diff) | |
parent | d4d35351fd63a7051a7cbef2002cb0c641925ec3 (diff) | |
download | xmlsec1-1ca1a139b4c1a00de4d72f64b7411e118111a161.tar.gz xmlsec1-1ca1a139b4c1a00de4d72f64b7411e118111a161.tar.bz2 xmlsec1-1ca1a139b4c1a00de4d72f64b7411e118111a161.zip |
Merge branch 'upstream' into tizen
Change-Id: Iacc73c9ed5e9cfd188df62c405426bfa89bf4e51
Diffstat (limited to 'src/io.c')
-rw-r--r-- | src/io.c | 51 |
1 files changed, 45 insertions, 6 deletions
@@ -6,7 +6,7 @@ * This is free software; see Copyright file in the source * distribution for preciese wording. * - * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com> + * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved. */ #include "globals.h" @@ -66,7 +66,7 @@ xmlSecIOCallbackCreate(xmlInputMatchCallback matchFunc, xmlInputOpenCallback ope NULL, XMLSEC_ERRORS_R_MALLOC_FAILED, "sizeof(xmlSecIOCallback)=%d", - sizeof(xmlSecIOCallback)); + (int)sizeof(xmlSecIOCallback)); return(NULL); } memset(callbacks, 0, sizeof(xmlSecIOCallback)); @@ -433,6 +433,35 @@ xmlSecTransformInputURIOpen(xmlSecTransformPtr transform, const xmlChar *uri) { return(0); } + +/** + * xmlSecTransformInputURIClose: + * @transform: the pointer to IO transform. + * + * Closes the given @transform and frees up resourses. + * + * Returns: 0 on success or a negative value otherwise. + */ +int +xmlSecTransformInputURIClose(xmlSecTransformPtr transform) { + xmlSecInputURICtxPtr ctx; + + xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecTransformInputURIId), -1); + + ctx = xmlSecTransformInputUriGetCtx(transform); + xmlSecAssert2(ctx != NULL, -1); + + /* close if still open and mark as closed */ + if((ctx->clbksCtx != NULL) && (ctx->clbks != NULL) && (ctx->clbks->closecallback != NULL)) { + (ctx->clbks->closecallback)(ctx->clbksCtx); + ctx->clbksCtx = NULL; + ctx->clbks = NULL; + } + + /* done */ + return(0); +} + static int xmlSecTransformInputURIInitialize(xmlSecTransformPtr transform) { xmlSecInputURICtxPtr ctx; @@ -448,17 +477,27 @@ xmlSecTransformInputURIInitialize(xmlSecTransformPtr transform) { static void xmlSecTransformInputURIFinalize(xmlSecTransformPtr transform) { - xmlSecInputURICtxPtr ctx; + xmlSecInputURICtxPtr ctx; + int ret; xmlSecAssert(xmlSecTransformCheckId(transform, xmlSecTransformInputURIId)); ctx = xmlSecTransformInputUriGetCtx(transform); xmlSecAssert(ctx != NULL); - if((ctx->clbksCtx != NULL) && (ctx->clbks != NULL) && (ctx->clbks->closecallback != NULL)) { - (ctx->clbks->closecallback)(ctx->clbksCtx); - } + ret = xmlSecTransformInputURIClose(transform); + if(ret < 0) { + xmlSecError(XMLSEC_ERRORS_HERE, + xmlSecErrorsSafeString(xmlSecTransformGetName(transform)), + "xmlSecTransformInputURIClose", + XMLSEC_ERRORS_R_XMLSEC_FAILED, + "ret=%d", ret); + /* ignore the error */ + /* return; */ + } + memset(ctx, 0, sizeof(xmlSecInputURICtx)); + return; } static int |