crypt32 1:Simplify CRYPT_AsnDecodeNameValueInternal, getting rid of a warning

James Hawkins truiken at gmail.com
Wed Aug 30 16:08:32 CDT 2006


Hi,

Changelog:
* Simplify CRYPT_AsnDecodeNameValueInternal, getting rid of a warning.

 dlls/crypt32/decode.c |  117 ++++++++++++++++++++++++-------------------------
 1 files changed, 57 insertions(+), 60 deletions(-)

-- 
James Hawkins
-------------- next part --------------
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index 04e2df2..d1e4006 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -1324,8 +1324,7 @@ static BOOL WINAPI CRYPT_AsnDecodeNameVa
         case ASN_UNIVERSALSTRING:
             FIXME("ASN_UNIVERSALSTRING: unimplemented\n");
             SetLastError(CRYPT_E_ASN1_BADTAG);
-            ret = FALSE;
-            break;
+            return FALSE;
         case ASN_BMPSTRING:
             valueType = CERT_RDN_BMP_STRING;
             bytesNeeded += dataLen;
@@ -1337,75 +1336,73 @@ static BOOL WINAPI CRYPT_AsnDecodeNameVa
             break;
         default:
             SetLastError(CRYPT_E_ASN1_BADTAG);
+            return FALSE;
+        }
+
+        if (!value)
+            *pcbStructInfo = bytesNeeded;
+        else if (*pcbStructInfo < bytesNeeded)
+        {
+            *pcbStructInfo = bytesNeeded;
+            SetLastError(ERROR_MORE_DATA);
             ret = FALSE;
         }
-        if (ret)
+        else
         {
-            if (!value)
-                *pcbStructInfo = bytesNeeded;
-            else if (*pcbStructInfo < bytesNeeded)
-            {
-                *pcbStructInfo = bytesNeeded;
-                SetLastError(ERROR_MORE_DATA);
-                ret = FALSE;
-            }
-            else
+            *pcbStructInfo = bytesNeeded;
+            value->dwValueType = valueType;
+            if (dataLen)
             {
-                *pcbStructInfo = bytesNeeded;
-                value->dwValueType = valueType;
-                if (dataLen)
-                {
-                    DWORD i;
+                DWORD i;
 
-                    assert(value->Value.pbData);
-                    switch (pbEncoded[0])
-                    {
-                    case ASN_OCTETSTRING:
-                    case ASN_NUMERICSTRING:
-                    case ASN_PRINTABLESTRING:
-                    case ASN_IA5STRING:
-                    case ASN_T61STRING:
-                    case ASN_VIDEOTEXSTRING:
-                    case ASN_GRAPHICSTRING:
-                    case ASN_VISIBLESTRING:
-                    case ASN_GENERALSTRING:
-                        value->Value.cbData = dataLen;
-                        if (dataLen)
-                        {
-                            if (!(dwFlags & CRYPT_DECODE_NOCOPY_FLAG))
-                                memcpy(value->Value.pbData,
-                                 pbEncoded + 1 + lenBytes, dataLen);
-                            else
-                                value->Value.pbData = (LPBYTE)pbEncoded + 1 +
-                                 lenBytes;
-                        }
-                        break;
-                    case ASN_BMPSTRING:
+                assert(value->Value.pbData);
+                switch (pbEncoded[0])
+                {
+                case ASN_OCTETSTRING:
+                case ASN_NUMERICSTRING:
+                case ASN_PRINTABLESTRING:
+                case ASN_IA5STRING:
+                case ASN_T61STRING:
+                case ASN_VIDEOTEXSTRING:
+                case ASN_GRAPHICSTRING:
+                case ASN_VISIBLESTRING:
+                case ASN_GENERALSTRING:
+                    value->Value.cbData = dataLen;
+                    if (dataLen)
                     {
-                        LPWSTR str = (LPWSTR)value->Value.pbData;
-
-                        value->Value.cbData = dataLen;
-                        for (i = 0; i < dataLen / 2; i++)
-                            str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) |
-                             pbEncoded[1 + lenBytes + 2 * i + 1];
-                        break;
+                        if (!(dwFlags & CRYPT_DECODE_NOCOPY_FLAG))
+                            memcpy(value->Value.pbData,
+                             pbEncoded + 1 + lenBytes, dataLen);
+                        else
+                            value->Value.pbData = (LPBYTE)pbEncoded + 1 +
+                             lenBytes;
                     }
-                    case ASN_UTF8STRING:
-                    {
-                        LPWSTR str = (LPWSTR)value->Value.pbData;
+                    break;
+                case ASN_BMPSTRING:
+                {
+                    LPWSTR str = (LPWSTR)value->Value.pbData;
 
-                        value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0,
-                         (LPSTR)pbEncoded + 1 + lenBytes, dataLen, 
-                         str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2;
-                        break;
-                    }
-                    }
+                    value->Value.cbData = dataLen;
+                    for (i = 0; i < dataLen / 2; i++)
+                        str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) |
+                         pbEncoded[1 + lenBytes + 2 * i + 1];
+                    break;
                 }
-                else
+                case ASN_UTF8STRING:
                 {
-                    value->Value.cbData = 0;
-                    value->Value.pbData = NULL;
+                    LPWSTR str = (LPWSTR)value->Value.pbData;
+
+                    value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0,
+                     (LPSTR)pbEncoded + 1 + lenBytes, dataLen, 
+                     str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2;
+                    break;
                 }
+                }
+            }
+            else
+            {
+                value->Value.cbData = 0;
+                value->Value.pbData = NULL;
             }
         }
     }
-- 
1.4.2


More information about the wine-patches mailing list