The Samba-Bugzilla – Attachment 7108 Details for
Bug 8614
SMB2: not granting credits for all requests in a compound request
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Jeremy's patch from master
0001-Ensure-we-correctly-calculate-reply-credits-over-all.patch (text/plain), 2.00 KB, created by
Christian Ambach
on 2011-11-16 13:53:11 UTC
(
hide
)
Description:
Jeremy's patch from master
Filename:
MIME Type:
Creator:
Christian Ambach
Created:
2011-11-16 13:53:11 UTC
Size:
2.00 KB
patch
obsolete
>From 4fff48e0ab1c37976134d6149967b5fd8d359792 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Tue, 15 Nov 2011 11:27:56 -0800 >Subject: [PATCH] Ensure we correctly calculate reply credits over all > returned SMB2 replies, and do as Windows does and return > the total in the last SMB2 reply. Fixes an issue found by > Christian M Ambach <christian.ambach@de.ibm.com> (and > thanks to Christian for the initial patch this was based > on). (cherry picked from commit > 65566dfa8629136eaf0dc1491502dc651d1a4858) > >--- > source3/smbd/smb2_server.c | 17 +++++++++++++---- > 1 files changed, 13 insertions(+), 4 deletions(-) > >diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c >index 0e70983..8a5d81f 100644 >--- a/source3/smbd/smb2_server.c >+++ b/source3/smbd/smb2_server.c >@@ -514,13 +514,24 @@ static void smb2_calculate_credits(const struct smbd_smb2_request *inreq, > struct smbd_smb2_request *outreq) > { > int count, idx; >+ uint16_t total_credits = 0; > > count = outreq->out.vector_count; > > for (idx=1; idx < count; idx += 3) { >+ uint8_t *outhdr = (uint8_t *)outreq->out.vector[idx].iov_base; > smb2_set_operation_credit(outreq->sconn, > &inreq->in.vector[idx], > &outreq->out.vector[idx]); >+ /* To match Windows, count up what we >+ just granted. */ >+ total_credits += SVAL(outhdr, SMB2_HDR_CREDIT); >+ /* Set to zero in all but the last reply. */ >+ if (idx + 3 < count) { >+ SSVAL(outhdr, SMB2_HDR_CREDIT, 0); >+ } else { >+ SSVAL(outhdr, SMB2_HDR_CREDIT, total_credits); >+ } > } > } > >@@ -1739,11 +1750,9 @@ static NTSTATUS smbd_smb2_request_reply(struct smbd_smb2_request *req) > > smb2_setup_nbt_length(req->out.vector, req->out.vector_count); > >- /* Set credit for this operation (zero credits if this >+ /* Set credit for these operations (zero credits if this > is a final reply for an async operation). */ >- smb2_set_operation_credit(req->sconn, >- &req->in.vector[i], >- &req->out.vector[i]); >+ smb2_calculate_credits(req, req); > > if (req->do_signing) { > NTSTATUS status; >-- >1.7.4.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
metze
:
review+
Actions:
View
Attachments on
bug 8614
: 7108