modify error log 78/10178/1
authorcc1.yim <cc1.yim@samsung.com>
Wed, 26 Jun 2013 09:13:42 +0000 (18:13 +0900)
committerAnas Nashif <anas.nashif@intel.com>
Mon, 23 Sep 2013 08:26:54 +0000 (04:26 -0400)
Change-Id: I6a90e62201db9828da63c0b271fa874b2ad05289
Signed-off-by: cc1.yim <cc1.yim@samsung.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
src/errors.c
src/io.c
src/openssl/digests.c
src/xmldsig.c

index c9886d3..c01a492 100644 (file)
@@ -114,6 +114,7 @@ xmlSecErrorsShutdown(void) {
 void
 xmlSecErrorsSetCallback(xmlSecErrorsCallback callback) {
     xmlSecErrorsClbk = callback;
+    xmlSecErrorsDefaultCallbackEnableOutput(0);
 }
 
 /**
@@ -144,7 +145,7 @@ xmlSecErrorsDefaultCallback(const char* file, int line, const char* func,
             }
         }
         xmlGenericError(xmlGenericErrorContext,
-            "func=%s:file=%s:line=%d:obj=%s:subj=%s:error=%d:%s:%s\n",
+            "func=%s:file=%s:line=%d:obj=%s:subj=%s:error=%d:<%s>:<%s>\n",
             (func != NULL) ? func : "unknown",
             (file != NULL) ? file : "unknown",
             line,
@@ -220,23 +221,38 @@ xmlSecErrorsGetMsg(xmlSecSize pos) {
  * function.
  */
 void
-xmlSecError(const char* file, int line, const char* func,
-            const char* errorObject, const char* errorSubject,
-            int reason, const char* msg, ...) {
+xmlSecError(const char* file, int line, const char* func, 
+        const char* errorObject, const char* errorSubject,
+        int reason, const char* msg, ...) {
 
     if(xmlSecErrorsClbk != NULL) {
-        xmlChar error_msg[XMLSEC_ERRORS_BUFFER_SIZE];
+        xmlChar error_msg[XMLSEC_ERRORS_BUFFER_SIZE] = {'\0',};
+        const char* e_msg = NULL;
+        xmlSecSize i;
+        int len = 0;
+
+        if(xmlSecPrintErrorMessages == 0) {
+            if(reason != XMLSEC_ERRORS_MAX_NUMBER) {
+                for(i = 0; (i < XMLSEC_ERRORS_MAX_NUMBER) && (xmlSecErrorsGetMsg(i) != NULL); ++i) {
+                    if(xmlSecErrorsGetCode(i) == reason) {
+                        e_msg = xmlSecErrorsGetMsg(i);
+                        sprintf(error_msg , "%s] [", e_msg);
+                        len = strlen(error_msg);
+                        break;
+                    }
+                }
+            }
+        }
 
         if(msg != NULL) {
             va_list va;
-
             va_start(va, msg);
-            xmlSecStrVPrintf(error_msg, sizeof(error_msg), BAD_CAST msg, va);
+            xmlSecStrVPrintf(error_msg + len, sizeof(error_msg) - len, BAD_CAST msg, va);
             error_msg[sizeof(error_msg) - 1] = '\0';
             va_end(va);
         } else {
             error_msg[0] = '\0';
         }
-        xmlSecErrorsClbk(file, line, func, errorObject, errorSubject, reason, (char*)error_msg);
-    }
+
+        xmlSecErrorsClbk(file, line, func, errorObject, errorSubject, reason, (char*)error_msg);      }
 }
index 42e9133..77344c0 100644 (file)
--- a/src/io.c
+++ b/src/io.c
@@ -426,7 +426,7 @@ xmlSecTransformInputURIOpen(xmlSecTransformPtr transform, const xmlChar *uri) {
                     XMLSEC_ERRORS_R_IO_FAILED,
                     "uri=%s;errno=%d",
                     xmlSecErrorsSafeString(uri),
-                    errno);
+                    strerror(errno));
         return(-1);
     }
 
@@ -484,7 +484,7 @@ xmlSecTransformInputURIPopBin(xmlSecTransformPtr transform, xmlSecByte* data,
                         xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
                         "readcallback",
                         XMLSEC_ERRORS_R_IO_FAILED,
-                        "errno=%d", errno);
+                        "errno=%d", strerror(errno));
             return(-1);
         }
         (*dataSize) = ret;
index fa26fa6..0e0978f 100644 (file)
@@ -243,7 +243,7 @@ xmlSecOpenSSLEvpDigestVerify(xmlSecTransformPtr transform,
                     "data_size=%d;dgst_size=%d",
                     dataSize, ctx->dgstSize);
         transform->status = xmlSecTransformStatusFail;
-        return(0);
+        return -1;
     }
 
     if(memcmp(ctx->dgst, data, ctx->dgstSize) != 0) {
@@ -253,7 +253,7 @@ xmlSecOpenSSLEvpDigestVerify(xmlSecTransformPtr transform,
                     XMLSEC_ERRORS_R_INVALID_DATA,
                     "data and digest do not match");
         transform->status = xmlSecTransformStatusFail;
-        return(0);
+        return -1;
     }
 
     transform->status = xmlSecTransformStatusOk;
index b08b8b1..800aa25 100644 (file)
@@ -49,6 +49,7 @@ static int      xmlSecDSigCtxProcessManifestNode        (xmlSecDSigCtxPtr dsigCt
 
 /* The ID attribute in XMLDSig is 'Id' */
 static const xmlChar*           xmlSecDSigIds[] = { xmlSecAttrId, NULL };
+static char logMsg[1024];
 
 /**
  * xmlSecDSigCtxCreate:
@@ -1568,42 +1569,46 @@ xmlSecDSigReferenceCtxProcessNode(xmlSecDSigReferenceCtxPtr dsigRefCtx, xmlNodeP
     /* finally get transforms results */
     ret = xmlSecTransformCtxExecute(transformCtx, node->doc);
     if(ret < 0) {
+        sprintf(logMsg, "uri:%s", (char*)dsigRefCtx->uri);
+        logMsg[strlen(dsigRefCtx->uri)+5] = '\0';
         xmlSecError(XMLSEC_ERRORS_HERE,
-                    NULL,
-                    "xmlSecTransformCtxExecute",
-                    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
+                NULL,
+                "xmlSecTransformCtxExecute",
+                XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                logMsg);
         return(-1);
-    }
+    }    
     dsigRefCtx->result = transformCtx->result;
 
     if(dsigRefCtx->dsigCtx->operation == xmlSecTransformOperationSign) {
         if((dsigRefCtx->result == NULL) || (xmlSecBufferGetData(dsigRefCtx->result) == NULL)) {
             xmlSecError(XMLSEC_ERRORS_HERE,
-                        NULL,
-                        "xmlSecTransformCtxExecute",
-                        XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+                    NULL,
+                    "xmlSecTransformCtxExecute",
+                    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                    XMLSEC_ERRORS_NO_MESSAGE);
             return(-1);
         }
 
         /* write signed data to xml */
         xmlNodeSetContentLen(digestValueNode,
-                            xmlSecBufferGetData(dsigRefCtx->result),
-                            xmlSecBufferGetSize(dsigRefCtx->result));
+                xmlSecBufferGetData(dsigRefCtx->result),
+                xmlSecBufferGetSize(dsigRefCtx->result));
 
         /* set success status and we are done */
         dsigRefCtx->status = xmlSecDSigStatusSucceeded;
     } else {
         /* verify SignatureValue node content */
-        ret = xmlSecTransformVerifyNodeContent(dsigRefCtx->digestMethod,
-                            digestValueNode, transformCtx);
+        ret = xmlSecTransformVerifyNodeContent(dsigRefCtx->digestMethod, 
+                digestValueNode, transformCtx);
         if(ret < 0) {
+            sprintf(logMsg, "uri:%s", (char*)dsigRefCtx->uri);
+            logMsg[strlen(dsigRefCtx->uri)+5] = '\0';
             xmlSecError(XMLSEC_ERRORS_HERE,
-                        NULL,
-                        "xmlSecTransformVerifyNodeContent",
-                        XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+                    NULL,
+                    "xmlSecTransformVerifyNodeContent",
+                    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                    logMsg);
             return(-1);
         }