diff options
-rw-r--r-- | source3/smbd/smb2_server.c | 3 |
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; |