Repository navigation
Conversation
…tor type An unexpected HTTP status became STATUS_INVALID_PARAMETER unless it was 404. A 403 (host permissions, or a path the server refuses as escaping its root) now surfaces as STATUS_ACCESS_DENIED, and a 416 (a read starting at or past the file's current end: the file shrank under a cached size) as STATUS_END_OF_FILE. Sandbox tests cover both. HttpDeserializeDirectoryInfo declared the subdirectory vector as FileEntryMetadata_vec_t; the schema's Directory.subdirectories is a SubdirectoryMetadata vector.
DriverEntry passes ai_addr, which lives in paged pool. Reading it under SocketPool.Lock touches pageable memory at DISPATCH_LEVEL: bugcheck 0xD1 at service start under Driver Verifier.
A connect completion arrives at DISPATCH_LEVEL, and the pump chained the next WskSocketConnect from there. With no owning process the transport captures the caller's security context in pageable code, so under Driver Verifier the second pre-warm connect bugchecked 0xA in SeCaptureSubjectContextEx. A completion above PASSIVE now hands the step to a work item, and the step stays in flight until it has run, so teardown still waits for it. The WSK model enforces the IRQL, so the sandbox catches a connect issued above PASSIVE.
Chuccle
force-pushed
the
driver-errors
branch
2 times, most recently
from
October 4, 2026 01:32
56f3489 to
6715dc7
Compare
A send can complete inline, and on the failure path its completion frees the request context before BlorgSendWskAsync returns. Writing SendIssuedQpc after the call wrote into freed memory: bugcheck 0x50 in HttpKick under Driver Verifier's special pool.
Chuccle
commented
Oct 4, 2026
| // both until neither has anything left. | ||
| // | ||
| while (WskModelReleaseDeferred() + ShimDrainWorkItems() > 0) | ||
| { |
A query after a failed fetch keeps its search pattern and so skipped the posts to the FSP, issuing the fetch from the FSD without the IRP marked pending. Also correct the receive comment, which described the opposite of the issue contract the code relies on.
…w DISPATCH_LEVEL on retry
Owner
Author
|
Replaced by #69, which has the same content squashed into one commit. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before: any unexpected HTTP status other than 404 became
STATUS_INVALID_PARAMETER. A file the server refuses (403) showed up as "The parameter is incorrect", and a read past the end of a file that shrank on the server (416) failed the same way.After: 403 becomes
STATUS_ACCESS_DENIEDand 416 becomesSTATUS_END_OF_FILE. 404 is unchanged.How: a small
HttpStatusToNtStatusswitch inClient.chandles these mappings, with two sandbox tests inClientTest.cppnext to the existing 404 test. This PR also fixesHttpDeserializeDirectoryInfo, which declared the subdirectory vector as aFileEntryMetadatavector; the schema'sDirectory.subdirectoriesis aSubdirectoryMetadatavector.This is the driver part of #65. The rest of #65 is either dropped or moves to the packaging PR.