From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Tom Gillespie Newsgroups: gmane.emacs.bugs Subject: bug#56002: src/process.c; make-process fails to clean up stderr process on early exit Date: Wed, 29 Jun 2022 14:17:42 -0700 Message-ID: References: <83pmj9qjgk.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ac7b6b05e29cafa9" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35404"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 56002@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jun 29 23:19:11 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o6f5b-0008xY-1I for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 29 Jun 2022 23:19:11 +0200 Original-Received: from localhost ([::1]:34602 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o6f5Z-0001tV-Gi for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 29 Jun 2022 17:19:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59534) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o6f5S-0001tL-6V for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2022 17:19:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:38227) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o6f5R-0007SU-Tm for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2022 17:19:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o6f5R-0005xD-OD for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2022 17:19:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Tom Gillespie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 29 Jun 2022 21:19:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 56002 X-GNU-PR-Package: emacs Original-Received: via spool by 56002-submit@debbugs.gnu.org id=B56002.165653748322809 (code B ref 56002); Wed, 29 Jun 2022 21:19:01 +0000 Original-Received: (at 56002) by debbugs.gnu.org; 29 Jun 2022 21:18:03 +0000 Original-Received: from localhost ([127.0.0.1]:60357 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o6f4U-0005vo-CT for submit@debbugs.gnu.org; Wed, 29 Jun 2022 17:18:02 -0400 Original-Received: from mail-io1-f47.google.com ([209.85.166.47]:38877) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o6f4R-0005vH-AP for 56002@debbugs.gnu.org; Wed, 29 Jun 2022 17:18:01 -0400 Original-Received: by mail-io1-f47.google.com with SMTP id k15so17282834iok.5 for <56002@debbugs.gnu.org>; Wed, 29 Jun 2022 14:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=H9P6OnouvejPPK+jXDx9t1rgGFLTLciQ/+xdGW1VtP0=; b=pzxjD3wMKRXxmcUx4AMIo1T1rUxhG8gzC5kQDrTw7O5cCxn0DkDAzmYaxbNxVICtOp IzvV/bDGaysDGvQ1J4p31nLVMVgMobTYH18Q+dIElngltDYb4omrFWUQADAONSCFC4NB 8JdZJoUCxcrRvwkl0+v9UaCTgLoOEAd9bhqCrwlcenmvdl0ODEFTom8aPKRrvejUoISh E8O3JEFJNCQpX/eJNATVv9s1r88qrFcUzC7EiKoU343WMCe6aMBmqqG+lcFtt72vdBZY SgMVsKf7vVgS17yIsIo2xgWrtjws6UtzsfaEMAAaTfmVoNb5Xzy61/jbFr6d2cyzvc7P Muqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=H9P6OnouvejPPK+jXDx9t1rgGFLTLciQ/+xdGW1VtP0=; b=okrtQdESCjkfniG7ecMqNFZDeDgw7dc0Ge7lw1xgttMpAt6TIOY/sxY7JxUj2Ejxf4 98GT19Gu3c/93LxNSCRAOEXlQl3Gulf9jNy+JLcArH/auQ6ou3JDv94HQNHVItkkxlig Zo14+DJktbKEO9ijPJlPG556RUB1FiXzUB80fRnAIYHC4Ey8e9fhJ1k50FELxJ0mszzB cf/ATSDePEvbo2MtmXy6XhMje7xgvP3yOilR8T89K3FkkqXuLZOGsIrtTqwozvh1Xjtd JVqHoIGu9BgFzKQZRZC3ljiiMTteeWYhtlch3EFtEvI4lOTbbJfVOHO+c/zj8huh6qK/ wuZQ== X-Gm-Message-State: AJIora/dklqZCYCVoEVCR4/92Wdsn+VYB7QSc0ncSvp4XD3B0lYzfbVH 6Uz+WdqHcKjqj3SaSk8MswFEja9tL2JKF9PBkYk4D50WzCk= X-Google-Smtp-Source: AGRyM1uquutjER+8ZVQwvEoK/wPhqAiY/ojKMNjUA+N9ZCmaGa/X9tVRO6pnGbQBzyqLW555ZOGosq5FGwUuqAQgDx8= X-Received: by 2002:a02:a08d:0:b0:33c:6a7d:87db with SMTP id g13-20020a02a08d000000b0033c6a7d87dbmr3138047jah.64.1656537473637; Wed, 29 Jun 2022 14:17:53 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:235673 Archived-At: --000000000000ac7b6b05e29cafa9 Content-Type: text/plain; charset="UTF-8" After digging deep into this I think I have a solution. It is attached as two patches, one that adds tests and one that updates Fmake_proc. For the record, there was not a missing unwind-protect. There are two changes to the implementation that are complementary. The first is to change the internal structure of Fmake_process so that stderrproc is created immediately before the call to create_process. This avoids the need to call remove_process on stderrproc in the event of any expected or unexpected exits prior to the call to create process. This resolves the issue as originally described. The second change is to decouple the query-on-exit behavior of stderrproc from that of proc by adding a new keyword argument :query-stderr which defaults to nil. The coupling of query-on-exit for proc and stderrproc in the currently implementation forces users to always add additional boilerplate specifically when they don't care about stderr, which is the opposite of what would want (forcing callers who don't care about something to handle it, rather than the other way around). In addition to the patches, I have a question about an inconsistency in the documentation, and a suggestion about how it might be resolved. I can open this as a new issue if that makes more sense. One thing I don't understand is the interaction between :command '(nil) and :stderr a-pipe-process. It seems that the behaviors described by their documentation should be mutually exclusive, but make-process creates a pty without complaining. I suggest that either an error be raised if :command '(nil) and :stderr a-pipe-process are provided at the same time, because in all other cases for :stderr there is a call to CHECK_STRING that will cause an error, and it is not clear why the pipe process variant should be exempt from this check since it does not appear that the stderr pipe process is ever hooked up to the pty. Any insights here would be appreciated. At the very least the documentation for :connection-type needs to be updated to correct the following, since it does not match the current implemented behavior > if a non-nil value is specified for the :stderr parameter ... the type will always be pipe As it stands I think I have preserved existing behavior with some slight code duplication that reflects the confusion about what should happens when a stderr process is provided and create_pty is called instead of create_process. --000000000000ac7b6b05e29cafa9 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-test-src-process-tests.el-test-make-process-stderr-q.patch" Content-Disposition: attachment; filename="0001-test-src-process-tests.el-test-make-process-stderr-q.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l503j6ix1 RnJvbSAyYjBkM2QyYWE4ODZhNDgyYmIwZTU1NDZlYzI3ZmVmNDdmOWQzNGIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gR2lsbGVzcGllIDx0Z2J1Z3NAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI5IEp1biAyMDIyIDEzOjI2OjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIHRl c3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWw6IHRlc3QgbWFrZS1wcm9jZXNzIHN0ZGVycgogcXVlcnkv Y2xlYW51cAoKKiB0ZXN0L3NyYy9wcm9jZXNzLXRlc3RzLmVsIChtYWtlLXByb2Nlc3MvcXVlcnkt c3RkZXJyKTogQWRkZWQgdG8KZW5zdXJlIDpxdWVyeS1zdGRlcnIgYmVoYXZlcyBhcyBleHBlY3Rl ZC4KCiogdGVzdC9zcmMvcHJvY2Vzcy10ZXN0cy5lbCAobWFrZS1wcm9jZXNzL2NsZWFudXAtc3Rk ZXJycHJvYyk6IEFkZGVkCnRvIGVuc3VyZSB0aGF0IG1ha2UtcHJvY2VzcyBjb3JyZWN0bHkgY2xl YW5zIHVwL25ldmVyIGNyZWF0ZXMKc3RkZXJycHJvYyBpbiB0aGUgZXZlbnQgb2YgYW4gZWFybHkg ZXhpdC9lcnJvci4KLS0tCiB0ZXN0L3NyYy9wcm9jZXNzLXRlc3RzLmVsIHwgNjUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNjUgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWwgYi90ZXN0L3Ny Yy9wcm9jZXNzLXRlc3RzLmVsCmluZGV4IDgyNGM2ZGExMTkuLjUwMTU5YWI0NmIgMTAwNjQ0Ci0t LSBhL3Rlc3Qvc3JjL3Byb2Nlc3MtdGVzdHMuZWwKKysrIGIvdGVzdC9zcmMvcHJvY2Vzcy10ZXN0 cy5lbApAQCAtMjMzLDYgKzIzMyw3MSBAQCBtYWtlLXByb2Nlc3Mvbm9xdWVyeS1zdGRlcnIKICAg ICAgICAgICAgICAgKHNob3VsZC1ub3QgKHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHByb2Nl c3MpKSkpCiAgICAgICAgIChraWxsLXByb2Nlc3MgcHJvY2VzcykpKSkpKQogCisoZXJ0LWRlZnRl c3QgbWFrZS1wcm9jZXNzL3F1ZXJ5LXN0ZGVyciAoKQorICAoc2tpcC11bmxlc3MgKGV4ZWN1dGFi bGUtZmluZCAiYmFzaCIpKQorICAobGV0ICgoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1 ZmZlciAiIHJjIHN0ZGVyciIpKSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCAo KHByb2Nlc3MKKyAgICAgICAgICAgICAgIChtYWtlLXByb2Nlc3MKKyAgICAgICAgICAgICAgICA6 bmFtZSAicHJvY2VzcyB0aGF0IG5ldmVyIGFjdHVhbGx5IHN0YXJ0cyIKKyAgICAgICAgICAgICAg ICA6c3RkZXJyIHN0ZGVyci1idWZmZXIKKyAgICAgICAgICAgICAgICA6Y29tbWFuZCAnKCJiYXNo IiAiLWMiICJlY2hvIHN0ZG91dDsgZWNobyBzdGRlcnIgMT4mMjsiKSkpKQorICAgICAgICAgICh3 aGlsZSAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IChnZXQtYnVmZmVyLXByb2Nlc3MgKHByb2Nlc3Mt YnVmZmVyIHByb2Nlc3MpKSkpKQorICAgICAgKGxldCAoKHN0ZGVycnByb2MgKGdldC1idWZmZXIt cHJvY2VzcyBzdGRlcnItYnVmZmVyKSkpCisgICAgICAgIChzaG91bGQgc3RkZXJycHJvYykKKyAg ICAgICAgKHNob3VsZC1ub3QgKHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHN0ZGVycnByb2Mp KSkKKyAgICAgIChzaG91bGQgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkKKyAg ICAgIChraWxsLWJ1ZmZlciBzdGRlcnItYnVmZmVyKSkKKyAgICAoc2hvdWxkLW5vdCAoYnVmZmVy LWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpCisKKyAgKGxldCAoKHN0ZGVyci1idWZmZXIgKGdlbmVy YXRlLW5ldy1idWZmZXIgIiByYyBzdGRlcnIiKSkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAg ICAgIChsZXQgKChwcm9jZXNzCisgICAgICAgICAgICAgICAobWFrZS1wcm9jZXNzCisgICAgICAg ICAgICAgICAgOm5hbWUgInByb2Nlc3MgdGhhdCBuZXZlciBhY3R1YWxseSBzdGFydHMiCisgICAg ICAgICAgICAgICAgOnN0ZGVyciBzdGRlcnItYnVmZmVyCisgICAgICAgICAgICAgICAgOnF1ZXJ5 LXN0ZGVyciB0CisgICAgICAgICAgICAgICAgOmNvbW1hbmQgJygiYmFzaCIgIi1jIiAiZWNobyBz dGRvdXQ7IGVjaG8gc3RkZXJyIDE+JjI7IikpKSkKKyAgICAgICAgICAod2hpbGUgKGFjY2VwdC1w cm9jZXNzLW91dHB1dCAoZ2V0LWJ1ZmZlci1wcm9jZXNzIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNz KSkpKSkKKyAgICAgIChsZXQgKChzdGRlcnJwcm9jIChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJy LWJ1ZmZlcikpKQorICAgICAgICAoc2hvdWxkIHN0ZGVycnByb2MpCisgICAgICAgIChzaG91bGQg KHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHN0ZGVycnByb2MpKSkKKyAgICAgICh3aGlsZSAo YWNjZXB0LXByb2Nlc3Mtb3V0cHV0IChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJyLWJ1ZmZlcikp KQorICAgICAgKHNob3VsZC1ub3QgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkK KyAgICAgIChraWxsLWJ1ZmZlciBzdGRlcnItYnVmZmVyKSkKKyAgICAoc2hvdWxkLW5vdCAoYnVm ZmVyLWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpKQorCisoZXJ0LWRlZnRlc3QgbWFrZS1wcm9jZXNz L2NsZWFudXAtc3RkZXJycHJvYyAoKQorICAiZW5zdXJlIHN0ZGVycnByb2MgaXMgY2xlYW5lZCB1 cC9uZXZlciBjcmVhdGVkIGlmIGBtYWtlLXByb2Nlc3MnIGZhaWxzIgorICAoc2hvdWxkLWVycm9y CisgICAobGV0ICgoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiIHJjIHN0ZGVy ciIpKSkKKyAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAobGV0ICgocHJvY2VzcworICAg ICAgICAgICAgICAgIChtYWtlLXByb2Nlc3MKKyAgICAgICAgICAgICAgICAgOm5hbWUgInByb2Nl c3MgdGhhdCBuZXZlciBhY3R1YWxseSBzdGFydHMiCisgICAgICAgICAgICAgICAgIDpzdGRlcnIg c3RkZXJyLWJ1ZmZlcgorICAgICAgICAgICAgICAgICA6cXVlcnktc3RkZXJyIHQKKyAgICAgICAg ICAgICAgICAgOmNvbW1hbmQgJygiaV9mYWlsX2JlZm9yZV90aGVyZV9jYW5fYmVfYV9yZXR1cm5f Y29kZSIpKSkpKQorICAgICAgIChzaG91bGQtbm90IChnZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJy LWJ1ZmZlcikpCisgICAgICAgKGtpbGwtYnVmZmVyIHN0ZGVyci1idWZmZXIpKQorICAgICAoc2hv dWxkLW5vdCAoYnVmZmVyLWxpdmUtcCBzdGRlcnItYnVmZmVyKSkpKQorCisgIChzaG91bGQtZXJy b3IKKyAgIChsZXQgKChzdGRlcnItYnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgcmMgc3Rk ZXJyIikpKQorICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgIChsZXQgKChwcm9jZXNzCisg ICAgICAgICAgICAgICAgKG1ha2UtcHJvY2VzcworICAgICAgICAgICAgICAgICA6bmFtZSAicHJv Y2VzcyB0aGF0IG5ldmVyIGFjdHVhbGx5IHN0YXJ0cyIKKyAgICAgICAgICAgICAgICAgOnN0ZGVy ciBzdGRlcnItYnVmZmVyCisgICAgICAgICAgICAgICAgIDpxdWVyeS1zdGRlcnIgdAorICAgICAg ICAgICAgICAgICA6Y29tbWFuZCAnKCJpX2ZhaWxfYmVmb3JlX3RoZXJlX2Nhbl9iZV9hX3JldHVy bl9jb2RlIikpKSkKKyAgICAgICAgICAgKG1lc3NhZ2UgInRoaXMgd2lsbCBuZXZlciBwcmludCBi ZWNhdXNlIHdlIG5ldmVyIGdldCBoZXJlIikKKyAgICAgICAgICAgKHdoaWxlIChhY2NlcHQtcHJv Y2Vzcy1vdXRwdXQgcHJvY2VzcykpKQorICAgICAgIChzaG91bGQtbm90IChnZXQtYnVmZmVyLXBy b2Nlc3Mgc3RkZXJyLWJ1ZmZlcikpCisgICAgICAgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRw dXQgKGdldC1idWZmZXItcHJvY2VzcyBzdGRlcnItYnVmZmVyKSkpCisgICAgICAgKGtpbGwtYnVm ZmVyIHN0ZGVyci1idWZmZXIpKQorICAgICAoc2hvdWxkLW5vdCAoYnVmZmVyLWxpdmUtcCBzdGRl cnItYnVmZmVyKSkpKSkKKwogOzsgUmV0dXJuIHQgaWYgT1VUUFVUIGNvdWxkIGhhdmUgYmVlbiBn ZW5lcmF0ZWQgYnkgbWVyZ2luZyB0aGUgSU5QVVRTIHNvbWVob3cuCiAoZGVmdW4gcHJvY2Vzcy10 ZXN0cy0tbWl4YWJsZSAob3V0cHV0ICZyZXN0IGlucHV0cykKICAgKHdoaWxlIChhbmQgb3V0cHV0 IChsZXQgKChpbnMgaW5wdXRzKSkKLS0gCjIuMzUuMQoK --000000000000ac7b6b05e29cafa9 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-make-process-stderrproc-cleanup-on-failure-decouple-.patch" Content-Disposition: attachment; filename="0002-make-process-stderrproc-cleanup-on-failure-decouple-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l503jb1j1 RnJvbSAwN2ExZmEzNGVkZjA2N2VhYmY3MjZiOWI0NGVmMDhiZjY3NzcxYzYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gR2lsbGVzcGllIDx0Z2J1Z3NAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI5IEp1biAyMDIyIDEzOjQ4OjA5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIG1h a2UtcHJvY2VzcyBzdGRlcnJwcm9jIGNsZWFudXAgb24gZmFpbHVyZSBkZWNvdXBsZQogc3RkZXJy IHF1ZXJ5CgoqIHNyYy9wcm9jZXNzLmMgKEZtYWtlX3Byb2Nlc3MpOiBNb3ZlIHRoZSBjYWxsIHRv IGNyZWF0ZSB0aGUgc3RkZXJyCnByb2Nlc3MgYXMgbGF0ZSBhcyBwb3NzaWJsZSB0byBhdm9pZCBo YXZpbmcgdG8gY2xlYW4gdXAgc3RkZXJycHJvYyBpbgp0aGUgZXZlbnQgb2YgYW4gZXJyb3IgcHJp b3IgdG8gdGhlIGNhbGwgdG8gY3JlYXRlX3Byb2Nlc3MuIFRoaXMgY2hhbmdlCmlzIG5lZWRlZCB0 byBlbnN1cmUgdGhhdCB3aGVuIGNhbGxlZCB3aXRoIDpxdWVyeS1zdGRlcnIgdCAoYWthIHRoZQpk ZWZhdWx0IGJlaGF2aW9yIHByaW9yIHRvIHRoZSBhZGRpdGlvbiBvZiA6cXVlcnktc3RkZXJyKSBt YWtlLXByb2Nlc3MKd2lsbCBub3QgbGVhayB0aGUgc3RkZXJyIHByb2Nlc3MgaWYgYSBjYWxsIHRv IG1ha2UtcHJvY2VzcyBmYWlscy4KQWxzbyBhZGRzIGEgbmV3IGtleXdvcmQgYXJndW1lbnQgOnF1 ZXJ5LXN0ZGVyciB0byBjb250cm9sIHdoZXRoZXIgdG8KcXVlcnkgb24gZXhpdCB0aGUgc3RkZXJy IHByb2Nlc3MgKGlmIG9uZSBpcyBjcmVhdGVkKS4gKGJ1ZyM1NjAwMikKLS0tCiBzcmMvcHJvY2Vz cy5jIHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3MuYyBiL3NyYy9wcm9jZXNzLmMKaW5kZXggYWY0MDJjOGVk Yi4uYzA4ZGQ2OTk1YSAxMDA2NDQKLS0tIGEvc3JjL3Byb2Nlc3MuYworKysgYi9zcmMvcHJvY2Vz cy5jCkBAIC0xNzMyLDYgKzE3MzIsMTEgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9w cm9jZXNzLCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogOm5vcXVlcnkgQk9PTCAtLSBXaGVu IGV4aXRpbmcgRW1hY3MsIHF1ZXJ5IHRoZSB1c2VyIGlmIEJPT0wgaXMgbmlsIGFuZAogdGhlIHBy b2Nlc3MgaXMgcnVubmluZy4gIElmIEJPT0wgaXMgbm90IGdpdmVuLCBxdWVyeSBiZWZvcmUgZXhp dGluZy4KIAorOnF1ZXJ5LXN0ZGVyciBCT09MIC0tIFdoZW4gZXhpdGluZyBFbWFjcywgcXVlcnkg dGhlIHVzZXIgaWYgQk9PTCBpcworbm9uLW5pbCBhbmQgdGhlIHN0ZGVyciBwcm9jZXNzIGlzIHJ1 bm5pbmcuIElmIEJPT0wgaXMgbm90IGdpdmVuLCBkbworbm90IHF1ZXJ5IGJlZm9yZSBleGl0aW5n LiBUaGlzIGhhcyBubyBlZmZlY3QgaWYgdGhlIHZhbHVlIHBhc3NlZCB0bworOnN0ZGVyciBpcyBh IHByb2Nlc3MuCisKIDpzdG9wIEJPT0wgLS0gQk9PTCBtdXN0IGJlIG5pbC4gIFRoZSBgOnN0b3An IGtleSBpcyBpZ25vcmVkIG90aGVyd2lzZQogYW5kIGlzIHJldGFpbmVkIGZvciBjb21wYXRpYmls aXR5IHdpdGggb3RoZXIgcHJvY2VzcyB0eXBlcyBzdWNoIGFzCiBwaXBlIHByb2Nlc3Nlcy4gIEFz eW5jaHJvbm91cyBzdWJwcm9jZXNzZXMgbmV2ZXIgc3RhcnQgaW4gdGhlCkBAIC0xODA0LDggKzE4 MDksNiBAQCBERUZVTiAoIm1ha2UtcHJvY2VzcyIsIEZtYWtlX3Byb2Nlc3MsIFNtYWtlX3Byb2Nl c3MsIDAsIE1BTlksIDAsCiAgIGlmICghTklMUCAocHJvZ3JhbSkpCiAgICAgQ0hFQ0tfU1RSSU5H IChwcm9ncmFtKTsKIAotICBib29sIHF1ZXJ5X29uX2V4aXQgPSBOSUxQIChwbGlzdF9nZXQgKGNv bnRhY3QsIFFDbm9xdWVyeSkpOwotCiAgIHN0ZGVycnByb2MgPSBRbmlsOwogICB4c3RkZXJyID0g cGxpc3RfZ2V0IChjb250YWN0LCBRQ3N0ZGVycik7CiAgIGlmIChQUk9DRVNTUCAoeHN0ZGVycikp CkBAIC0xODE1LDE2ICsxODE4LDcgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9j ZXNzLCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogICAgICAgc3RkZXJycHJvYyA9IHhzdGRl cnI7CiAgICAgfQogICBlbHNlIGlmICghTklMUCAoeHN0ZGVycikpCi0gICAgewotICAgICAgQ0hF Q0tfU1RSSU5HIChwcm9ncmFtKTsKLSAgICAgIHN0ZGVycnByb2MgPSBDQUxMTiAoRm1ha2VfcGlw ZV9wcm9jZXNzLAotCQkJICBRQ25hbWUsCi0JCQkgIGNvbmNhdDIgKG5hbWUsIGJ1aWxkX3N0cmlu ZyAoIiBzdGRlcnIiKSksCi0JCQkgIFFDYnVmZmVyLAotCQkJICBGZ2V0X2J1ZmZlcl9jcmVhdGUg KHhzdGRlcnIsIFFuaWwpLAotCQkJICBRQ25vcXVlcnksCi0JCQkgIHF1ZXJ5X29uX2V4aXQgPyBR bmlsIDogUXQpOwotICAgIH0KKyAgICBDSEVDS19TVFJJTkcgKHByb2dyYW0pOwogCiAgIHByb2Mg PSBtYWtlX3Byb2Nlc3MgKG5hbWUpOwogICByZWNvcmRfdW53aW5kX3Byb3RlY3QgKHN0YXJ0X3By b2Nlc3NfdW53aW5kLCBwcm9jKTsKQEAgLTE4MzcsNyArMTgzMSw3IEBAIERFRlVOICgibWFrZS1w cm9jZXNzIiwgRm1ha2VfcHJvY2VzcywgU21ha2VfcHJvY2VzcywgMCwgTUFOWSwgMCwKICAgcHNl dF9maWx0ZXIgKFhQUk9DRVNTIChwcm9jKSwgcGxpc3RfZ2V0IChjb250YWN0LCBRQ2ZpbHRlcikp OwogICBwc2V0X2NvbW1hbmQgKFhQUk9DRVNTIChwcm9jKSwgRmNvcHlfc2VxdWVuY2UgKGNvbW1h bmQpKTsKIAotICBpZiAoIXF1ZXJ5X29uX2V4aXQpCisgIGlmICghTklMUCAocGxpc3RfZ2V0IChj b250YWN0LCBRQ25vcXVlcnkpKSkKICAgICBYUFJPQ0VTUyAocHJvYyktPmtpbGxfd2l0aG91dF9x dWVyeSA9IDE7CiAgIHRlbSA9IHBsaXN0X2dldCAoY29udGFjdCwgUUNzdG9wKTsKICAgLyogTm9y bWFsIHByb2Nlc3NlcyBjYW4ndCBiZSBzdGFydGVkIGluIGEgc3RvcHBlZCBzdGF0ZSwgc2VlCkBA IC0xODU0LDEzICsxODQ4LDYgQEAgREVGVU4gKCJtYWtlLXByb2Nlc3MiLCBGbWFrZV9wcm9jZXNz LCBTbWFrZV9wcm9jZXNzLCAwLCBNQU5ZLCAwLAogICBlbHNlCiAgICAgcmVwb3J0X2ZpbGVfZXJy b3IgKCJVbmtub3duIGNvbm5lY3Rpb24gdHlwZSIsIHRlbSk7CiAKLSAgaWYgKCFOSUxQIChzdGRl cnJwcm9jKSkKLSAgICB7Ci0gICAgICBwc2V0X3N0ZGVycnByb2MgKFhQUk9DRVNTIChwcm9jKSwg c3RkZXJycHJvYyk7Ci0KLSAgICAgIFhQUk9DRVNTIChwcm9jKS0+cHR5X2ZsYWcgPSBmYWxzZTsK LSAgICB9Ci0KICNpZmRlZiBIQVZFX0dOVVRMUwogICAvKiBBS0EgR05VVExTX0lOSVRTVEFHRShw cm9jKS4gICovCiAgIHZlcmlmeSAoR05VVExTX1NUQUdFX0VNUFRZID09IDApOwpAQCAtMjAyNiwx MCArMjAxMywzNyBAQCBERUZVTiAoIm1ha2UtcHJvY2VzcyIsIEZtYWtlX3Byb2Nlc3MsIFNtYWtl X3Byb2Nlc3MsIDAsIE1BTlksIDAsCiAJICB0ZW0gPSBYQ0RSICh0ZW0pOwogCX0KIAorICAgICAg aWYgKCFQUk9DRVNTUCAoeHN0ZGVycikgJiYgIU5JTFAgKHhzdGRlcnIpKQorCXsKKwkgIHN0ZGVy cnByb2MgPSBDQUxMTiAoRm1ha2VfcGlwZV9wcm9jZXNzLAorCQkJICAgICAgUUNuYW1lLAorCQkJ ICAgICAgY29uY2F0MiAobmFtZSwgYnVpbGRfc3RyaW5nICgiIHN0ZGVyciIpKSwKKwkJCSAgICAg IFFDYnVmZmVyLAorCQkJICAgICAgRmdldF9idWZmZXJfY3JlYXRlICh4c3RkZXJyLCBRbmlsKSwK KwkJCSAgICAgIFFDbm9xdWVyeSwKKwkJCSAgICAgIE5JTFAgKHBsaXN0X2dldCAoY29udGFjdCwg UUNxdWVyeV9zdGRlcnIpKSA/IFF0IDogUW5pbCk7CisJfQorCisgICAgICBpZiAoIU5JTFAgKHN0 ZGVycnByb2MpKQorCXsKKwkgIHBzZXRfc3RkZXJycHJvYyAoWFBST0NFU1MgKHByb2MpLCBzdGRl cnJwcm9jKTsKKworCSAgWFBST0NFU1MgKHByb2MpLT5wdHlfZmxhZyA9IGZhbHNlOworCX0KKwog ICAgICAgY3JlYXRlX3Byb2Nlc3MgKHByb2MsIG5ld19hcmd2LCBjdXJyZW50X2Rpcik7CiAgICAg fQogICBlbHNlCi0gICAgY3JlYXRlX3B0eSAocHJvYyk7CisgICAgeworICAgICAgaWYgKCFOSUxQ IChzdGRlcnJwcm9jKSkKKwl7CisJICBwc2V0X3N0ZGVycnByb2MgKFhQUk9DRVNTIChwcm9jKSwg c3RkZXJycHJvYyk7CisKKwkgIFhQUk9DRVNTIChwcm9jKS0+cHR5X2ZsYWcgPSBmYWxzZTsKKwl9 CisKKyAgICAgIGNyZWF0ZV9wdHkgKHByb2MpOworICAgIH0KIAogICByZXR1cm4gU0FGRV9GUkVF X1VOQklORF9UTyAoY291bnQsIHByb2MpOwogfQpAQCAtODU0Myw2ICs4NTU3LDcgQEAgc3ltc19v Zl9wcm9jZXNzICh2b2lkKQogICBERUZTWU0gKFFuc21fdmVyaWZ5X2Nvbm5lY3Rpb24sICJuc20t dmVyaWZ5LWNvbm5lY3Rpb24iKTsKICAgREVGU1lNIChRQ2xvZywgIjpsb2ciKTsKICAgREVGU1lN IChRQ25vcXVlcnksICI6bm9xdWVyeSIpOworICBERUZTWU0gKFFDcXVlcnlfc3RkZXJyLCAiOnF1 ZXJ5LXN0ZGVyciIpOwogICBERUZTWU0gKFFDc3RvcCwgIjpzdG9wIik7CiAgIERFRlNZTSAoUUNw bGlzdCwgIjpwbGlzdCIpOwogICBERUZTWU0gKFFDY29tbWFuZCwgIjpjb21tYW5kIik7Ci0tIAoy LjM1LjEKCg== --000000000000ac7b6b05e29cafa9--