diff options
Diffstat (limited to 'src/errors_helpers.h')
-rw-r--r-- | src/errors_helpers.h | 872 |
1 files changed, 872 insertions, 0 deletions
diff --git a/src/errors_helpers.h b/src/errors_helpers.h new file mode 100644 index 00000000..3752fa69 --- /dev/null +++ b/src/errors_helpers.h @@ -0,0 +1,872 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * Internal header only used during the compilation, + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved. + */ + +#ifndef __XMLSEC_ERROR_HELPERS_H__ +#define __XMLSEC_ERROR_HELPERS_H__ + +#ifndef XMLSEC_PRIVATE +#error "private.h file contains private xmlsec definitions and should not be used outside xmlsec or xmlsec-$crypto libraries" +#endif /* XMLSEC_PRIVATE */ + +#include <errno.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/********************************************************************** + * + * Error handling macros. + * + **********************************************************************/ + +/** + * xmlSecInternalError: + * @errorFunction: the failed function name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting internal XMLSec errors. + */ +#define xmlSecInternalError(errorFunction, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XMLSEC_FAILED, \ + XMLSEC_ERRORS_NO_MESSAGE \ + ) + +/** + * xmlSecInternalError2: + * @errorFunction: the failed function name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param: the extra message param. + * + * Macro. The XMLSec library macro for reporting internal XMLSec errors. + */ +#define xmlSecInternalError2(errorFunction, errorObject, msg, param) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XMLSEC_FAILED, \ + (msg), (param) \ + ) + +/** + * xmlSecInternalError3: + * @errorFunction: the failed function name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param1: the extra message param1. + * @param2: the extra message param2. + * + * Macro. The XMLSec library macro for reporting internal XMLSec errors. + */ +#define xmlSecInternalError3(errorFunction, errorObject, msg, param1, param2) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XMLSEC_FAILED, \ + (msg), (param1), (param2) \ + ) + +/** + * xmlSecInternalError4: + * @errorFunction: the failed function name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param1: the extra message param1. + * @param2: the extra message param2. + * @param3: the extra message param3. + * + * Macro. The XMLSec library macro for reporting internal XMLSec errors. + */ +#define xmlSecInternalError4(errorFunction, errorObject, msg, param1, param2, param3) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XMLSEC_FAILED, \ + (msg), (param1), (param2), (param3) \ + ) + +/** + * xmlSecMallocError: + * @allocSize: the failed allocation size. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting xmlMalloc() errors. + */ +#define xmlSecMallocError(allocSize, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + "xmlMalloc", \ + XMLSEC_ERRORS_R_MALLOC_FAILED, \ + "size=%lu", (unsigned long)(allocSize) \ + ) + +/** + * xmlSecStrdupError: + * @str: the failed string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting xmlStrdup() errors. + */ +#define xmlSecStrdupError(str, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + "xmlStrdup", \ + XMLSEC_ERRORS_R_STRDUP_FAILED, \ + "size=%lu", (unsigned long)xmlStrlen(str) \ + ) + +/** + * xmlSecXmlError: + * @errorFunction: the failed function. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting generic XML errors. + */ +#define xmlSecXmlError(errorFunction, errorObject) \ + { \ + xmlErrorPtr error = xmlGetLastError(); \ + int code = (error != NULL) ? error->code : 0; \ + const char* message = (error != NULL) ? error->message : NULL; \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XML_FAILED, \ + "xml error: %lu: %s", \ + (unsigned long)code, \ + xmlSecErrorsSafeString(message) \ + ); \ + } + +/** + * xmlSecXmlError2: + * @errorFunction: the failed function. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param: the extra message param. + * + * Macro. The XMLSec library macro for reporting generic XML errors. + */ +#define xmlSecXmlError2(errorFunction, errorObject, msg, param) \ + { \ + xmlErrorPtr error = xmlGetLastError(); \ + int code = (error != NULL) ? error->code : 0; \ + const char* message = (error != NULL) ? error->message : NULL; \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XML_FAILED, \ + msg "; xml error: %lu: %s", \ + (param), \ + (unsigned long)code, \ + xmlSecErrorsSafeString(message) \ + ); \ + } + +/** + * xmlSecXmlParserError: + * @errorFunction: the failed function. + * @ctxt: the parser context. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting XML parser errors. + */ +#define xmlSecXmlParserError(errorFunction, ctxt, errorObject) \ + { \ + xmlErrorPtr error = xmlCtxtGetLastError(ctxt);\ + int code = (error != NULL) ? error->code : 0; \ + const char* message = (error != NULL) ? error->message : NULL; \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XML_FAILED, \ + "xml error: %lu: %s", \ + (unsigned long)code, \ + xmlSecErrorsSafeString(message) \ + ); \ + } + +/** + * xmlSecXmlParserError2: + * @errorFunction: the failed function. + * @ctxt: the parser context. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param: the extra message param. + * + * Macro. The XMLSec library macro for reporting XML parser errors. + */ +#define xmlSecXmlParserError2(errorFunction, ctxt, errorObject, msg, param) \ + { \ + xmlErrorPtr error = xmlCtxtGetLastError(ctxt);\ + int code = (error != NULL) ? error->code : 0; \ + const char* message = (error != NULL) ? error->message : NULL; \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XML_FAILED, \ + msg "; xml error: %lu: %s", \ + (param), \ + (unsigned long)code, \ + xmlSecErrorsSafeString(message) \ + ); \ + } + +/** + * xmlSecXsltError: + * @errorFunction: the failed function. + * @ctxt: the parser context. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting XSLT errors. + */ +#define xmlSecXsltError(errorFunction, ctxt, errorObject) \ + { \ + xmlErrorPtr error = xmlGetLastError(); \ + int code = (error != NULL) ? error->code : 0; \ + const char* message = (error != NULL) ? error->message : NULL; \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_XSLT_FAILED, \ + "xslt error: %lu: %s", \ + (unsigned long)code, \ + xmlSecErrorsSafeString(message) \ + ); \ + } + +/** + * xmlSecIOError: + * @errorFunction: the failed function. + * @name: the filename, function name, uri, etc. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting IO errors. + */ +#define xmlSecIOError(errorFunction, name, errorObject) \ + { \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_IO_FAILED, \ + "name=\"%s\"; errno=%d", \ + xmlSecErrorsSafeString(name), \ + errno \ + ); \ + } + +/** + * xmlSecNotImplementedError: + * @details: the additional details. + * + * Macro. The XMLSec library macro for reporting "not implemented" errors. + */ +#define xmlSecNotImplementedError(details) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + NULL, \ + NULL, \ + XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \ + "details=%s", \ + xmlSecErrorsSafeString(details) \ + ) +/** + * xmlSecInvalidSizeError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value. + * @expected: the expected value. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid size" errors when + * we expect exact match. + */ +#define xmlSecInvalidSizeError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_SIZE, \ + "invalid size for '%s': actual=%lu is not equal to expected=%lu", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (unsigned long)(expected) \ + ) + +/** + * xmlSecInvalidSizeLessThanError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value. + * @expected: the expected value. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid size" errors when + * we expect at least the expected size. + */ +#define xmlSecInvalidSizeLessThanError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_SIZE, \ + "invalid size for '%s': actual=%lu is less than expected=%lu", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (unsigned long)(expected) \ + ) + +/** + * xmlSecInvalidSizeMoreThanError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value. + * @expected: the expected value. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid size" errors when + * we expect at most the expected size. + */ +#define xmlSecInvalidSizeMoreThanError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \ + "invalid size for '%s': actual=%lu is more than expected=%lu", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (unsigned long)(expected) \ + ) + +/** + * xmlSecInvalidSizeNotMultipleOfError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value. + * @divider: the expected divider. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid size" errors when + * we expect the size to be a multiple of the divider. + */ +#define xmlSecInvalidSizeNotMultipleOfError(name, actual, divider, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_NOT_IMPLEMENTED, \ + "invalid size for '%s': actual=%lu is not a multiple of %lu", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (unsigned long)(divider) \ + ) + +/** + * xmlSecInvalidSizeOtherError: + * @msg: the message about the error. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid size" errors when + * we expect exact match. + */ +#define xmlSecInvalidSizeOtherError(msg, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_SIZE, \ + "invalid size: %s", \ + xmlSecErrorsSafeString(msg) \ + ) + +/** + * xmlSecInvalidDataError: + * @msg: the msg with explanation. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid data" errors. + */ +#define xmlSecInvalidDataError(msg, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_DATA, \ + "%s", \ + xmlSecErrorsSafeString(msg) \ + ) + +/** + * xmlSecInvalidStringDataError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value as a string. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid data" errors for string. + */ +#define xmlSecInvalidStringDataError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_DATA, \ + "invalid data for '%s': actual='%s' and expected %s", \ + xmlSecErrorsSafeString(name), \ + xmlSecErrorsSafeString(actual), \ + (expected) \ + ) + +/** + * xmlSecInvalidIntegerDataError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value as an integer. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid data" errors for integers. + */ +#define xmlSecInvalidIntegerDataError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_DATA, \ + "invalid data for '%s': actual=%ld and expected %s", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (expected) \ + ) + +/** + * xmlSecInvalidIntegerDataError2: + * @name1: the name of the first variable, parameter, etc. + * @actual1: the actual first value as an integer. + * @name2: the name of the second variable, parameter, etc. + * @actual2: the actual second value as an integer. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid data" errors for integers. + */ +#define xmlSecInvalidIntegerDataError2(name1, actual1, name2, actual2, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_DATA, \ + "invalid data: actual value '%s'=%ld, actual value '%s'=%ld and expected %s", \ + xmlSecErrorsSafeString(name1), \ + (unsigned long)(actual1), \ + xmlSecErrorsSafeString(name2), \ + (unsigned long)(actual2), \ + (expected) \ + ) + +/** + * xmlSecInvalidTypeError: + * @msg: the msg with explanation. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid type" errors. + */ +#define xmlSecInvalidTypeError(msg, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TYPE, \ + "%s", \ + xmlSecErrorsSafeString(msg) \ + ) + +/** + * xmlSecInvalidStringTypeError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value as a string. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid type" errors for string. + */ +#define xmlSecInvalidStringTypeError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TYPE, \ + "invalid type for '%s': actual='%s' and expected %s", \ + xmlSecErrorsSafeString(name), \ + xmlSecErrorsSafeString(actual), \ + (expected) \ + ) + +/** + * xmlSecInvalidIntegerTypeError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value as an integer. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid type" errors for integers. + */ +#define xmlSecInvalidIntegerTypeError(name, actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TYPE, \ + "invalid type for '%s': actual=%ld and expected %s", \ + xmlSecErrorsSafeString(name), \ + (unsigned long)(actual), \ + (expected) \ + ) + +/** + * xmlSecInvalidIntegerTypeError2: + * @name1: the name of the first variable, parameter, etc. + * @actual1: the actual first value as an integer. + * @name2: the name of the second variable, parameter, etc. + * @actual2: the actual second value as an integer. + * @expected: the expected value(s) as a string. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid type" errors for integers. + */ +#define xmlSecInvalidIntegerTypeError2(name1, actual1, name2, actual2, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TYPE, \ + "invalid type: actual value '%s'=%ld, actual value '%s'=%ld and expected %s", \ + xmlSecErrorsSafeString(name1), \ + (unsigned long)(actual1), \ + xmlSecErrorsSafeString(name2), \ + (unsigned long)(actual2), \ + (expected) \ + ) + +/** + * xmlSecInvalidNodeError: + * @actualNode: the actual node. + * @expectedNodeName: the expected node name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting an invalid node errors. + */ +#define xmlSecInvalidNodeError(actualNode, expectedNodeName, errorObject) \ + { \ + const char* actualNodeName = xmlSecNodeGetName(actualNode); \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_NODE, \ + "actual=%s; expected=%s", \ + xmlSecErrorsSafeString(actualNodeName), \ + xmlSecErrorsSafeString(expectedNodeName) \ + ); \ + } + +/** + * xmlSecInvalidNodeContentError: + * @node: the node. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @reason: the reason why node content is invalid. + * + * Macro. The XMLSec library macro for reporting an invalid node content errors. + */ +#define xmlSecInvalidNodeContentError(node, errorObject, reason) \ + { \ + const char* nName = xmlSecNodeGetName(node); \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_NODE_CONTENT, \ + "node=%s; reason=%s", \ + xmlSecErrorsSafeString(nName), \ + xmlSecErrorsSafeString(reason) \ + ); \ + } + +/** + * xmlSecInvalidNodeAttributeError: + * @node: the node. + * @attrName: the attribute name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @reason: the reason why node content is invalid. + * + * Macro. The XMLSec library macro for reporting an invalid node attribute errors. + */ +#define xmlSecInvalidNodeAttributeError(node, attrName, errorObject, reason) \ + { \ + const char* nName = xmlSecNodeGetName(node); \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE, \ + "node=%s; attribute=%s; reason=%s",\ + xmlSecErrorsSafeString(nName), \ + xmlSecErrorsSafeString(attrName), \ + xmlSecErrorsSafeString(reason) \ + ); \ + } + +/** + * xmlSecNodeAlreadyPresentError: + * @parent: the parent node. + * @nodeName: the node name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting node already present errors. + */ +#define xmlSecNodeAlreadyPresentError(parent, nodeName, errorObject) \ + { \ + const char* pName = xmlSecNodeGetName(parent);\ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT, \ + "parent=%s; node=%s", \ + xmlSecErrorsSafeString(pName), \ + xmlSecErrorsSafeString(nodeName) \ + ); \ + } + +/** + * xmlSecUnexpectedNodeError: + * @node: the node. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting an invalid node errors. + */ +#define xmlSecUnexpectedNodeError(node, errorObject) \ + { \ + const char* nName = xmlSecNodeGetName(node); \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_UNEXPECTED_NODE, \ + "node=%s", \ + xmlSecErrorsSafeString(nName) \ + ); \ + } + +/** + * xmlSecNodeNotFoundError: + * @errorFunction: the failed function. + * @startNode: the search start node. + * @targetNodeName: the expected child node name. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting node not found errors. + */ +#define xmlSecNodeNotFoundError(errorFunction, startNode, targetNodeName, errorObject) \ + { \ + const char* startNodeName = xmlSecNodeGetName(startNode); \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + (errorFunction), \ + XMLSEC_ERRORS_R_NODE_NOT_FOUND, \ + "startNode=%s; target=%s", \ + xmlSecErrorsSafeString(startNodeName), \ + xmlSecErrorsSafeString(targetNodeName) \ + ); \ + } + +/** + * xmlSecInvalidTransfromError: + * @transform: the transform. + * + * Macro. The XMLSec library macro for reporting an invalid transform errors. + */ +#define xmlSecInvalidTransfromError(transform) \ + { \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)xmlSecTransformGetName(transform), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TRANSFORM, \ + XMLSEC_ERRORS_NO_MESSAGE \ + ); \ + } + +/** + * xmlSecInvalidTransfromError2: + * @transform: the transform. + * @msg: the extra message. + * @param: the extra message param. + * + * + * Macro. The XMLSec library macro for reporting an invalid transform errors. + */ +#define xmlSecInvalidTransfromError2(transform, msg, param) \ + { \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)xmlSecTransformGetName(transform), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_TRANSFORM, \ + (msg), (param) \ + ); \ + } + +/** + * xmlSecInvalidTransfromStatusError: + * @transform: the transform. + * + * Macro. The XMLSec library macro for reporting an invalid transform status errors. + */ +#define xmlSecInvalidTransfromStatusError(transform) \ + { \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)xmlSecTransformGetName(transform), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_STATUS, \ + "transformStatus=%d", \ + (int)((transform)->status) \ + ); \ + } + +/** + * xmlSecInvalidTransfromStatusError2: + * @transform: the transform. + * @msg: the extra message. + * + * Macro. The XMLSec library macro for reporting an invalid transform status errors. + */ +#define xmlSecInvalidTransfromStatusError2(transform, msg) \ + { \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)xmlSecTransformGetName(transform), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_STATUS, \ + "transformStatus=%ld, msg=%s", \ + (long int)((transform)->status), \ + msg \ + ); \ + } + +/** + * xmlSecInvalidKeyDataSizeError: + * @name: the name of the variable, parameter, etc. + * @actual: the actual value. + * @expected: the expected value(s). + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid keydata size" errors. + */ +#define xmlSecInvalidKeyDataSizeError(actual, expected, errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE, \ + "invalid key data size: actual=%ld and expected=%ld", \ + (unsigned long)(actual), \ + (unsigned long)(expected) \ + ) + +/** + * xmlSecInvalidZeroKeyDataSizeError: + * @name: the name of the variable, parameter, etc. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * + * Macro. The XMLSec library macro for reporting "invalid keydata size" errors. + */ +#define xmlSecInvalidZeroKeyDataSizeError(errorObject) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE, \ + "invalid zero key data size" \ + ) + + +/** + * xmlSecOtherError: + * @code: the error code. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @details: the error message. + * + * Macro. The XMLSec library macro for reporting other XMLSec errors. + */ +#define xmlSecOtherError(code, errorObject, details) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + (code), \ + "details=%s", \ + xmlSecErrorsSafeString(details) \ + ) + +/** + * xmlSecOtherError2: + * @code: the error code. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param: the extra message param. + * + * Macro. The XMLSec library macro for reporting other XMLSec errors. + */ +#define xmlSecOtherError2(code, errorObject, msg, param) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + (code), \ + (msg), (param) \ + ) + +/** + * xmlSecOtherError3: + * @code: the error code. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param1: the extra message param. + * @param2: the extra message param. + * + * Macro. The XMLSec library macro for reporting other XMLSec errors. + */ +#define xmlSecOtherError3(code, errorObject, msg, param1, param2) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + (code), \ + (msg), (param1), (param2) \ + ) + +/** + * xmlSecOtherError4: + * @code: the error code. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param1: the extra message param. + * @param2: the extra message param. + * @param3: the extra message param. + * + * Macro. The XMLSec library macro for reporting other XMLSec errors. + */ +#define xmlSecOtherError4(code, errorObject, msg, param1, param2, param3) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + (code), \ + (msg), (param1), (param2), (param3) \ + ) + +/** + * xmlSecOtherError5: + * @code: the error code. + * @errorObject: the error specific error object (e.g. transform, key data, etc). + * @msg: the extra message. + * @param1: the extra message param. + * @param2: the extra message param. + * @param3: the extra message param. + * @param4: the extra message param. + * + * Macro. The XMLSec library macro for reporting other XMLSec errors. + */ +#define xmlSecOtherError5(code, errorObject, msg, param1, param2, param3, param4) \ + xmlSecError(XMLSEC_ERRORS_HERE, \ + (const char*)(errorObject), \ + NULL, \ + (code), \ + (msg), (param1), (param2), (param3), (param4) \ + ) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_ERROR_HELPERS_H__ */ |