[xmlsec] fix a couple minor issues in xmlsec-nss



commit 25a1ac7b0ae1886dd1f5647516c2f83391e63660
Author: Aleksey Sanin <aleksey aleksey com>
Date:   Mon Apr 26 00:28:34 2010 -0700

    fix a couple minor issues in xmlsec-nss

 TODO              |    2 +-
 src/nss/x509.c    |    2 +-
 src/nss/x509vfy.c |   41 +++++++++++++++++++++++------------------
 3 files changed, 25 insertions(+), 20 deletions(-)
---
diff --git a/TODO b/TODO
index d75c5ed..e58c94f 100644
--- a/TODO
+++ b/TODO
@@ -12,7 +12,7 @@ Tests status
 
 * xmlsec-nss (April 25, 2010 using NSS 3.12.6)
 
-** Skipped tests (missing transforms: RIPEMD160, SHA224, RSA/OAEP, GOST)
+** Skipped tests due to missing transforms: RIPEMD160, SHA224, RSA/OAEP, GOST
 
 aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160
 aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64
diff --git a/src/nss/x509.c b/src/nss/x509.c
index 2d7d881..887c77c 100644
--- a/src/nss/x509.c
+++ b/src/nss/x509.c
@@ -1994,7 +1994,7 @@ xmlSecNssASN1IntegerWrite(SECItem *num) {
      * NSS bug http://bugzilla.mozilla.org/show_bug.cgi?id=212864 is fixed
      */
     for(ii = num->len; ii > 0; --ii, shift += 8) {
-        val |= (num->data[ii - 1]) << shift;
+        val |= ((PRUint64)num->data[ii - 1]) << shift;
     }
 
     res = (xmlChar*)xmlMalloc(resLen + 1);
diff --git a/src/nss/x509vfy.c b/src/nss/x509vfy.c
index 03bef7e..fdb866f 100644
--- a/src/nss/x509vfy.c
+++ b/src/nss/x509vfy.c
@@ -370,7 +370,7 @@ xmlSecNssGetCertName(const xmlChar * name) {
         return(NULL);
     }
     while( (p = (xmlChar*)xmlStrstr(name2, BAD_CAST "emailAddress=")) != NULL) {
-        memcpy(p, "        mail=", 13);
+        memcpy(p, "           E=", 13);
     }
 
     tmp = xmlSecNssX509NameRead(name2, xmlStrlen(name2));
@@ -428,14 +428,16 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
             goto done;
         }
 
-        arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
-        if (arena == NULL) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                        NULL,
-                        "PORT_NewArena",
-                        XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
-            goto done;
+        if(arena == NULL) {
+            arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
+            if (arena == NULL) {
+                xmlSecError(XMLSEC_ERRORS_HERE,
+                            NULL,
+                            "PORT_NewArena",
+                            XMLSEC_ERRORS_R_CRYPTO_FAILED,
+                            XMLSEC_ERRORS_NO_MESSAGE);
+                goto done;
+            }
         }
 
         nameitem = SEC_ASN1EncodeItem(arena, NULL, (void *)name,
@@ -467,14 +469,16 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
             goto done;
         }
 
-        arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
-        if (arena == NULL) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                        NULL,
-                        "PORT_NewArena",
-                        XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
-            goto done;
+        if(arena == NULL) {
+            arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
+            if (arena == NULL) {
+                xmlSecError(XMLSEC_ERRORS_HERE,
+                            NULL,
+                            "PORT_NewArena",
+                            XMLSEC_ERRORS_R_CRYPTO_FAILED,
+                            XMLSEC_ERRORS_NO_MESSAGE);
+                goto done;
+            }
         }
 
         nameitem = SEC_ASN1EncodeItem(arena, NULL, (void *)name,
@@ -493,7 +497,6 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
         issuerAndSN.derIssuer.data = nameitem->data;
         issuerAndSN.derIssuer.len = nameitem->len;
 
-
         /* TBD: serial num can be arbitrarily long */
         if(PR_sscanf((char *)issuerSerial, "%llu", &issuerSN) != 1) {
             xmlSecError(XMLSEC_ERRORS_HERE,
@@ -501,6 +504,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
                         "PR_sscanf",
                         XMLSEC_ERRORS_R_XMLSEC_FAILED,
                         "error code=%d", PR_GetError());
+            SECITEM_FreeItem(&issuerAndSN.serialNumber, PR_FALSE);
             goto done;
         }
 
@@ -511,6 +515,7 @@ xmlSecNssX509FindCert(CERTCertList* certsList, const xmlChar *subjectName,
                         "xmlSecNssNumToItem",
                         XMLSEC_ERRORS_R_XMLSEC_FAILED,
                         "error code=%d", PR_GetError());
+            SECITEM_FreeItem(&issuerAndSN.serialNumber, PR_FALSE);
             goto done;
         }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]