Juan Lang : crypt32: Validate input arguments to CryptQueryObject.

Alexandre Julliard julliard at winehq.org
Fri Dec 12 07:04:09 CST 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Dec 11 15:21:47 2008 -0800

crypt32: Validate input arguments to CryptQueryObject.

---

 dlls/crypt32/object.c       |   13 +++++++++++++
 dlls/crypt32/tests/object.c |    2 --
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/crypt32/object.c b/dlls/crypt32/object.c
index 825dad5..f6e0c84 100644
--- a/dlls/crypt32/object.c
+++ b/dlls/crypt32/object.c
@@ -492,6 +492,19 @@ BOOL WINAPI CryptQueryObject(DWORD dwObjectType, const void *pvObject,
      dwExpectedFormatTypeFlags, dwFlags, pdwMsgAndCertEncodingType,
      pdwContentType, pdwFormatType, phCertStore, phMsg, ppvContext);
 
+    if (dwObjectType != CERT_QUERY_OBJECT_BLOB &&
+     dwObjectType != CERT_QUERY_OBJECT_FILE)
+    {
+        WARN("unsupported type %d\n", dwObjectType);
+        SetLastError(E_INVALIDARG);
+        return FALSE;
+    }
+    if (!pvObject)
+    {
+        WARN("missing required argument\n");
+        SetLastError(E_INVALIDARG);
+        return FALSE;
+    }
     if (dwExpectedContentTypeFlags & unimplementedTypes)
         WARN("unimplemented for types %08x\n",
          dwExpectedContentTypeFlags & unimplementedTypes);
diff --git a/dlls/crypt32/tests/object.c b/dlls/crypt32/tests/object.c
index 6782cb0..23f3597 100644
--- a/dlls/crypt32/tests/object.c
+++ b/dlls/crypt32/tests/object.c
@@ -130,13 +130,11 @@ static void test_query_object(void)
     SetLastError(0xdeadbeef);
     ret = CryptQueryObject(0, NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL,
      NULL);
-    todo_wine
     ok(!ret && GetLastError() == E_INVALIDARG,
      "expected E_INVALIDARG, got %08x\n", GetLastError());
     SetLastError(0xdeadbeef);
     ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, NULL, 0, 0, 0, NULL, NULL,
      NULL, NULL, NULL, NULL);
-    todo_wine
     ok(!ret && GetLastError() == E_INVALIDARG,
      "expected E_INVALIDARG, got %08x\n", GetLastError());
     /* Test with a simple cert */




More information about the wine-cvs mailing list