From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id c9be6832 for ; Wed, 5 Feb 2020 14:20:23 +0000 (UTC) Received: (qmail 15915 invoked by alias); 5 Feb 2020 14:20:15 -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: List-Unsubscribe: X-Seq: 45382 Received: (qmail 15576 invoked by uid 1010); 5 Feb 2020 14:20:15 -0000 X-Qmail-Scanner-Diagnostics: from mail-il1-f180.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.1/25713. spamassassin: 3.4.2. Clear:RC:0(209.85.166.180):SA:0(-2.0/5.0):. Processed in 4.65911 secs); 05 Feb 2020 14:20:15 -0000 X-Envelope-From: roman.perepelitsa@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.166.180 as permitted sender) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=jorgnFcYsOJzSCq3a6Wbh/UxoykBl46mABVAIAEXWjQ=; b=kORYIy+9D1/tLQluk+kxPHhiFSHK7qEa1OMfAPzFdVGk4m6VbJp6/eMe4xoE/fpBLm yhL6PmzyfZjWJwY9/sklkvS0Le2yqSKfC1xRyzdtpKEGQDPXoMJo8eCCSG6bOZu4gRS8 y/0bUiErXOIH2WXbRz4rRbM0ykZnKa0EGnaTRSyJi4QdqihvzrxwYdc2LydxIn68aaz4 noZ2VEj6rvNmmBzlLSCM8CQ+1y/ekZ5Fr3i9QJdfvl4ub5qYjq9BUGt7rxxOpdtbbHpF r3jMLHm3Fqg9xb/EcOgpGKspYoKD4WdQPfNY632Emm7tChC1OKbBK0mx7Yl4RYne955y tXVQ== X-Gm-Message-State: APjAAAUigdr2NAtAdg1pK5cOrPwpsFDTmBvU5+NbpYFbzdkhsOGi/K5l kjTPlfnbrIIYBZE7SPjiSwrA408HRhQH4BAl31sfHPobU4U= X-Google-Smtp-Source: APXvYqxEhfjogI+6GVycxI6FPAJ/OFjLrnwWfXQ7drkgLK1H+0s+aOlbMpLR0yAFU7Pia9535jPTkxJkpl2ARxhGLwI= X-Received: by 2002:a92:c986:: with SMTP id y6mr25609646iln.186.1580912377323; Wed, 05 Feb 2020 06:19:37 -0800 (PST) MIME-Version: 1.0 From: Roman Perepelitsa Date: Wed, 5 Feb 2020 15:19:26 +0100 Message-ID: Subject: PATCH: bug fix: infinite loop in sysread To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000ac1b92059dd4d8a1" --000000000000ac1b92059dd4d8a1 Content-Type: text/plain; charset="UTF-8" The attached patch fixes a bug in sysread from zsh/system. The bug triggers in the following case: 1. zsh has been compiled with HAVE_SELECT and without HAVE_POLL 2. sysread is called with timeout (-t) 3. the input file descriptor is valid but there is no data to read 4. errno happens to be EINTR prior to the call to sysread This results in an infinite loop in sysread: while ((ret = select(infd+1, (SELECT_ARG_2_T) &fds, NULL, NULL,&select_tv)) < 1) { if (errno != EINTR || errflag || retflag || breaks || contflag) break; } Here select() keeps returning 0, indicating timeout. This is not an error, so errno doesn't get set. If it was EINTR prior to the call, it stays EINTR, and the loop keeps spinning. The fix is to replace `< 1` with `< 0` in the loop condition. On GitHub: https://github.com/zsh-users/zsh/compare/master...romkatv:fix-sysread-tmout Roman. --000000000000ac1b92059dd4d8a1 Content-Type: text/plain; charset="US-ASCII"; name="fix-sysread-tmout.patch.txt" Content-Disposition: attachment; filename="fix-sysread-tmout.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k69ecjml0 ZGlmZiAtLWdpdCBhL1NyYy9Nb2R1bGVzL3N5c3RlbS5jIGIvU3JjL01vZHVsZXMvc3lzdGVtLmMK aW5kZXggNTBkZTU5Y2Y5Li5mYjNkODA3NzMgMTAwNjQ0Ci0tLSBhL1NyYy9Nb2R1bGVzL3N5c3Rl bS5jCisrKyBiL1NyYy9Nb2R1bGVzL3N5c3RlbS5jCkBAIC0xNzQsNyArMTc0LDcgQEAgYmluX3N5 c3JlYWQoY2hhciAqbmFtLCBjaGFyICoqYXJncywgT3B0aW9ucyBvcHMsIFVOVVNFRChpbnQgZnVu YykpCiAJfQogCiAJd2hpbGUgKChyZXQgPSBzZWxlY3QoaW5mZCsxLCAoU0VMRUNUX0FSR18yX1Qp ICZmZHMsCi0JCQkgICAgIE5VTEwsIE5VTEwsJnNlbGVjdF90dikpIDwgMSkgeworCQkJICAgICBO VUxMLCBOVUxMLCZzZWxlY3RfdHYpKSA8IDApIHsKIAkgICAgaWYgKGVycm5vICE9IEVJTlRSIHx8 IGVycmZsYWcgfHwgcmV0ZmxhZyB8fCBicmVha3MgfHwgY29udGZsYWcpCiAJCWJyZWFrOwogCX0K --000000000000ac1b92059dd4d8a1--