Juan Lang : crypt32: Simplify DecodePathLenConstraint.

Alexandre Julliard julliard at winehq.org
Tue Sep 18 05:31:30 CDT 2007


Module: wine
Branch: master
Commit: be91ad360437363bf91aae977a95d8244df8dee9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=be91ad360437363bf91aae977a95d8244df8dee9

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Sep 17 17:21:43 2007 -0700

crypt32: Simplify DecodePathLenConstraint.

---

 dlls/crypt32/decode.c |   54 ++++++++++++++++++++----------------------------
 1 files changed, 23 insertions(+), 31 deletions(-)

diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c
index 9fba88c..7b231ea 100644
--- a/dlls/crypt32/decode.c
+++ b/dlls/crypt32/decode.c
@@ -2602,43 +2602,35 @@ static BOOL CRYPT_AsnDecodePathLenConstraint(const BYTE *pbEncoded,
  DWORD *pcbDecoded)
 {
     BOOL ret = TRUE;
+    DWORD bytesNeeded = sizeof(struct PATH_LEN_CONSTRAINT), size;
 
     TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags,
      pvStructInfo, *pcbStructInfo, pcbDecoded);
 
-    if (cbEncoded)
+    if (!pvStructInfo)
     {
-        if (pbEncoded[0] == ASN_INTEGER)
-        {
-            DWORD bytesNeeded = sizeof(struct PATH_LEN_CONSTRAINT);
-
-            if (!pvStructInfo)
-                *pcbStructInfo = bytesNeeded;
-            else if (*pcbStructInfo < bytesNeeded)
-            {
-                SetLastError(ERROR_MORE_DATA);
-                *pcbStructInfo = bytesNeeded;
-                ret = FALSE;
-            }
-            else
-            {
-                struct PATH_LEN_CONSTRAINT *constraint =
-                 (struct PATH_LEN_CONSTRAINT *)pvStructInfo;
-                DWORD size = sizeof(constraint->dwPathLenConstraint);
+        ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, dwFlags, NULL,
+         &size, pcbDecoded);
+        *pcbStructInfo = bytesNeeded;
+    }
+    else if (*pcbStructInfo < bytesNeeded)
+    {
+        SetLastError(ERROR_MORE_DATA);
+        *pcbStructInfo = bytesNeeded;
+        ret = FALSE;
+    }
+    else
+    {
+        struct PATH_LEN_CONSTRAINT *constraint =
+         (struct PATH_LEN_CONSTRAINT *)pvStructInfo;
 
-                ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, dwFlags,
-                 &constraint->dwPathLenConstraint, &size, pcbDecoded);
-                if (ret)
-                    constraint->fPathLenConstraint = TRUE;
-                TRACE("got an int, dwPathLenConstraint is %d\n",
-                 constraint->dwPathLenConstraint);
-            }
-        }
-        else
-        {
-            SetLastError(CRYPT_E_ASN1_CORRUPT);
-            ret = FALSE;
-        }
+        size = sizeof(constraint->dwPathLenConstraint);
+        ret = CRYPT_AsnDecodeIntInternal(pbEncoded, cbEncoded, dwFlags,
+         &constraint->dwPathLenConstraint, &size, pcbDecoded);
+        if (ret)
+            constraint->fPathLenConstraint = TRUE;
+        TRACE("got an int, dwPathLenConstraint is %d\n",
+         constraint->dwPathLenConstraint);
     }
     TRACE("returning %d (%08x)\n", ret, GetLastError());
     return ret;




More information about the wine-cvs mailing list