Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1osOQo-0003Bk-8s for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Nov 2022 13:14:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1osOQn-0006Qh-4B for pgsql-hackers@arkaria.postgresql.org; Tue, 08 Nov 2022 13:14:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1osOQm-0006Q5-Lh for pgsql-hackers@lists.postgresql.org; Tue, 08 Nov 2022 13:14:20 +0000 Received: from out3-smtp.messagingengine.com ([66.111.4.27]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1osOQj-0004Xj-If for pgsql-hackers@postgresql.org; Tue, 08 Nov 2022 13:14:19 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id C29A95C015A; Tue, 8 Nov 2022 08:14:16 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Tue, 08 Nov 2022 08:14:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1667913256; x=1667999656; bh=DHW1YYGAmUpdlboIJqfB9bTUUK5+ 4o1ldaXADHgJb/Y=; b=AAv4a9bI0ztFd2jFTi8uRGVORaaLrmvjPnnkb2gCAeSS xXwWx/UVA+YnkrxZ6XyRaAfYzTNZCC7ciI2v5Rb5G3/DxZoGb8oIyrDKOezNMlBk tIlZ8rvhqvRI9Od99mv6bxVr2ODuK5/Gk96vQVwNtgJVneAI+IKGTdyE0Aq5VA+W v4A8uOxSh6laJdfzQjeOZ5haNNZPlwx7Idv38k7mY0H6uF5T246cl9maO/2CtQNP 2wGy0wlcwJI8TZvbLy1FJsMMtntPl7W9ESMippsiuuieUXsaJY48ebSGGSUacUfj XVBnPWOx8S0vpyZKF5SWqkKPeK2yRqgAwmURM6IbSw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedrfedtgdehtdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpegtkfffgggfuffhvfevfhgjsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrh hprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpeejgffgueduvdeugfeuueei gefgfffgjeefgfdvkeetvefhudeghffhvedtvdffveenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthes vghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 8 Nov 2022 08:14:15 -0500 (EST) Content-Type: multipart/mixed; boundary="------------GVfqYMLgvWe6f2rIboEvU09Y" Message-ID: Date: Tue, 8 Nov 2022 14:14:14 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: Check return value of pclose() correctly Content-Language: en-US From: Peter Eisentraut To: Michael Paquier Cc: pgsql-hackers References: <8cd9fb02-bc26-65f1-a809-b1cb360eef73@enterprisedb.com> <1735b462-b178-f2aa-5e73-182634a04a7b@enterprisedb.com> In-Reply-To: <1735b462-b178-f2aa-5e73-182634a04a7b@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GVfqYMLgvWe6f2rIboEvU09Y Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 01.11.22 21:30, Peter Eisentraut wrote: >>> There are some places where the return value is apparently intentionally >>> ignored, such as in error recovery paths, or psql ignoring a failure to >>> launch the pager.  (The intention can usually be inferred by the kind of >>> error checking attached to the corresponding popen() call.)  But >>> there are a >>> few places in psql that I'm suspicious about that I have marked, but >>> need to >>> think about further. >> >> Hmm.  I would leave these out, I think.  setQFout() relies on the >> result of openQueryOutputFile().  And this could make commands like >> \watch less reliable. > > I don't quite understand what you are saying here.  My point is that, > for example, setQFout() thinks it's important to check the result of > popen() and write an error message, but it doesn't check the result of > pclose() at all.  I don't think that makes sense in practice. I have looked this over again. In these cases, if the piped-to command is faulty, you get a "broken pipe" error anyway, so the effect of not checking the pclose() result is negligible. So I have removed the "FIXME" markers without further action. There is also the question whether we want to check the exit status of a user-supplied command, such as in pgbench's \setshell. I have dialed back my patch there, since I don't know what the current practice in pgbench scripts is. If the command fails badly, pgbench will probably complain anyway about invalid output. More important is that something like pg_upgrade does check the exit status when it calls pg_controldata etc. That's what this patch accomplishes. --------------GVfqYMLgvWe6f2rIboEvU09Y Content-Type: text/plain; charset=UTF-8; name="v2-0001-Check-return-value-of-pclose-correctly.patch" Content-Disposition: attachment; filename="v2-0001-Check-return-value-of-pclose-correctly.patch" Content-Transfer-Encoding: base64 RnJvbSA4NmIyYjYxZDMwZjg0OGI4NGM2OTQzN2M3MTA2ZGVhOGZkZjM3MzhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA4IE5vdiAyMDIyIDE0OjAzOjEyICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2Ml0gQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHBjbG9zZSgpIGNvcnJlY3RseQoK U29tZSBjYWxsZXJzIGRpZG4ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHBjbG9zZSgp IG9yCkNsb3NlUGlwZVN0cmVhbSgpIGNvcnJlY3RseS4gIEVpdGhlciB0aGV5IGRpZG4ndCBj aGVjayBpdCBhdCBhbGwgb3IKdGhleSB0cmVhdGVkIGl0IGxpa2UgdGhlIHJldHVybiBvZiBm Y2xvc2UoKS4KClRoZSBjb3JyZWN0IHdheSBpcyB0byBmaXJzdCBjaGVjayB3aGV0aGVyIHRo ZSByZXR1cm4gdmFsdWUgaXMgLTEsIGFuZAp0aGVuIHJlcG9ydCBlcnJubywgYW5kIHRoZW4g Y2hlY2sgdGhlIHJldHVybiB2YWx1ZSBsaWtlIGEgcmVzdWx0IGZyb20Kc3lzdGVtKCksIGZv ciB3aGljaCB3ZSBhbHJlYWR5IGhhdmUgd2FpdF9yZXN1bHRfdG9fc3RyKCkgdG8gbWFrZSBp dApzaW1wbGVyLiAgVG8gbWFrZSB0aGlzIG1vcmUgY29tcGFjdCwgZXhwYW5kIHdhaXRfcmVz dWx0X3RvX3N0cigpIHRvCmFsc28gaGFuZGxlIC0xIGV4cGxpY2l0bHkuCgpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvOGNkOWZiMDIt YmMyNi02NWYxLWE4MDktYjFjYjM2MGVlZjczQGVudGVycHJpc2VkYi5jb20KLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgfCAxMSArKysrKysrKysrLQogc3Jj L2Jpbi9wZ19jdGwvcGdfY3RsLmMgICAgICAgICAgICAgIHwgIDMgKy0tCiBzcmMvYmluL3Bn X3VwZ3JhZGUvY29udHJvbGRhdGEuYyAgICAgfCAxMiArKysrKysrKystLS0KIHNyYy9iaW4v cGdfdXBncmFkZS9leGVjLmMgICAgICAgICAgICB8ICA2ICsrKysrLQogc3JjL2Jpbi9wZ191 cGdyYWRlL29wdGlvbi5jICAgICAgICAgIHwgIDYgKysrKystCiBzcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAg ICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKystLS0tCiBzcmMvY29tbW9uL3dhaXRf ZXJyb3IuYyAgICAgICAgICAgICAgfCAgNiArKysrKy0KIDggZmlsZXMgY2hhbmdlZCwgNTAg aW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29s bGF0aW9uY21kcy5jCmluZGV4IDg2ZmJjN2ZhMDE5Zi4uZmJmNDVmMDVhYTBmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21kcy5jCkBAIC02MzksNiArNjM5LDcgQEAgcGdf aW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWludAkJCW5h bGlhc2VzLAogCQkJCQltYXhhbGlhc2VzLAogCQkJCQlpOworCQlpbnQJCQlwY2xvc2VfcmM7 CiAKIAkJLyogZXhwYW5zaWJsZSBhcnJheSBvZiBhbGlhc2VzICovCiAJCW1heGFsaWFzZXMg PSAxMDA7CkBAIC03NDUsNyArNzQ2LDE1IEBAIHBnX2ltcG9ydF9zeXN0ZW1fY29sbGF0aW9u cyhQR19GVU5DVElPTl9BUkdTKQogCQkJfQogCQl9CiAKLQkJQ2xvc2VQaXBlU3RyZWFtKGxv Y2FsZV9hX2hhbmRsZSk7CisJCXBjbG9zZV9yYyA9IENsb3NlUGlwZVN0cmVhbShsb2NhbGVf YV9oYW5kbGUpOworCQlpZiAocGNsb3NlX3JjICE9IDApCisJCXsKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkgZXJybXNnKCJj b3VsZCBub3QgZXhlY3V0ZSBjb21tYW5kIFwiJXNcIjogJXMiLAorCQkJCQkJCSJsb2NhbGUg LWEiLAorCQkJCQkJCXdhaXRfcmVzdWx0X3RvX3N0cihwY2xvc2VfcmMpKSkpOworCQl9CiAK IAkJLyoKIAkJICogQmVmb3JlIHByb2Nlc3NpbmcgdGhlIGFsaWFzZXMsIHNvcnQgdGhlbSBi eSBsb2NhbGUgbmFtZS4gIFRoZSBwb2ludApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jdGwv cGdfY3RsLmMgYi9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYwppbmRleCBhNTA5ZmM5MTA5ZTgu LmNlYWI2MDNjNDdkOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKKysr IGIvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMKQEAgLTIxNTQsMTIgKzIxNTQsMTEgQEAgYWRq dXN0X2RhdGFfZGlyKHZvaWQpCiAJZmZsdXNoKE5VTEwpOwogCiAJZmQgPSBwb3BlbihjbWQs ICJyIik7Ci0JaWYgKGZkID09IE5VTEwgfHwgZmdldHMoZmlsZW5hbWUsIHNpemVvZihmaWxl bmFtZSksIGZkKSA9PSBOVUxMKQorCWlmIChmZCA9PSBOVUxMIHx8IGZnZXRzKGZpbGVuYW1l LCBzaXplb2YoZmlsZW5hbWUpLCBmZCkgPT0gTlVMTCB8fCBwY2xvc2UoZmQpICE9IDApCiAJ ewogCQl3cml0ZV9zdGRlcnIoXygiJXM6IGNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGRhdGEg ZGlyZWN0b3J5IHVzaW5nIGNvbW1hbmQgXCIlc1wiXG4iKSwgcHJvZ25hbWUsIGNtZCk7CiAJ CWV4aXQoMSk7CiAJfQotCXBjbG9zZShmZCk7CiAJZnJlZShteV9leGVjX3BhdGgpOwogCiAJ Lyogc3RyaXAgdHJhaWxpbmcgbmV3bGluZSBhbmQgY2FycmlhZ2UgcmV0dXJuICovCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYyBiL3NyYy9iaW4vcGdf dXBncmFkZS9jb250cm9sZGF0YS5jCmluZGV4IDAxOGNkMzEwZjdjOC4uNzNiZmQxNDM5N2Nm IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYworKysgYi9z cmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYwpAQCAtNzUsNyArNzUsNyBAQCBnZXRf Y29udHJvbF9kYXRhKENsdXN0ZXJJbmZvICpjbHVzdGVyLCBib29sIGxpdmVfY2hlY2spCiAJ dWludDMyCQlsb2dpZCA9IDA7CiAJdWludDMyCQlzZWdubyA9IDA7CiAJY2hhcgkgICAqcmVz ZXR3YWxfYmluOwotCisJaW50CQkJcmM7CiAKIAkvKgogCSAqIEJlY2F1c2Ugd2UgdGVzdCB0 aGUgcGdfcmVzZXR3YWwgb3V0cHV0IGFzIHN0cmluZ3MsIGl0IGhhcyB0byBiZSBpbgpAQCAt MTcwLDcgKzE3MCwxMCBAQCBnZXRfY29udHJvbF9kYXRhKENsdXN0ZXJJbmZvICpjbHVzdGVy LCBib29sIGxpdmVfY2hlY2spCiAJCQl9CiAJCX0KIAotCQlwY2xvc2Uob3V0cHV0KTsKKwkJ cmMgPSBwY2xvc2Uob3V0cHV0KTsKKwkJaWYgKHJjICE9IDApCisJCQlwZ19mYXRhbCgiY291 bGQgbm90IGdldCBjb250cm9sIGRhdGEgdXNpbmcgJXM6ICVzIiwKKwkJCQkJIGNtZCwgd2Fp dF9yZXN1bHRfdG9fc3RyKHJjKSk7CiAKIAkJaWYgKCFnb3RfY2x1c3Rlcl9zdGF0ZSkKIAkJ ewpAQCAtNTAwLDcgKzUwMywxMCBAQCBnZXRfY29udHJvbF9kYXRhKENsdXN0ZXJJbmZvICpj bHVzdGVyLCBib29sIGxpdmVfY2hlY2spCiAJCX0KIAl9CiAKLQlwY2xvc2Uob3V0cHV0KTsK KwlyYyA9IHBjbG9zZShvdXRwdXQpOworCWlmIChyYyAhPSAwKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IGdldCBjb250cm9sIGRhdGEgdXNpbmcgJXM6ICVzIiwKKwkJCQkgY21kLCB3YWl0 X3Jlc3VsdF90b19zdHIocmMpKTsKIAogCS8qCiAJICogUmVzdG9yZSBlbnZpcm9ubWVudCB2 YXJpYWJsZXMuICBOb3RlIGFsbCBidXQgTEFORyBhbmQgTENfTUVTU0FHRVMgd2VyZQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL2V4ZWMuYyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9leGVjLmMKaW5kZXggNjBmNGI1NDQzZTY4Li4yM2ZlNTBlMzNkOWMgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfdXBncmFkZS9leGVjLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2V4 ZWMuYwpAQCAtMzUsNiArMzUsNyBAQCBnZXRfYmluX3ZlcnNpb24oQ2x1c3RlckluZm8gKmNs dXN0ZXIpCiAJY2hhcgkJY21kW01BWFBHUEFUSF0sCiAJCQkJY21kX291dHB1dFtNQVhfU1RS SU5HXTsKIAlGSUxFCSAgICpvdXRwdXQ7CisJaW50CQkJcmM7CiAJaW50CQkJdjEgPSAwLAog CQkJCXYyID0gMDsKIApAQCAtNDYsNyArNDcsMTAgQEAgZ2V0X2Jpbl92ZXJzaW9uKENsdXN0 ZXJJbmZvICpjbHVzdGVyKQogCQlwZ19mYXRhbCgiY291bGQgbm90IGdldCBwZ19jdGwgdmVy c2lvbiBkYXRhIHVzaW5nICVzOiAlcyIsCiAJCQkJIGNtZCwgc3RyZXJyb3IoZXJybm8pKTsK IAotCXBjbG9zZShvdXRwdXQpOworCXJjID0gcGNsb3NlKG91dHB1dCk7CisJaWYgKHJjICE9 IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IHBnX2N0bCB2ZXJzaW9uIGRhdGEgdXNp bmcgJXM6ICVzIiwKKwkJCQkgY21kLCB3YWl0X3Jlc3VsdF90b19zdHIocmMpKTsKIAogCWlm IChzc2NhbmYoY21kX291dHB1dCwgIiUqcyAlKnMgJWQuJWQiLCAmdjEsICZ2MikgPCAxKQog CQlwZ19mYXRhbCgiY291bGQgbm90IGdldCBwZ19jdGwgdmVyc2lvbiBvdXRwdXQgZnJvbSAl cyIsIGNtZCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMgYi9z cmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMKaW5kZXggM2Y3MTlmMTc2MmM1Li5mNDQxNjY4 YzYxMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9vcHRpb24uYworKysgYi9z cmMvYmluL3BnX3VwZ3JhZGUvb3B0aW9uLmMKQEAgLTM4NCw2ICszODQsNyBAQCBhZGp1c3Rf ZGF0YV9kaXIoQ2x1c3RlckluZm8gKmNsdXN0ZXIpCiAJCQkJY21kX291dHB1dFtNQVhfU1RS SU5HXTsKIAlGSUxFCSAgICpmcCwKIAkJCSAgICpvdXRwdXQ7CisJaW50CQkJcmM7CiAKIAkv KiBJbml0aWFsbHkgYXNzdW1lIGNvbmZpZyBkaXIgYW5kIGRhdGEgZGlyIGFyZSB0aGUgc2Ft ZSAqLwogCWNsdXN0ZXItPnBnY29uZmlnID0gcGdfc3RyZHVwKGNsdXN0ZXItPnBnZGF0YSk7 CkBAIC00MjMsNyArNDI0LDEwIEBAIGFkanVzdF9kYXRhX2RpcihDbHVzdGVySW5mbyAqY2x1 c3RlcikKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBnZXQgZGF0YSBkaXJlY3RvcnkgdXNpbmcg JXM6ICVzIiwKIAkJCQkgY21kLCBzdHJlcnJvcihlcnJubykpOwogCi0JcGNsb3NlKG91dHB1 dCk7CisJcmMgPSBwY2xvc2Uob3V0cHV0KTsKKwlpZiAocmMgIT0gMCkKKwkJcGdfZmF0YWwo ImNvdWxkIG5vdCBnZXQgY29udHJvbCBkYXRhIGRpcmVjdG9yeSB1c2luZyAlczogJXMiLAor CQkJCSBjbWQsIHdhaXRfcmVzdWx0X3RvX3N0cihyYykpOwogCiAJLyogc3RyaXAgdHJhaWxp bmcgbmV3bGluZSBhbmQgY2FycmlhZ2UgcmV0dXJuICovCiAJKHZvaWQpIHBnX3N0cmlwX2Ny bGYoY21kX291dHB1dCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCBiMjA4ZDc0NzY3ZjEuLjM2OTA1 YTg5NjgxNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYworKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCkBAIC0zMDAyLDcgKzMwMDIsNyBAQCBydW5TaGVs bENvbW1hbmQoVmFyaWFibGVzICp2YXJpYWJsZXMsIGNoYXIgKnZhcmlhYmxlLCBjaGFyICoq YXJndiwgaW50IGFyZ2MpCiAJfQogCWlmIChwY2xvc2UoZnApIDwgMCkKIAl7Ci0JCXBnX2xv Z19lcnJvcigiJXM6IGNvdWxkIG5vdCBjbG9zZSBzaGVsbCBjb21tYW5kIiwgYXJndlswXSk7 CisJCXBnX2xvZ19lcnJvcigiJXM6IGNvdWxkIG5vdCBydW4gc2hlbGwgY29tbWFuZDogJW0i LCBhcmd2WzBdKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggYWI2MTNk ZDQ5ZTBhLi42OTU4NTYyZTMzNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5k LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtMjY5NCwxNCArMjY5NCwyNCBA QCBleGVjX2NvbW1hbmRfd3JpdGUoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gsCiAJCQkJZnByaW50ZihmZCwgIiVzXG4iLCBwcmV2aW91c19idWYtPmRh dGEpOwogCiAJCQlpZiAoaXNfcGlwZSkKKwkJCXsKIAkJCQlyZXN1bHQgPSBwY2xvc2UoZmQp OworCisJCQkJaWYgKHJlc3VsdCAhPSAwKQorCQkJCXsKKwkJCQkJcGdfbG9nX2Vycm9yKCIl czogJXMiLCBmbmFtZSwgd2FpdF9yZXN1bHRfdG9fc3RyKHJlc3VsdCkpOworCQkJCQlzdGF0 dXMgPSBQU1FMX0NNRF9FUlJPUjsKKwkJCQl9CisJCQl9CiAJCQllbHNlCisJCQl7CiAJCQkJ cmVzdWx0ID0gZmNsb3NlKGZkKTsKIAotCQkJaWYgKHJlc3VsdCA9PSBFT0YpCi0JCQl7Ci0J CQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7Ci0JCQkJc3RhdHVzID0gUFNRTF9D TURfRVJST1I7CisJCQkJaWYgKHJlc3VsdCA9PSBFT0YpCisJCQkJeworCQkJCQlwZ19sb2df ZXJyb3IoIiVzOiAlbSIsIGZuYW1lKTsKKwkJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7 CisJCQkJfQogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vd2FpdF9lcnJv ci5jIGIvc3JjL2NvbW1vbi93YWl0X2Vycm9yLmMKaW5kZXggYTc3NmYyOTAxZThlLi44Mzk3 ZTIzOGIyYjQgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vd2FpdF9lcnJvci5jCisrKyBiL3Ny Yy9jb21tb24vd2FpdF9lcnJvci5jCkBAIC0zMyw3ICszMywxMSBAQCB3YWl0X3Jlc3VsdF90 b19zdHIoaW50IGV4aXRzdGF0dXMpCiB7CiAJY2hhcgkJc3RyWzUxMl07CiAKLQlpZiAoV0lG RVhJVEVEKGV4aXRzdGF0dXMpKQorCWlmIChleGl0c3RhdHVzID09IC0xKQorCXsKKwkJc25w cmludGYoc3RyLCBzaXplb2Yoc3RyKSwgIiVtIik7CisJfQorCWVsc2UgaWYgKFdJRkVYSVRF RChleGl0c3RhdHVzKSkKIAl7CiAJCS8qCiAJCSAqIEdpdmUgbW9yZSBzcGVjaWZpYyBlcnJv ciBtZXNzYWdlIGZvciBzb21lIGNvbW1vbiBleGl0IGNvZGVzIHRoYXQKCmJhc2UtY29tbWl0 OiBiZDk1ODE2Zjc0YWQ0Y2FkM2QyYTNjMTYwYmU0MjYzNThkNmNlYTUxCi0tIAoyLjM4LjEK Cg== --------------GVfqYMLgvWe6f2rIboEvU09Y--