From patchwork Thu Mar 16 05:26:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 19596 Received: (qmail 117085 invoked by alias); 16 Mar 2017 05:26:27 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 117070 invoked by uid 89); 16 Mar 2017 05:26:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=distance X-HELO: mail-pg0-f65.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=fmnmWy1Z6zxUa/RjpLSjl6b0hFkK0RBCtz8qX7+3Yxg=; b=NJP2FJYD8wh6he18/0HAUNVCPvUZ/paYcX2MkRBiwBberb+F3bxzr2bMiGabgI/1DO mqIpKdLyb3yxz/c8jQH3w/yP1v/ZYAMSRtX8ha8NFVZZysXc0d57slzrsBa8RhjnKmZl mTw7nnz9KkEMEdXypmW0stpY0+jRcmz9ta85mH8hw6ESvIi2r5RxOCuZTHxL7nkA4ilA wBWB8LgxLJE1UaU1N286obGq28MUgp8XQmGQgyZbzHr04ucr2NyzPyMoJfcH4wSr1Fyh r6E1Cfhr3Jufn0btNe8MgdFlM/SJt6/AteRasEkWeWHyPNfPTX0HIhOUa/VWETIEyYWA by5g== X-Gm-Message-State: AFeK/H28Y6OAlF0X24evCFnhygALHu/kwMIe5GHyWba5SWq4L53yWedgsJcqhmkTUb62jg== X-Received: by 10.99.113.11 with SMTP id m11mr7891183pgc.36.1489641984653; Wed, 15 Mar 2017 22:26:24 -0700 (PDT) From: Sergey Senozhatsky X-Google-Original-From: Sergey Senozhatsky To: "libc-alpha@sourceware.org" Cc: Sergey Senozhatsky , Sergey Senozhatsky Subject: [PATCH] stdlib-bsearch: middle element calculation may overflow Date: Thu, 16 Mar 2017 14:26:15 +0900 Message-Id: <20170316052615.7662-1-sergey.senozhatsky@gmail.com> Middle element calculation may overflow at '__l + __u' when __l and __u are large enough. Use distance between __u and __l instead. Signed-off-by: Sergey Senozhatsky --- bits/stdlib-bsearch.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bits/stdlib-bsearch.h b/bits/stdlib-bsearch.h index eb145381fd..5fd8a8b607 100644 --- a/bits/stdlib-bsearch.h +++ b/bits/stdlib-bsearch.h @@ -28,7 +28,7 @@ bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __u = __nmemb; while (__l < __u) { - __idx = (__l + __u) / 2; + __idx = __l + (__u - __l) / 2; __p = (void *) (((const char *) __base) + (__idx * __size)); __comparison = (*__compar) (__key, __p); if (__comparison < 0)