summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/smb2_server.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c
index a740b40771..25d11b1eb1 100644
--- a/source3/smbd/smb2_server.c
+++ b/source3/smbd/smb2_server.c
@@ -823,6 +823,8 @@ static void smb2_set_operation_credit(struct smbXsrv_connection *xconn,
*/
credits_granted = 0;
} else {
+ uint16_t additional_possible =
+ xconn->smb2.credits.max - credit_charge;
uint16_t additional_max = 0;
uint16_t additional_credits = credits_requested - 1;
@@ -848,6 +850,7 @@ static void smb2_set_operation_credit(struct smbXsrv_connection *xconn,
break;
}
+ additional_max = MIN(additional_max, additional_possible);
additional_credits = MIN(additional_credits, additional_max);
credits_granted = credit_charge + additional_credits;