]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:smb2_server: protect against integer wrap with "smb2 max credits = 65535"
authorStefan Metzmacher <metze@samba.org>
Thu, 29 Jan 2015 09:12:30 +0000 (10:12 +0100)
committerStefan Metzmacher <metze@samba.org>
Sun, 1 Feb 2015 11:39:51 +0000 (12:39 +0100)
Bug: https://bugzilla.samba.org/show_bug.cgi?id=9702

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Thu Jan 29 14:58:40 CET 2015 on sn-devel-104

(cherry picked from commit 8aed0fc38ae28cce7fd1a443844a865265fc719c)

Autobuild-User(v4-2-test): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(v4-2-test): Sun Feb  1 12:39:51 CET 2015 on sn-devel-104

source3/smbd/smb2_server.c

index d131ff51972d2fd98f6de9809f7743bd96126db6..ea2ce7f3645d16a8f52b7f9e0498122b7d46762f 100644 (file)
@@ -822,6 +822,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;
 
@@ -847,6 +849,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;