From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7724 invoked by alias); 30 Mar 2017 11:25:41 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 40916 Received: (qmail 7538 invoked from network); 30 Mar 2017 11:25:41 -0000 X-Qmail-Scanner-Diagnostics: from mail-wr0-f174.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.128.174):SA:0(-2.3/5.0):. Processed in 2.686824 secs); 30 Mar 2017 11:25:41 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_SPAM,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: tharvik@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.128.174 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mime-version:content-disposition :content-transfer-encoding:user-agent; bh=UgcC0o6wwnwX+NmhlEPF+7wrAaRv5XkGCFtnZVgKmnc=; b=PTDxSYk5T8e27PpUDJY72Dg2Y9GFw8dl9s96d3LFfPzQVH2PECU1xr4TbRsktdKd+Q 87BIS7Qou57Q36TCBsuweINklYVz3g/+gqXJvCQe0IdWXP0ET+BB7MUDoinUS297dTMP kkP5SVcdVBRswJXcqWieSbPjSd+jwoWqgYL7IZQhg36oVx6q9VjtsDozGBKd53Y4LJmM I5PwrcxyEd5ekCyAQwnlEL4xIQDN1LCvajQs16oUNK4m87pU7lXdxCjQTsPE0oMdA1dC AvcyG0R6eqYf+hJxnMYUpGbGNojoiOsU9U3LlmTUzaStQ9+9ZZmozUS5Xp54Vr18a6WO biig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:content-transfer-encoding:user-agent; bh=UgcC0o6wwnwX+NmhlEPF+7wrAaRv5XkGCFtnZVgKmnc=; b=adxWWbET38eFFhrfbmmP36/HLV9lgPPiYsj75RQ57/5QMcIZe966ZOHwS4ZViuBS4C tMM4dxySYoTeOVnpThA/ubnw1kKrYMhCvhPhkSNGYsUmAPvQ1EmOwdVSUUQvI3eBn2Nv /JGpFSctSm4zeY6pxBkAP1Wk+jROjrx09mIdNcFidB4PoVSeMPtkTKlpTCQFwvBmmlQ8 WpDIb4FFPx7geACiXJgvL6aJGted6RYYEm3zknhpSSp9jfFfQWY3/Nmgn5jTlKfOwxnr PECn/vKtaDY5OJe6upF7zy+45+Jg7sgiWxSauy6E62b0D+X5sB1Vmp62YLLAi4lbDJ49 qbNw== X-Gm-Message-State: AFeK/H3LLCMKnpXtH85M5gT4dBTrsiFqj7QTMpnRlADPIB+6qsodFqdAdPgVvmG3XIWVAg== X-Received: by 10.223.161.132 with SMTP id u4mr4993528wru.203.1490873131794; Thu, 30 Mar 2017 04:25:31 -0700 (PDT) Date: Thu, 30 Mar 2017 13:25:23 +0200 From: tharvik@gmail.com To: zsh-workers@zsh.org Subject: $RANDOM in function in pipe do not get reseeded Message-ID: <20170330112523.GA28110@t420s.epfl.ch> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="mYCpIKhGyMATD0i+" Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.24 (2015-08-30) --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit Hello, There is some strange behavior with $RANDOM, because you don't seed after forking. For a testcase, here you go -- Define a function echoing the value of $RANDOM ``` get_random() { echo "${RANDOM}" } ``` Run it trough a pipe ``` get_random | cat ``` If you run it multiple times, the output is the same. -- There is the patch linked, which fixes it. Have a nice day! -- Valérian Rousset --mYCpIKhGyMATD0i+ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0001-reseed-srand-when-forking.patch" >>From 9d9430cb430dd5a7ceaf498fbdfe197c0964e5eb Mon Sep 17 00:00:00 2001 From: tharvik Date: Thu, 30 Mar 2017 11:55:58 +0200 Subject: [PATCH] reseed srand when forking --- Src/exec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Src/exec.c b/Src/exec.c index 137130e..7f77252 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -312,9 +312,11 @@ zfork(struct timeval *tv) return -1; } #ifdef HAVE_GETRLIMIT - if (!pid) + if (!pid) { /* set resource limits for the child process */ setlimits(NULL); + srand((unsigned int)(tv->tv_sec + tv->tv_usec)); /* newly seed RANDOM in child */ + } #endif return pid; } -- 2.10.2 --mYCpIKhGyMATD0i+--