From patchwork Thu Jul 25 14:25:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 33796 Received: (qmail 90231 invoked by alias); 25 Jul 2019 14:25:58 -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 90222 invoked by uid 89); 25 Jul 2019 14:25:58 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=1867 X-HELO: mail-qk1-f194.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id; bh=3ROUO9mMtVPgBIzFRR3U9NMdNPaA4JZaGyKTe6Dsg7M=; b=u/HwgfFecdhnubWH0/v8b/TxBkacoYzQm0zhGhh8T2kGw4pdsT0uK61CtyKbw9mIKl gYjVzi3GhKQIznK85s1AS9RDtTUjo3tLMQ2oD2yCHcifxbS0IxHLfKLa3km/hGFoLkYN Ib3uGqG8sbSUzW13yc5lwF25wWysTWO6sCbNzsjMgD/s4A1aq+CqhSwFnOY6Xcq4ec7W S7oRkdU9RmdP2SA0J7NvR/FJwYDqenzfulilnO8XLA2MDBkeLtTg8mQgj9D/W5qcRnNU 7QR6cGQ6T3adv6btbEpXVxIwNnBFDa+CLScMNmMH7VfGL3tzY6T6vqhbiaP2itgHMACO 8ZYA== Return-Path: From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH] Get new entropy on each attempt __gen_tempname (BZ #15813) Date: Thu, 25 Jul 2019 11:25:50 -0300 Message-Id: <20190725142550.18479-1-adhemerval.zanella@linaro.org> This is missing bit for fully fix BZ#15813 (the other two were fixed by 359653aaacad463). Checked on x86_64-linux-gnu. [BZ #15813] sysdeps/posix/tempname.c (__gen_tempname): get entrypy on each attempt. --- sysdeps/posix/tempname.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c index de346949b2..e930211703 100644 --- a/sysdeps/posix/tempname.c +++ b/sysdeps/posix/tempname.c @@ -186,7 +186,6 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind) { int len; char *XXXXXX; - uint64_t value; unsigned int count; int fd = -1; int save_errno = errno; @@ -218,13 +217,13 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind) /* This is where the Xs start. */ XXXXXX = &tmpl[len - 6 - suffixlen]; - /* Get some more or less random data. */ - RANDOM_BITS (value); - value ^= (uint64_t)__getpid () << 32; - - for (count = 0; count < attempts; value += 7777, ++count) + uint64_t pid = (uint64_t)__getpid () << 32; + for (count = 0; count < attempts; ++count) { - uint64_t v = value; + uint64_t v; + /* Get some more or less random data. */ + RANDOM_BITS (v); + v ^= pid; /* Fill in the random bits. */ XXXXXX[0] = letters[v % 62];