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 1opPun-0004HE-SI for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Oct 2022 08:13:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1opPum-0003N3-Nc for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Oct 2022 08:13:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1opPum-0003Mt-C0 for pgsql-hackers@lists.postgresql.org; Mon, 31 Oct 2022 08:13:00 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1opPuj-0006sL-A9 for pgsql-hackers@postgresql.org; Mon, 31 Oct 2022 08:12:59 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id AD3D05C0095 for ; Mon, 31 Oct 2022 04:12:55 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Mon, 31 Oct 2022 04:12:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1667203975; x= 1667290375; bh=Ikta+CU+dhyOdsIvJ2bAGKzR/PvgnwD1gPOCDuq9Asw=; b=p YzHrRWBVHKmtItx961+wtVAUlcdo+FHQsaSqmfhLxn5KRc7XxMcM19j+hUSoqDIM sTVAjjO/zdBsPFFereCC7KqbV7EY47hCc0snminGJJCeKqMTWLoD7V0dfjuRH5yN 0Qe2Ws2IMKSysVnDnJsz2b0x9jmmvaQYsfe1K8M3eYFNbnXO3pIcPGr/lkDOxm/J phqva/ujWip4p9TaoskwxdoVBRNv0lXmRsRz2PTCydPr3QHMMApbuuKXLrPCrMhr 4IElxM8P6/eKV4Ts8d9dySm0V6SSZYhDP8YrCJ+AHSsAZ/RvY4X46lmbBna6cWKS YNe8nhj5prN7e5ufLKsqg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvgedruddvgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderredtfe ejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhs vghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrh hnpeetveeuvdeikeeigefhveffhffhvdejveelleefieekieekvdffgeetkedutdefleen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvg hrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 31 Oct 2022 04:12:54 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------L6aquR9j2tAy12BhjzFfY5eF" Message-ID: <8cd9fb02-bc26-65f1-a809-b1cb360eef73@enterprisedb.com> Date: Mon, 31 Oct 2022 09:12:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Content-Language: en-US From: Peter Eisentraut Subject: Check return value of pclose() correctly To: pgsql-hackers 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. --------------L6aquR9j2tAy12BhjzFfY5eF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I noticed that some (not all) callers didn't check the return value of pclose() or ClosePipeStream() correctly. Either they didn't check it at all or they treated it like the return of fclose(). Here is a patch with fixes. (A failure to run the command issued by popen() is usually reported via the pclose() status, so while you can often get away with not checking fclose() or close(), checking pclose() is more often useful.) 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. --------------L6aquR9j2tAy12BhjzFfY5eF Content-Type: text/plain; charset=UTF-8; name="v1-0001-Check-return-value-of-pclose-correctly.patch" Content-Disposition: attachment; filename="v1-0001-Check-return-value-of-pclose-correctly.patch" Content-Transfer-Encoding: base64 RnJvbSBiN2E3NWNiMjU5MzliNDkzMGRkZDRmN2E5OTExOTE0NGNjY2Q0Yzk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAzMSBPY3QgMjAyMiAwOTowNDo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIENoZWNrIHJldHVybiB2YWx1ZSBvZiBwY2xvc2UoKSBjb3JyZWN0bHkK ClNvbWUgY2FsbGVycyBkaWRuJ3QgY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBwY2xvc2Uo KSBvcgpDbG9zZVBpcGVTdHJlYW0oKSBjb3JyZWN0bHkuICBFaXRoZXIgdGhleSBkaWRuJ3Qg Y2hlY2sgaXQgYXQgYWxsIG9yCnRoZXkgdHJlYXRlZCBpdCBsaWtlIHRoZSByZXR1cm4gb2Yg ZmNsb3NlKCkuCgpUaGUgY29ycmVjdCB3YXkgaXMgdG8gZmlyc3QgY2hlY2sgd2hldGhlciB0 aGUgcmV0dXJuIHZhbHVlIGlzIC0xLCBhbmQKdGhlbiByZXBvcnQgZXJybm8sIGFuZCB0aGVu IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgbGlrZSBhIHJlc3VsdCBmcm9tCnN5c3RlbSgpLCBm b3Igd2hpY2ggd2UgYWxyZWFkeSBoYXZlIHdhaXRfcmVzdWx0X3RvX3N0cigpIHRvIG1ha2Ug aXQKc2ltcGxlci4gIFRvIG1ha2UgdGhpcyBtb3JlIGNvbXBhY3QsIGV4cGFuZCB3YWl0X3Jl c3VsdF90b19zdHIoKSB0bwphbHNvIGhhbmRsZSAtMSBleHBsaWNpdGx5LgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYyB8IDExICsrKysrKysrKystCiBzcmMv YmluL3BnX2N0bC9wZ19jdGwuYyAgICAgICAgICAgICAgfCAgMyArLS0KIHNyYy9iaW4vcGdf dXBncmFkZS9jb250cm9sZGF0YS5jICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2Jpbi9w Z191cGdyYWRlL2V4ZWMuYyAgICAgICAgICAgIHwgIDYgKysrKystCiBzcmMvYmluL3BnX3Vw Z3JhZGUvb3B0aW9uLmMgICAgICAgICAgfCAgNiArKysrKy0KIHNyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgICAgICAgICAgICB8ICA2ICsrKystLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YyAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKystLS0tCiBzcmMvYmluL3BzcWwv Y29tbW9uLmMgICAgICAgICAgICAgICAgfCAgMyArKysKIHNyYy9jb21tb24vd2FpdF9lcnJv ci5jICAgICAgICAgICAgICB8ICA2ICsrKysrLQogOSBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNl cnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb2xsYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRp b25jbWRzLmMKaW5kZXggZmNmYzAyZDJhZWRlLi4zYjMwODAxZjkzNDQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKQEAgLTYwNSw2ICs2MDUsNyBAQCBwZ19pbXBv cnRfc3lzdGVtX2NvbGxhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJaW50CQkJbmFsaWFz ZXMsCiAJCQkJCW1heGFsaWFzZXMsCiAJCQkJCWk7CisJCWludAkJCXBjbG9zZV9yYzsKIAog CQkvKiBleHBhbnNpYmxlIGFycmF5IG9mIGFsaWFzZXMgKi8KIAkJbWF4YWxpYXNlcyA9IDEw MDsKQEAgLTcxMSw3ICs3MTIsMTUgQEAgcGdfaW1wb3J0X3N5c3RlbV9jb2xsYXRpb25zKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQl9CiAJCX0KIAotCQlDbG9zZVBpcGVTdHJlYW0obG9jYWxl X2FfaGFuZGxlKTsKKwkJcGNsb3NlX3JjID0gQ2xvc2VQaXBlU3RyZWFtKGxvY2FsZV9hX2hh bmRsZSk7CisJCWlmIChwY2xvc2VfcmMgIT0gMCkKKwkJeworCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBleGVjdXRlIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJCQkJImxvY2FsZSAtYSIs CisJCQkJCQkJd2FpdF9yZXN1bHRfdG9fc3RyKHBjbG9zZV9yYykpKSk7CisJCX0KIAogCQkv KgogCQkgKiBCZWZvcmUgcHJvY2Vzc2luZyB0aGUgYWxpYXNlcywgc29ydCB0aGVtIGJ5IGxv Y2FsZSBuYW1lLiAgVGhlIHBvaW50CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0bC9wZ19j dGwuYyBiL3NyYy9iaW4vcGdfY3RsL3BnX2N0bC5jCmluZGV4IGE1MDlmYzkxMDllOC4uY2Vh YjYwM2M0N2Q5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYworKysgYi9z cmMvYmluL3BnX2N0bC9wZ19jdGwuYwpAQCAtMjE1NCwxMiArMjE1NCwxMSBAQCBhZGp1c3Rf ZGF0YV9kaXIodm9pZCkKIAlmZmx1c2goTlVMTCk7CiAKIAlmZCA9IHBvcGVuKGNtZCwgInIi KTsKLQlpZiAoZmQgPT0gTlVMTCB8fCBmZ2V0cyhmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1l KSwgZmQpID09IE5VTEwpCisJaWYgKGZkID09IE5VTEwgfHwgZmdldHMoZmlsZW5hbWUsIHNp emVvZihmaWxlbmFtZSksIGZkKSA9PSBOVUxMIHx8IHBjbG9zZShmZCkgIT0gMCkKIAl7CiAJ CXdyaXRlX3N0ZGVycihfKCIlczogY291bGQgbm90IGRldGVybWluZSB0aGUgZGF0YSBkaXJl Y3RvcnkgdXNpbmcgY29tbWFuZCBcIiVzXCJcbiIpLCBwcm9nbmFtZSwgY21kKTsKIAkJZXhp dCgxKTsKIAl9Ci0JcGNsb3NlKGZkKTsKIAlmcmVlKG15X2V4ZWNfcGF0aCk7CiAKIAkvKiBz dHJpcCB0cmFpbGluZyBuZXdsaW5lIGFuZCBjYXJyaWFnZSByZXR1cm4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9jb250cm9sZGF0YS5jIGIvc3JjL2Jpbi9wZ191cGdy YWRlL2NvbnRyb2xkYXRhLmMKaW5kZXggMDE4Y2QzMTBmN2M4Li43M2JmZDE0Mzk3Y2YgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9jb250cm9sZGF0YS5jCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9jb250cm9sZGF0YS5jCkBAIC03NSw3ICs3NSw3IEBAIGdldF9jb250 cm9sX2RhdGEoQ2x1c3RlckluZm8gKmNsdXN0ZXIsIGJvb2wgbGl2ZV9jaGVjaykKIAl1aW50 MzIJCWxvZ2lkID0gMDsKIAl1aW50MzIJCXNlZ25vID0gMDsKIAljaGFyCSAgICpyZXNldHdh bF9iaW47Ci0KKwlpbnQJCQlyYzsKIAogCS8qCiAJICogQmVjYXVzZSB3ZSB0ZXN0IHRoZSBw Z19yZXNldHdhbCBvdXRwdXQgYXMgc3RyaW5ncywgaXQgaGFzIHRvIGJlIGluCkBAIC0xNzAs NyArMTcwLDEwIEBAIGdldF9jb250cm9sX2RhdGEoQ2x1c3RlckluZm8gKmNsdXN0ZXIsIGJv b2wgbGl2ZV9jaGVjaykKIAkJCX0KIAkJfQogCi0JCXBjbG9zZShvdXRwdXQpOworCQlyYyA9 IHBjbG9zZShvdXRwdXQpOworCQlpZiAocmMgIT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgZ2V0IGNvbnRyb2wgZGF0YSB1c2luZyAlczogJXMiLAorCQkJCQkgY21kLCB3YWl0X3Jl c3VsdF90b19zdHIocmMpKTsKIAogCQlpZiAoIWdvdF9jbHVzdGVyX3N0YXRlKQogCQl7CkBA IC01MDAsNyArNTAzLDEwIEBAIGdldF9jb250cm9sX2RhdGEoQ2x1c3RlckluZm8gKmNsdXN0 ZXIsIGJvb2wgbGl2ZV9jaGVjaykKIAkJfQogCX0KIAotCXBjbG9zZShvdXRwdXQpOworCXJj ID0gcGNsb3NlKG91dHB1dCk7CisJaWYgKHJjICE9IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBu b3QgZ2V0IGNvbnRyb2wgZGF0YSB1c2luZyAlczogJXMiLAorCQkJCSBjbWQsIHdhaXRfcmVz dWx0X3RvX3N0cihyYykpOwogCiAJLyoKIAkgKiBSZXN0b3JlIGVudmlyb25tZW50IHZhcmlh Ymxlcy4gIE5vdGUgYWxsIGJ1dCBMQU5HIGFuZCBMQ19NRVNTQUdFUyB3ZXJlCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvZXhlYy5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2V4 ZWMuYwppbmRleCA2MGY0YjU0NDNlNjguLjIzZmU1MGUzM2Q5YyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ191cGdyYWRlL2V4ZWMuYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvZXhlYy5j CkBAIC0zNSw2ICszNSw3IEBAIGdldF9iaW5fdmVyc2lvbihDbHVzdGVySW5mbyAqY2x1c3Rl cikKIAljaGFyCQljbWRbTUFYUEdQQVRIXSwKIAkJCQljbWRfb3V0cHV0W01BWF9TVFJJTkdd OwogCUZJTEUJICAgKm91dHB1dDsKKwlpbnQJCQlyYzsKIAlpbnQJCQl2MSA9IDAsCiAJCQkJ djIgPSAwOwogCkBAIC00Niw3ICs0NywxMCBAQCBnZXRfYmluX3ZlcnNpb24oQ2x1c3Rlcklu Zm8gKmNsdXN0ZXIpCiAJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IHBnX2N0bCB2ZXJzaW9u IGRhdGEgdXNpbmcgJXM6ICVzIiwKIAkJCQkgY21kLCBzdHJlcnJvcihlcnJubykpOwogCi0J cGNsb3NlKG91dHB1dCk7CisJcmMgPSBwY2xvc2Uob3V0cHV0KTsKKwlpZiAocmMgIT0gMCkK KwkJcGdfZmF0YWwoImNvdWxkIG5vdCBnZXQgcGdfY3RsIHZlcnNpb24gZGF0YSB1c2luZyAl czogJXMiLAorCQkJCSBjbWQsIHdhaXRfcmVzdWx0X3RvX3N0cihyYykpOwogCiAJaWYgKHNz Y2FuZihjbWRfb3V0cHV0LCAiJSpzICUqcyAlZC4lZCIsICZ2MSwgJnYyKSA8IDEpCiAJCXBn X2ZhdGFsKCJjb3VsZCBub3QgZ2V0IHBnX2N0bCB2ZXJzaW9uIG91dHB1dCBmcm9tICVzIiwg Y21kKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9vcHRpb24uYyBiL3NyYy9i aW4vcGdfdXBncmFkZS9vcHRpb24uYwppbmRleCAzZjcxOWYxNzYyYzUuLmY0NDE2NjhjNjEy YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL29wdGlvbi5jCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9vcHRpb24uYwpAQCAtMzg0LDYgKzM4NCw3IEBAIGFkanVzdF9kYXRh X2RpcihDbHVzdGVySW5mbyAqY2x1c3RlcikKIAkJCQljbWRfb3V0cHV0W01BWF9TVFJJTkdd OwogCUZJTEUJICAgKmZwLAogCQkJICAgKm91dHB1dDsKKwlpbnQJCQlyYzsKIAogCS8qIElu aXRpYWxseSBhc3N1bWUgY29uZmlnIGRpciBhbmQgZGF0YSBkaXIgYXJlIHRoZSBzYW1lICov CiAJY2x1c3Rlci0+cGdjb25maWcgPSBwZ19zdHJkdXAoY2x1c3Rlci0+cGdkYXRhKTsKQEAg LTQyMyw3ICs0MjQsMTAgQEAgYWRqdXN0X2RhdGFfZGlyKENsdXN0ZXJJbmZvICpjbHVzdGVy KQogCQlwZ19mYXRhbCgiY291bGQgbm90IGdldCBkYXRhIGRpcmVjdG9yeSB1c2luZyAlczog JXMiLAogCQkJCSBjbWQsIHN0cmVycm9yKGVycm5vKSk7CiAKLQlwY2xvc2Uob3V0cHV0KTsK KwlyYyA9IHBjbG9zZShvdXRwdXQpOworCWlmIChyYyAhPSAwKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IGdldCBjb250cm9sIGRhdGEgZGlyZWN0b3J5IHVzaW5nICVzOiAlcyIsCisJCQkJ IGNtZCwgd2FpdF9yZXN1bHRfdG9fc3RyKHJjKSk7CiAKIAkvKiBzdHJpcCB0cmFpbGluZyBu ZXdsaW5lIGFuZCBjYXJyaWFnZSByZXR1cm4gKi8KIAkodm9pZCkgcGdfc3RyaXBfY3JsZihj bWRfb3V0cHV0KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCmluZGV4IGIyMDhkNzQ3NjdmMS4uMmQ1ZGJhODkw ODM5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9i aW4vcGdiZW5jaC9wZ2JlbmNoLmMKQEAgLTI5MjcsNiArMjkyNyw3IEBAIHJ1blNoZWxsQ29t bWFuZChWYXJpYWJsZXMgKnZhcmlhYmxlcywgY2hhciAqdmFyaWFibGUsIGNoYXIgKiphcmd2 LCBpbnQgYXJnYykKIAlpbnQJCQlpLAogCQkJCWxlbiA9IDA7CiAJRklMRQkgICAqZnA7CisJ aW50CQkJcmM7CiAJY2hhcgkJcmVzWzY0XTsKIAljaGFyCSAgICplbmRwdHI7CiAJaW50CQkJ cmV0dmFsOwpAQCAtMzAwMCw5ICszMDAxLDEwIEBAIHJ1blNoZWxsQ29tbWFuZChWYXJpYWJs ZXMgKnZhcmlhYmxlcywgY2hhciAqdmFyaWFibGUsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykK IAkJKHZvaWQpIHBjbG9zZShmcCk7CiAJCXJldHVybiBmYWxzZTsKIAl9Ci0JaWYgKHBjbG9z ZShmcCkgPCAwKQorCWlmICgocmMgPSBwY2xvc2UoZnApKSAhPSAwKQogCXsKLQkJcGdfbG9n X2Vycm9yKCIlczogY291bGQgbm90IGNsb3NlIHNoZWxsIGNvbW1hbmQiLCBhcmd2WzBdKTsK KwkJcGdfbG9nX2Vycm9yKCIlczogY291bGQgbm90IHJ1biBzaGVsbCBjb21tYW5kOiAlcyIs IGFyZ3ZbMF0sCisJCQkJCSB3YWl0X3Jlc3VsdF90b19zdHIocmMpKTsKIAkJcmV0dXJuIGZh bHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9i aW4vcHNxbC9jb21tYW5kLmMKaW5kZXggYWI2MTNkZDQ5ZTBhLi42OTU4NTYyZTMzNDAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Nv bW1hbmQuYwpAQCAtMjY5NCwxNCArMjY5NCwyNCBAQCBleGVjX2NvbW1hbmRfd3JpdGUoUHNx bFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJZnByaW50 ZihmZCwgIiVzXG4iLCBwcmV2aW91c19idWYtPmRhdGEpOwogCiAJCQlpZiAoaXNfcGlwZSkK KwkJCXsKIAkJCQlyZXN1bHQgPSBwY2xvc2UoZmQpOworCisJCQkJaWYgKHJlc3VsdCAhPSAw KQorCQkJCXsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJXMiLCBmbmFtZSwgd2FpdF9yZXN1 bHRfdG9fc3RyKHJlc3VsdCkpOworCQkJCQlzdGF0dXMgPSBQU1FMX0NNRF9FUlJPUjsKKwkJ CQl9CisJCQl9CiAJCQllbHNlCisJCQl7CiAJCQkJcmVzdWx0ID0gZmNsb3NlKGZkKTsKIAot CQkJaWYgKHJlc3VsdCA9PSBFT0YpCi0JCQl7Ci0JCQkJcGdfbG9nX2Vycm9yKCIlczogJW0i LCBmbmFtZSk7Ci0JCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CisJCQkJaWYgKHJlc3Vs dCA9PSBFT0YpCisJCQkJeworCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZuYW1lKTsK KwkJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CisJCQkJfQogCQkJfQogCQl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24u YwppbmRleCA4NjRmMTk1OTkyZjUuLmY0NjUyNGI0Y2ZkOSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwpAQCAtMTAzLDYg KzEwMyw3IEBAIHNldFFGb3V0KGNvbnN0IGNoYXIgKmZuYW1lKQogCWlmIChwc2V0LnF1ZXJ5 Rm91dCAmJiBwc2V0LnF1ZXJ5Rm91dCAhPSBzdGRvdXQgJiYgcHNldC5xdWVyeUZvdXQgIT0g c3RkZXJyKQogCXsKIAkJaWYgKHBzZXQucXVlcnlGb3V0UGlwZSkKKwkJCS8vIEZJWE1FPwog CQkJcGNsb3NlKHBzZXQucXVlcnlGb3V0KTsKIAkJZWxzZQogCQkJZmNsb3NlKHBzZXQucXVl cnlGb3V0KTsKQEAgLTE2MzUsNiArMTYzNiw3IEBAIEV4ZWNRdWVyeUFuZFByb2Nlc3NSZXN1 bHRzKGNvbnN0IGNoYXIgKnF1ZXJ5LAogCXsKIAkJaWYgKGdmaWxlX2lzX3BpcGUpCiAJCXsK KwkJCS8vIEZJWE1FPwogCQkJcGNsb3NlKGdmaWxlX2ZvdXQpOwogCQkJcmVzdG9yZV9zaWdw aXBlX3RyYXAoKTsKIAkJfQpAQCAtMTg1MSw2ICsxODUzLDcgQEAgRXhlY1F1ZXJ5VXNpbmdD dXJzb3IoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCQkvKiBj bG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8KIAkJaWYgKGlzX3BpcGUpCiAJCXsKKwkJ CS8vIEZJWE1FPwogCQkJcGNsb3NlKGZvdXQpOwogCQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAo KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi93YWl0X2Vycm9yLmMgYi9zcmMvY29t bW9uL3dhaXRfZXJyb3IuYwppbmRleCBhNzc2ZjI5MDFlOGUuLjgzOTdlMjM4YjJiNCAxMDA2 NDQKLS0tIGEvc3JjL2NvbW1vbi93YWl0X2Vycm9yLmMKKysrIGIvc3JjL2NvbW1vbi93YWl0 X2Vycm9yLmMKQEAgLTMzLDcgKzMzLDExIEBAIHdhaXRfcmVzdWx0X3RvX3N0cihpbnQgZXhp dHN0YXR1cykKIHsKIAljaGFyCQlzdHJbNTEyXTsKIAotCWlmIChXSUZFWElURUQoZXhpdHN0 YXR1cykpCisJaWYgKGV4aXRzdGF0dXMgPT0gLTEpCisJeworCQlzbnByaW50ZihzdHIsIHNp emVvZihzdHIpLCAiJW0iKTsKKwl9CisJZWxzZSBpZiAoV0lGRVhJVEVEKGV4aXRzdGF0dXMp KQogCXsKIAkJLyoKIAkJICogR2l2ZSBtb3JlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgZm9y IHNvbWUgY29tbW9uIGV4aXQgY29kZXMgdGhhdAotLSAKMi4zNy4zCgo= --------------L6aquR9j2tAy12BhjzFfY5eF--