Author: winesync Date: Mon Jan 14 15:51:35 2008 New Revision: 31775
URL: http://svn.reactos.org/svn/reactos?rev=31775&view=rev Log: Autosyncing with Wine HEAD
Modified: trunk/reactos/dll/win32/cryptnet/cryptnet.rbuild trunk/reactos/dll/win32/cryptnet/cryptnet_main.c
Modified: trunk/reactos/dll/win32/cryptnet/cryptnet.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/cryptnet/cryptnet... ============================================================================== --- trunk/reactos/dll/win32/cryptnet/cryptnet.rbuild (original) +++ trunk/reactos/dll/win32/cryptnet/cryptnet.rbuild Mon Jan 14 15:51:35 2008 @@ -1,5 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> <module name="cryptnet" type="win32dll" baseaddress="${BASEADDRESS_CRYPTNET}" installbase="system32" installname="cryptnet.dll" allowwarnings="true"> <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> <importlibrary definition="cryptnet.spec.def" /> @@ -16,3 +17,4 @@ <file>cryptnet_main.c</file> <file>cryptnet.spec</file> </module> +</group>
Modified: trunk/reactos/dll/win32/cryptnet/cryptnet_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/cryptnet/cryptnet... ============================================================================== --- trunk/reactos/dll/win32/cryptnet/cryptnet_main.c (original) +++ trunk/reactos/dll/win32/cryptnet/cryptnet_main.c Mon Jan 14 15:51:35 2008 @@ -476,18 +476,16 @@
memset(components, 0, sizeof(*components)); components->dwStructSize = sizeof(*components); - components->dwHostNameLength = 1; - components->dwUrlPathLength = 1; + components->lpszHostName = CryptMemAlloc(MAX_PATH * sizeof(WCHAR)); + components->dwHostNameLength = MAX_PATH; + components->lpszUrlPath = CryptMemAlloc(MAX_PATH * 2 * sizeof(WCHAR)); + components->dwUrlPathLength = 2 * MAX_PATH; ret = InternetCrackUrlW(pszURL, 0, ICU_DECODE, components); if (ret) { - LPWSTR hostname = strndupW(components->lpszHostName, - components->dwHostNameLength); - LPWSTR path = strndupW(components->lpszUrlPath, - components->dwUrlPathLength); - - components->lpszHostName = hostname; - components->lpszUrlPath = path; + if ((components->dwUrlPathLength == 2 * MAX_PATH - 1) || + (components->dwHostNameLength == MAX_PATH - 1)) + FIXME("Buffers are too small\n"); switch (components->nScheme) { case INTERNET_SCHEME_FTP: @@ -873,11 +871,15 @@ *ppfnFreeObject = CRYPT_FreeBlob; *ppvFreeContext = NULL;
- components.dwUrlPathLength = 1; + components.lpszUrlPath = CryptMemAlloc(MAX_PATH * 2 * sizeof(WCHAR)); + components.dwUrlPathLength = 2 * MAX_PATH; ret = InternetCrackUrlW(pszURL, 0, ICU_DECODE, &components); if (ret) { LPWSTR path; + + if (components.dwUrlPathLength == 2 * MAX_PATH - 1) + FIXME("Buffers are too small\n");
/* 3 == lstrlenW(L"c:") + 1 */ path = CryptMemAlloc((components.dwUrlPathLength + 3) * sizeof(WCHAR)); @@ -932,6 +934,7 @@ CryptMemFree(path); } } + CryptMemFree(components.lpszUrlPath); return ret; }
@@ -952,7 +955,7 @@ *pFunc = NULL; *phFunc = 0; components.dwSchemeLength = 1; - ret = InternetCrackUrlW(pszURL, 0, ICU_DECODE, &components); + ret = InternetCrackUrlW(pszURL, 0, 0, &components); if (ret) { /* Microsoft always uses CryptInitOIDFunctionSet/ @@ -1136,7 +1139,7 @@ ret = CryptQueryObject(CERT_QUERY_OBJECT_BLOB, &pObject->rgBlob[0], CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED, CERT_QUERY_FORMAT_FLAG_BINARY, - 0, NULL, NULL, NULL, (HCERTSTORE *)ppvContext, NULL, NULL); + 0, NULL, NULL, NULL, ppvContext, NULL, NULL); else { FIXME("multiple messages unimplemented\n");