Zebediah Figura : http.sys: Fill out unknown verbs.
Module: wine Branch: master Commit: ebca23da5ea378492b4fd07f1e556dae58df9c13 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ebca23da5ea378492b4fd07f1... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Fri Aug 23 17:36:19 2019 -0500 http.sys: Fill out unknown verbs. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/http.sys/http.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/dlls/http.sys/http.c b/dlls/http.sys/http.c index a41b464..7690867 100644 --- a/dlls/http.sys/http.c +++ b/dlls/http.sys/http.c @@ -277,6 +277,9 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) /* First calculate the total buffer size needed for this IRP. */ + if (conn->unk_verb_len) + irp_size += conn->unk_verb_len + 1; + TRACE("Need %u bytes, have %u.\n", irp_size, output_len); irp->IoStatus.Information = irp_size; @@ -300,6 +303,7 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) if (params.bits == 32) { struct http_request_32 *req = irp->AssociatedIrp.SystemBuffer; + char *buffer = irp->AssociatedIrp.SystemBuffer; offset = sizeof(*req); @@ -307,11 +311,22 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) req->UrlContext = conn->queue->context; req->Version = conn->version; req->Verb = conn->verb; + req->UnknownVerbLength = conn->unk_verb_len; + + if (conn->unk_verb_len) + { + req->pUnknownVerb = params.addr + offset; + memcpy(buffer + offset, conn->buffer, conn->unk_verb_len); + offset += conn->unk_verb_len; + buffer[offset++] = 0; + } + req->BytesReceived = conn->req_len; } else { struct http_request_64 *req = irp->AssociatedIrp.SystemBuffer; + char *buffer = irp->AssociatedIrp.SystemBuffer; offset = sizeof(*req); @@ -319,6 +334,16 @@ static NTSTATUS complete_irp(struct connection *conn, IRP *irp) req->UrlContext = conn->queue->context; req->Version = conn->version; req->Verb = conn->verb; + req->UnknownVerbLength = conn->unk_verb_len; + + if (conn->unk_verb_len) + { + req->pUnknownVerb = params.addr + offset; + memcpy(buffer + offset, conn->buffer, conn->unk_verb_len); + offset += conn->unk_verb_len; + buffer[offset++] = 0; + } + req->BytesReceived = conn->req_len; }
participants (1)
-
Alexandre Julliard