crypt32: Validate input arguments to CryptQueryObject.
authorJuan Lang <juan.lang@gmail.com>
Thu, 11 Dec 2008 23:21:47 +0000 (15:21 -0800)
committerAlexandre Julliard <julliard@winehq.org>
Fri, 12 Dec 2008 10:38:53 +0000 (11:38 +0100)
dlls/crypt32/object.c
dlls/crypt32/tests/object.c

index 825dad587f1ceaa46d1abd238d09cea22b59ee16..f6e0c844e06ec031d865919f305fed53d3f1457a 100644 (file)
@@ -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);
index 6782cb00dc6ac551c3bf67de0a83822f6150fa18..23f35979583a4a9c8bb57adee9d11671b83ae5ff 100644 (file)
@@ -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 */