C++: Add examples that need taint inheriting content.

This commit is contained in:
Mathias Vorreiter Pedersen
2026-03-31 11:06:38 +01:00
parent 21ea7ebe40
commit c6d1ec5f64
2 changed files with 29 additions and 3 deletions

View File

@@ -32,6 +32,6 @@
| windows.cpp:669:70:669:79 | WinHttpQueryHeadersEx output argument | remote |
| windows.cpp:669:82:669:87 | WinHttpQueryHeadersEx output argument | remote |
| windows.cpp:669:105:669:112 | WinHttpQueryHeadersEx output argument | remote |
| windows.cpp:873:64:873:77 | HttpReceiveHttpRequest output argument | remote |
| windows.cpp:881:70:881:75 | HttpReceiveRequestEntityBody output argument | remote |
| windows.cpp:888:70:888:78 | HttpReceiveClientCertificate output argument | remote |
| windows.cpp:897:64:897:77 | HttpReceiveHttpRequest output argument | remote |
| windows.cpp:926:70:926:75 | HttpReceiveRequestEntityBody output argument | remote |
| windows.cpp:933:70:933:78 | HttpReceiveClientCertificate output argument | remote |

View File

@@ -887,6 +887,9 @@ ULONG HttpReceiveClientCertificate(
LPOVERLAPPED Overlapped
);
void sink(PCWSTR);
void sink(HANDLE);
void test_http_server_api(HANDLE hRequestQueue) {
{
HTTP_REQUEST requestBuffer;
@@ -895,6 +898,27 @@ void test_http_server_api(HANDLE hRequestQueue) {
char* p = reinterpret_cast<char*>(&requestBuffer);
sink(p);
sink(*p); // $ ir
sink(requestBuffer.pRawUrl);
sink(*requestBuffer.pRawUrl); // $ MISSING: ir
sink(requestBuffer.CookedUrl.pFullUrl);
sink(*requestBuffer.CookedUrl.pFullUrl); // $ MISSING: ir
sink(requestBuffer.Headers.KnownHeaders[0].pRawValue);
sink(*requestBuffer.Headers.KnownHeaders[0].pRawValue); // $ MISSING: ir
sink(requestBuffer.Headers.pUnknownHeaders[0].pRawValue);
sink(*requestBuffer.Headers.pUnknownHeaders[0].pRawValue); // $ MISSING: ir
sink(requestBuffer.pEntityChunks->FromFileHandle.FileHandle); // $ MISSING: ir
sink(requestBuffer.pEntityChunks->FromFragmentCache.pFragmentName);
sink(*requestBuffer.pEntityChunks->FromFragmentCache.pFragmentName); // $ MISSING: ir
sink(requestBuffer.pEntityChunks->FromFragmentCacheEx.pFragmentName);
sink(*requestBuffer.pEntityChunks->FromFragmentCacheEx.pFragmentName); // $ MISSING: ir
sink(requestBuffer.pEntityChunks->FromMemory.pBuffer);
sink(*(char*)requestBuffer.pEntityChunks->FromMemory.pBuffer); // $ MISSING: ir
sink(requestBuffer.pSslInfo->pServerCertIssuer);
sink(*requestBuffer.pSslInfo->pServerCertIssuer); // $ MISSING: ir
sink(requestBuffer.pSslInfo->pServerCertSubject);
sink(*requestBuffer.pSslInfo->pServerCertSubject); // $ MISSING: ir
sink(requestBuffer.pSslInfo->pClientCertInfo->pCertEncoded);
sink(*requestBuffer.pSslInfo->pClientCertInfo->pCertEncoded); // $ MISSING: ir
}
{
char buffer[1024];
@@ -910,5 +934,7 @@ void test_http_server_api(HANDLE hRequestQueue) {
char* p = reinterpret_cast<char*>(&certInfo);
sink(p);
sink(*p); // $ ir
sink(certInfo.pCertEncoded);
sink(*certInfo.pCertEncoded); // $ MISSING: ir
}
}