From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5941 invoked by alias); 29 Sep 2017 15:18:28 -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: 41789 Received: (qmail 8037 invoked by uid 1010); 29 Sep 2017 15:18:28 -0000 X-Qmail-Scanner-Diagnostics: from mailout2.w1.samsung.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(210.118.77.12):SA:0(-6.9/5.0):. Processed in 2.477524 secs); 29 Sep 2017 15:18:28 -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=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | X-AuditID: cbfec7ef-f79ee6d000003120-91-59ce643aff9e Date: Fri, 29 Sep 2017 16:18:15 +0100 From: Peter Stephenson To: Daniel Shahaf , Zsh hackers list Subject: Re: fd used for saving redirected fds leaked to child processes Message-id: <20170929161815.5b2fc24d@pwslap01u.europe.root.pri> In-reply-to: <1506697584.2841623.1122584064.35F87888@webmail.messagingengine.com> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGIsWRmVeSWpSXmKPExsWy7djPc7pWKeciDbp36Vg8mLaO1eJg80Mm ByaPw/NWM3usOviBKYApissmJTUnsyy1SN8ugSvj7+21TAX7uSrmTJ/I0sB4lr2LkZNDQsBE onXRG1YIW0ziwr31bF2MXBxCAssYJRadPs0I4XxmlJi++gpQhgOs49a7MLiirfNfMIJ0Cwn8 Y5R4+IcVwj7DKPF1oi1E0VlGiasTlrOBJFgEVCV+vL4C1sAmYCgxddNsMFtEIERi0dn1zCC2 sICHxMvTW8AG8QrYS9xfvRushlMgWKLx/Q2wOfwC+hJX/35igjjbXmLmlTOMEPWCEj8m32MB sZkFdCS2bXvMDmHLS2xe85YZ5CAJgTVsEndWfGeBaHaRWLJxJpQtLPHq+BZouMhIXJ7cDRXv Z5R40u0L0TyDUeL0mR1sEAlrib7bFxkhNvBJTNo2nRkSRLwSHW1CECUeEkv+/mKBCDtK3HiX BAmUx8wSd2bcYprAqDALyd2zkNw9C8ndCxiZVzGKpJYW56anFhvqFSfmFpfmpesl5+duYgSm htP/jr/fwfi0OeQQowAHoxIPb4PHuUgh1sSy4srcQ4wSHMxKIryCcUAh3pTEyqrUovz4otKc 1OJDjNIcLErivLZRbZFCAumJJanZqakFqUUwWSYOTqkGxrDrp98usqq1fXlvWXZ74a0PkxVy H5z9LCM6reO9fvKX/Xvs9rzKWtH49NK8vf+a8t9oXKqvnTf9xLyjRy5PFmB4UvNre4bJ48/m kmW79jf15zD7z80LCuZuiHL7miZyfYHzp0LH317XQ2s+q+03rjWz+lOxoZHrqZvN5i3OXFbn GXdlM861r1ZiKc5INNRiLipOBABtknL3CQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrBLMWRmVeSWpSXmKPExsVy+t/xy7pWKeciDZrMLB5MW8dqcbD5IZMD k8fheauZPVYd/MAUwBTFZZOSmpNZllqkb5fAlfH39lqmgv1cFXOmT2RpYDzL3sXIwSEhYCJx 611YFyMnkCkmceHeerYuRi4OIYEljBJzz3SzQzgNTBK/z1xggnDOMUpsnzEbquwso0Tj+4ls IP0sAqoSP15fYQSx2QQMJaZumg1miwiESLT8OM0KYgsLeEi8PL0FzOYVsJe4v3o3WA2nQLDE 0vsLWUBsIYHHzBLfvgiA2PwC+hJX/35igrjPXmLmlTOMEL2CEj8m3wOrZxbQkti8rYkVwpaX 2LzmLTPEHHWJG3d3s09gFJ6FpGUWkpZZSFoWMDKvYhRJLS3OTc8tNtIrTswtLs1L10vOz93E CAzvbcd+btnB2PUu+BCjAAejEg9vg8e5SCHWxLLiytxDjBIczEoivIJxQCHelMTKqtSi/Pii 0pzU4kOM0hwsSuK8vXtWRwoJpCeWpGanphakFsFkmTg4pRoYPY/3Nt/03HD5XaJ44d6UT9x9 vhnfdou/8vZy+mb2MeiExo3qH9pO/Wafb6res18v8/7Q/FLW0sxZPmcjp2wSFS7S7DZ8z7xw d617UKc784rXu/ec9Q1J559vfCzYbOI68y3b9t2o7rz4V3vbgo3LpuYuL53xd6tN5o2Fl+LW zZabt3f5bX8TdSWW4oxEQy3mouJEAOkyk25rAgAA X-CMS-MailID: 20170929151818eucas1p12ef8b061b1e824f527b4b70240235ce5 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-CMS-RootMailID: 20170813214600epcas4p4764cb5399e27ff0e52a1936ecdf49346 X-RootMTR: 20170813214600epcas4p4764cb5399e27ff0e52a1936ecdf49346 References: <20170813161207.GA6530@chaz.gmail.com> <20170813194939.7a96bc4b@ntlworld.com> <20170814100956.363c7ea8@pwslap01u.europe.root.pri> <20170814201939.22ba0dcb@ntlworld.com> <1506697584.2841623.1122584064.35F87888@webmail.messagingengine.com> On Fri, 29 Sep 2017 15:06:24 +0000 Daniel Shahaf wrote: > % Src/zsh -fc ': 3>&1' > 1: Src/exec.c:2330: Saved file descriptor not marked as internal That happens if the file descriptor was already closed, in which case the new code is inapplicable, so this would access off the start of the array. pws diff --git a/Src/exec.c b/Src/exec.c index 0d2dc4e..f2e187a 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -2325,16 +2325,19 @@ addfd(int forked, int *save, struct multio **mfds, int fd1, int fd2, int rflag, * fd1 may already be closed here, so * ignore bad file descriptor error */ - if (fdN < 0 && errno != EBADF) { - zerr("cannot duplicate fd %d: %e", fd1, errno); - mfds[fd1] = NULL; - closemnodes(mfds); - return; + if (fdN < 0) { + if (errno != EBADF) { + zerr("cannot duplicate fd %d: %e", fd1, errno); + mfds[fd1] = NULL; + closemnodes(mfds); + return; + } + } else { + DPUTS(fdtable[fdN] != FDT_INTERNAL, + "Saved file descriptor not marked as internal"); + fdtable[fdN] |= FDT_SAVED_MASK; } save[fd1] = fdN; - DPUTS(fdtable[fdN] != FDT_INTERNAL, - "Saved file descriptor not marked as internal"); - fdtable[fdN] |= FDT_SAVED_MASK; } } }