From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) by sourceware.org (Postfix) with ESMTPS id CE4683858C5F; Thu, 29 Feb 2024 05:29:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CE4683858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CE4683858C5F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::22d ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709184552; cv=none; b=opY4MPdXUIA2TEyro0YMZLDpUCyEZy3MUFfZLOL5m6afpA3Cb34q5QfcqGy9Js7lgYTF/zHcQXV1hG8sfiA6Tyu7Nt4L3ZCyHdlXSJhhM36Chb5QA9AK/ARrbhWiO3rfc2G2tWK9SHfW6cZ12j1nAieEaykI6Cwa8E8wZGO6hOI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709184552; c=relaxed/simple; bh=ihJ/hU3LMmYZ+Cq6H8xbarTONSn2Ys7pRKrEjwjWuOc=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=CmoyFV3xqPYajsHsSb/QC2/PwNpSsYEhOxlw8qx3iJiWuN3bnHIsSzai7/GWTp01UCqVvP2FciRURpRh6krRBGl/E6qLpMtL1vNRidh5bQYRDLwZSaStCr81dZpzzohjSHADQV+pZtE+nEpUVTZaTABbIbQG7xk+g5Qeke86jsY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oi1-x22d.google.com with SMTP id 5614622812f47-3bc21303a35so144826b6e.0; Wed, 28 Feb 2024 21:29:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709184548; x=1709789348; darn=gcc.gnu.org; h=autocrypt:subject:from:cc:to:content-language:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=jls1VfvMXSD/2LYVppPjbkZhCoLzpta4m/TzEYw72t0=; b=NDIsBbXUCUFaahAdVYLJtEe63I/Vo+YFPW8uaq02KClLIP476hBU/pqUgwzkR/FE1F lJABrHm2GDGB2NfC6aCCwCCYHe+q41XyzhseL/hG7w1fTXYscNscch0ub0e4dNMkC0mI uMpZlszMoQD9ZhB8pwQ6hqdA6rwfbwGyzOCm46XEbbfI7DgN/x7nRtUFV8rHmbBb/CgK JDKUHAT0RXOtxFLtO9wXE+qnuFXAYkVlU6JXjaRqFHXl766iOfUivZcr8dr4VTC8oY7p PnPDgqecn6zaSP3nWJS/4jOmCXtxaNGtZVaULQ9wJDiHFsCJsf37RmbXLlex5/L3pKqU uMrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709184548; x=1709789348; h=autocrypt:subject:from:cc:to:content-language:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=jls1VfvMXSD/2LYVppPjbkZhCoLzpta4m/TzEYw72t0=; b=nrzhSeB19Kvb8CRcfN3cclQxM0gvunD47nASrrgRgXqnDX5CHoIpntArT+CtGwOTuB KzDEqRXHXQzpepuhLjhGzi/Z2VblfVCMG5rnFGSwn4QT1qdZ4u3kr7crDDU65IfqLvqL hRWefVGsSuHrjHIpmYeuTEzy8lPZBzB7lG9cOgZPCfp7IiPz7QPde0zxfsG2H8M6/pTt edB5aw41xiK1FbrTzO1xALkSoa6AJT2DXO9hyL92tUH9lvrKlAOm3wcxVAwPxbjrJyoZ fSyFG8sq9nPyiIrh8lTFVDdeEkTqrrKl0n4N26QS+JPErArebeGEL1YqdLZ8pNhKcuyZ beTQ== X-Gm-Message-State: AOJu0Yx7QWbQfOkLuOV7n2Le/Vrv+KFHb83w15J5Puw2iWczRI1vn8WK Aic/5VJD9w8N6mt7bP+zwsZZkMDul9neTUYZW90eXaXNjJnhm8JneA6E9hOd X-Google-Smtp-Source: AGHT+IEtDQ3dzEIksEmqqRTU1QFWXRstBwYr5cR4g0ZPNPwZbhAAUJ4POSDoRPtdQOlSKaACKRfCkQ== X-Received: by 2002:a05:6870:d28b:b0:21f:8fde:1fcd with SMTP id d11-20020a056870d28b00b0021f8fde1fcdmr995461oae.0.1709184547708; Wed, 28 Feb 2024 21:29:07 -0800 (PST) Received: from [192.168.1.20] ([50.37.177.113]) by smtp.gmail.com with ESMTPSA id i19-20020aa787d3000000b006e4e19f3539sm355160pfo.86.2024.02.28.21.29.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 28 Feb 2024 21:29:07 -0800 (PST) Content-Type: multipart/mixed; boundary="------------nEaj1rQ6uKxaG7fiP0hCYxkN" Message-ID: <943c3685-c4d4-4f22-8b65-6336f8770043@gmail.com> Date: Wed, 28 Feb 2024 21:29:06 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: gfortran Cc: gcc-patches From: Jerry D Subject: [patch, libgfortran] Part 2: PR105456 Child I/O does not propage iostat Autocrypt: addr=jvdelisle2@gmail.com; keydata= xjMEY5TlkxYJKwYBBAHaRw8BAQdAyrkRDhmJhSTTlV/50gJLlvliU6/Lm5C9ViKV8T9y1GnN HkplcnJ5IEQgPGp2ZGVsaXNsZTJAZ21haWwuY29tPsKJBBMWCAAxFiEEOFR0TS0390uh8dRV uWXAJaWpwWoFAmOU5ZMCGwMECwkIBwUVCAkKCwUWAgMBAAAKCRC5ZcAlpanBalsJAP4wdCiH 2Of9oZv1QWgZ/AVdbWFM3Fv47/WZQHOXfoZ9HgD6AkXrKeJ+6usST7PEaDJjptaViT1fLiYY V/6XaOKSsgLOOARjlOWTEgorBgEEAZdVAQUBAQdAdA7PczYnl07vnOT9oP/wvvMDd4HP09Zl g3LzwXQJWT8DAQgHwngEGBYIACAWIQQ4VHRNLTf3S6Hx1FW5ZcAlpanBagUCY5TlkwIbDAAK CRC5ZcAlpanBasF/AQCa5WjlsVpLsEiggZyT18MOJNAdeRd7wkGDUrwedHrvawD/cE1H+/Ms L1ZwvQiLfGdx8crigQqWTQyos4kH8Wx82wc= X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------nEaj1rQ6uKxaG7fiP0hCYxkN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The attached patch adds the error checks similar to the first patch previously committed. I noticed a redundancy in some defines MSGLEN and IOMSG_LEN so I consolidated this to one define in io.h. This is just cleanup stuff. I have added test cases for each of the places where UDTIO is done in the library. Regressions tested on x86_64. OK for trunk? Regards, Jerry commit 640991bd6b83df4197b2eaec63d1e0e695e48b75 Author: Jerry DeLisle Date: Wed Feb 28 20:51:06 2024 -0800 Fortran: Add user defined error messages for UDTIO. The defines IOMSG_LEN and MSGLEN were redundant so these are combined into IOMSG_LEN as defined in io.h. The remainder of the patch adds checks for when a user defined derived type IO procedure sets the IOSTAT or IOMSG variables independent of the librrary defined I/O messages. PR libfortran/105456 libgfortran/ChangeLog: * io/io.h (IOMSG_LEN): Moved to here. * io/list_read.c (MSGLEN): Removed MSGLEN. (convert_integer): Changed MSGLEN to IOMSG_LEN. (parse_repeat): Likewise. (read_logical): Likewise. (read_integer): Likewise. (read_character): Likewise. (parse_real): Likewise. (read_complex): Likewise. (read_real): Likewise. (check_type): Likewise. (list_formatted_read_scalar): Adjust to IOMSG_LEN. (nml_read_obj): Add user defined error message. * io/transfer.c (unformatted_read): Add user defined error message. (unformatted_write): Add user defined error message. (formatted_transfer_scalar_read): Add user defined error message. (formatted_transfer_scalar_write): Add user defined error message. * io/write.c (list_formatted_write_scalar): Add user defined error message. (nml_write_obj): Add user defined error message. gcc/testsuite/ChangeLog: * gfortran.dg/pr105456-nmlr.f90: New test. * gfortran.dg/pr105456-nmlw.f90: New test. * gfortran.dg/pr105456-ruf.f90: New test. * gfortran.dg/pr105456-wf.f90: New test. * gfortran.dg/pr105456-wuf.f90: New test. --------------nEaj1rQ6uKxaG7fiP0hCYxkN Content-Type: text/x-patch; charset=UTF-8; name="pr105456-3.diff" Content-Disposition: attachment; filename="pr105456-3.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDU0NTYtbm1sci5m OTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTA1NDU2LW5tbHIuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Y2U1ZDA4MjEzMwotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDU0NTYtbm1sci5m OTAKQEAgLTAsMCArMSw2MCBAQAorISB7IGRnLWRvIHJ1biB9CishIHsgZGctc2hvdWxkZmFp bCAiVGhlIHVzZXJzIG1lc3NhZ2UiIH0KK21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUKKyAg dHlwZSA6OiB0CisgICAgY2hhcmFjdGVyIDo6IGMKKyAgICBpbnRlZ2VyIDo6IGsKKyAgY29u dGFpbnMKKyAgICBwcm9jZWR1cmUgOjogd3JpdGVfZm9ybWF0dGVkCisgICAgZ2VuZXJpYyA6 OiB3cml0ZShmb3JtYXR0ZWQpID0+IHdyaXRlX2Zvcm1hdHRlZAorICAgIHByb2NlZHVyZSA6 OiByZWFkX2Zvcm1hdHRlZAorICAgIGdlbmVyaWMgOjogcmVhZChmb3JtYXR0ZWQpID0+IHJl YWRfZm9ybWF0dGVkCisgIGVuZCB0eXBlCitjb250YWlucworICBzdWJyb3V0aW5lIHdyaXRl X2Zvcm1hdHRlZChkdHYsIHVuaXQsIGlvdHlwZSwgdl9saXN0LCBpb3N0YXQsIGlvbXNnKQor ICAgIGNsYXNzKHQpLCBpbnRlbnQoaW4pIDo6IGR0dgorICAgIGludGVnZXIsIGludGVudChp bikgOjogdW5pdAorICAgIGNoYXJhY3RlcigqKSwgaW50ZW50KGluKSA6OiBpb3R5cGUKKyAg ICBpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IHZfbGlzdCg6KQorICAgIGludGVnZXIsIGludGVu dChvdXQpIDo6IGlvc3RhdAorICAgIGNoYXJhY3RlcigqKSwgaW50ZW50KGlub3V0KSA6OiBp b21zZworICAgIGlmIChpb3R5cGUuZXEuIk5BTUVMSVNUIikgdGhlbgorICAgICAgd3JpdGUg KHVuaXQsICcoYTEsYTEsaTMpJykgZHR2JWMsJywnLCBkdHYlaworICAgIGVsc2UKKyAgICAg IHdyaXRlICh1bml0LCopIGR0diVjLCBkdHYlaworICAgIGVuZCBpZgorICBlbmQgc3Vicm91 dGluZQorICBzdWJyb3V0aW5lIHJlYWRfZm9ybWF0dGVkKGR0diwgdW5pdCwgaW90eXBlLCB2 X2xpc3QsIGlvc3RhdCwgaW9tc2cpCisgICAgY2xhc3ModCksIGludGVudChpbm91dCkgOjog ZHR2CisgICAgaW50ZWdlciwgaW50ZW50KGluKSA6OiB1bml0CisgICAgY2hhcmFjdGVyKCop LCBpbnRlbnQoaW4pIDo6IGlvdHlwZQorICAgIGludGVnZXIsIGludGVudChpbikgOjogdl9s aXN0KDopCisgICAgaW50ZWdlciwgaW50ZW50KG91dCkgOjogaW9zdGF0CisgICAgY2hhcmFj dGVyKCopLCBpbnRlbnQoaW5vdXQpIDo6IGlvbXNnCisgICAgY2hhcmFjdGVyIDo6IGNvbW1h CisgICAgaWYgKGlvdHlwZS5lcS4iTkFNRUxJU1QiKSB0aGVuCisgICAgICByZWFkICh1bml0 LCAnKGExLGExLGkzKScpIGR0diVjLCBjb21tYSwgZHR2JWsKKyAgICBlbHNlCisgICAgICBy ZWFkICh1bml0LCopIGR0diVjLCBjb21tYSwgZHR2JWsKKyAgICBlbmRpZgorICAgIGlvc3Rh dCA9IDQyCisgICAgaW9tc2cgPSAiVGhlIHVzZXJzIG1lc3NhZ2UiCisgICAgaWYgKGNvbW1h IC89ICcsJykgU1RPUCAxCisgIGVuZCBzdWJyb3V0aW5lCitlbmQgbW9kdWxlCisKK3Byb2dy YW0gcAorICB1c2UgbQorICBpbXBsaWNpdCBub25lCisgIGNoYXJhY3RlcihsZW49NTApIDo6 IGJ1ZmZlcgorICB0eXBlKHQpIDo6IHgKKyAgbmFtZWxpc3QgL25tbC8geAorICB4ID0gdCgn YScsIDUpCisgIHdyaXRlIChidWZmZXIsIG5tbCkKKyAgaWYgKGJ1ZmZlci5uZS4nICZOTUwg IFg9YSwgIDUgIC8nKSBTVE9QIDEKKyAgeCA9IHQoJ3gnLCAwKQorICByZWFkIChidWZmZXIs IG5tbCkKKyAgaWYgKHglYy5uZS4nYScub3IuIHglay5uZS41KSBTVE9QIDIKK2VuZAorISB7 IGRnLW91dHB1dCAiRm9ydHJhbiBydW50aW1lIGVycm9yOiBUaGUgdXNlcnMgbWVzc2FnZSIg fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNTQ1Ni1ubWx3 LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDU0NTYtbm1sdy5mOTAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjNDk2ZTYxMWY0Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNTQ1Ni1ubWx3 LmY5MApAQCAtMCwwICsxLDYwIEBACishIHsgZGctZG8gcnVuIH0KKyEgeyBkZy1zaG91bGRm YWlsICJUaGUgdXNlcnMgbWVzc2FnZSIgfQorbW9kdWxlIG0KKyAgaW1wbGljaXQgbm9uZQor ICB0eXBlIDo6IHQKKyAgICBjaGFyYWN0ZXIgOjogYworICAgIGludGVnZXIgOjogaworICBj b250YWlucworICAgIHByb2NlZHVyZSA6OiB3cml0ZV9mb3JtYXR0ZWQKKyAgICBnZW5lcmlj IDo6IHdyaXRlKGZvcm1hdHRlZCkgPT4gd3JpdGVfZm9ybWF0dGVkCisgICAgcHJvY2VkdXJl IDo6IHJlYWRfZm9ybWF0dGVkCisgICAgZ2VuZXJpYyA6OiByZWFkKGZvcm1hdHRlZCkgPT4g cmVhZF9mb3JtYXR0ZWQKKyAgZW5kIHR5cGUKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgd3Jp dGVfZm9ybWF0dGVkKGR0diwgdW5pdCwgaW90eXBlLCB2X2xpc3QsIGlvc3RhdCwgaW9tc2cp CisgICAgY2xhc3ModCksIGludGVudChpbikgOjogZHR2CisgICAgaW50ZWdlciwgaW50ZW50 KGluKSA6OiB1bml0CisgICAgY2hhcmFjdGVyKCopLCBpbnRlbnQoaW4pIDo6IGlvdHlwZQor ICAgIGludGVnZXIsIGludGVudChpbikgOjogdl9saXN0KDopCisgICAgaW50ZWdlciwgaW50 ZW50KG91dCkgOjogaW9zdGF0CisgICAgY2hhcmFjdGVyKCopLCBpbnRlbnQoaW5vdXQpIDo6 IGlvbXNnCisgICAgaWYgKGlvdHlwZS5lcS4iTkFNRUxJU1QiKSB0aGVuCisgICAgICB3cml0 ZSAodW5pdCwgJyhhMSxhMSxpMyknKSBkdHYlYywnLCcsIGR0diVrCisgICAgZWxzZQorICAg ICAgd3JpdGUgKHVuaXQsKikgZHR2JWMsIGR0diVrCisgICAgZW5kIGlmCisgICAgaW9zdGF0 ID0gNDIKKyAgICBpb21zZyA9ICJUaGUgdXNlcnMgbWVzc2FnZSIKKyAgZW5kIHN1YnJvdXRp bmUKKyAgc3Vicm91dGluZSByZWFkX2Zvcm1hdHRlZChkdHYsIHVuaXQsIGlvdHlwZSwgdl9s aXN0LCBpb3N0YXQsIGlvbXNnKQorICAgIGNsYXNzKHQpLCBpbnRlbnQoaW5vdXQpIDo6IGR0 dgorICAgIGludGVnZXIsIGludGVudChpbikgOjogdW5pdAorICAgIGNoYXJhY3RlcigqKSwg aW50ZW50KGluKSA6OiBpb3R5cGUKKyAgICBpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IHZfbGlz dCg6KQorICAgIGludGVnZXIsIGludGVudChvdXQpIDo6IGlvc3RhdAorICAgIGNoYXJhY3Rl cigqKSwgaW50ZW50KGlub3V0KSA6OiBpb21zZworICAgIGNoYXJhY3RlciA6OiBjb21tYQor ICAgIGlmIChpb3R5cGUuZXEuIk5BTUVMSVNUIikgdGhlbgorICAgICAgcmVhZCAodW5pdCwg JyhhMSxhMSxpMyknKSBkdHYlYywgY29tbWEsIGR0diVrCisgICAgZWxzZQorICAgICAgcmVh ZCAodW5pdCwqKSBkdHYlYywgY29tbWEsIGR0diVrCisgICAgZW5kIGlmCisgICAgaWYgKGNv bW1hIC89ICcsJykgU1RPUCAxCisgIGVuZCBzdWJyb3V0aW5lCitlbmQgbW9kdWxlCisKK3By b2dyYW0gcAorICB1c2UgbQorICBpbXBsaWNpdCBub25lCisgIGNoYXJhY3RlcihsZW49NTAp IDo6IGJ1ZmZlcgorICB0eXBlKHQpIDo6IHgKKyAgbmFtZWxpc3QgL25tbC8geAorICB4ID0g dCgnYScsIDUpCisgIHdyaXRlIChidWZmZXIsIG5tbCkKKyAgaWYgKGJ1ZmZlci5uZS4nICZO TUwgIFg9YSwgIDUgIC8nKSBTVE9QIDEKKyAgeCA9IHQoJ3gnLCAwKQorICByZWFkIChidWZm ZXIsIG5tbCkKKyAgaWYgKHglYy5uZS4nYScub3IuIHglay5uZS41KSBTVE9QIDIKK2VuZAor ISB7IGRnLW91dHB1dCAiRm9ydHJhbiBydW50aW1lIGVycm9yOiBUaGUgdXNlcnMgbWVzc2Fn ZSIgfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNTQ1Ni1y dWYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEwNTQ1Ni1ydWYuZjkwCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMTc2YzRhYTE4YwotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDU0NTYtcnVm LmY5MApAQCAtMCwwICsxLDM2IEBACishIHsgZGctZG8gcnVuIH0KKyEgeyBkZy1zaG91bGRm YWlsICJUaGUgdXNlcnMgbWVzc2FnZSIgfQorbW9kdWxlIHNrMQorICBpbXBsaWNpdCBub25l CisgIHR5cGUgY2hhcgorICAgICBjaGFyYWN0ZXIgOjogY2gKKyAgZW5kIHR5cGUgY2hhcgor ICBpbnRlcmZhY2UgcmVhZCAodW5mb3JtYXR0ZWQpCisgICAgIG1vZHVsZSBwcm9jZWR1cmUg cmVhZF91bmZvcm1hdHRlZAorICBlbmQgaW50ZXJmYWNlIHJlYWQgKHVuZm9ybWF0dGVkKQor Y29udGFpbnMKKyAgc3Vicm91dGluZSByZWFkX3VuZm9ybWF0dGVkIChkdHYsIHVuaXQsIHBp b3N0YXQsIHBpb21zZykKKyAgICBjbGFzcyAoY2hhciksIGludGVudChpbm91dCkgOjogZHR2 CisgICAgaW50ZWdlciwgaW50ZW50KGluKSA6OiB1bml0CisgICAgIWNoYXJhY3RlciAobGVu PSopLCBpbnRlbnQoaW4pIDo6IGlvdHlwZQorICAgICFpbnRlZ2VyLCBpbnRlbnQoaW4pIDo6 IHZsaXN0KDopCisgICAgaW50ZWdlciwgaW50ZW50KG91dCkgOjogcGlvc3RhdAorICAgIGNo YXJhY3RlciAobGVuPSopLCBpbnRlbnQoaW5vdXQpIDo6IHBpb21zZworICAgIHJlYWQgKHVu aXQsZm10PScoQTEpJywgYWR2YW5jZT0ibm8iLCBpb3N0YXQ9cGlvc3RhdCwgaW9tc2c9cGlv bXNnKSBkdHYlY2gKKyAgICBwaW9zdGF0ID0gNDIKKyAgICBwaW9tc2c9IlRoZSB1c2VycyBt ZXNzYWdlIgorICBlbmQgc3Vicm91dGluZSByZWFkX3VuZm9ybWF0dGVkCitlbmQgbW9kdWxl IHNrMQorCitwcm9ncmFtIHNraXAxCisgIHVzZSBzazEKKyAgaW1wbGljaXQgbm9uZQorICB0 eXBlIChjaGFyKSA6OiB4CisgIHglY2ggPSAnWCcKKyAgb3BlbiAoMTAsIGZvcm09J3VuZm9y bWF0dGVkJywgc3RhdHVzPSdzY3JhdGNoJykKKyAgd3JpdGUgKDEwKSAnWCcKKyAgcmV3aW5k ICgxMCkKKyAgcmVhZCAoMTApIHgKK2VuZCBwcm9ncmFtIHNraXAxCishIHsgZGctb3V0cHV0 ICIuKih1bml0ID0gMTAsIGZpbGUgPSAuKikiIH0KKyEgeyBkZy1vdXRwdXQgIkZvcnRyYW4g cnVudGltZSBlcnJvcjogVGhlIHVzZXJzIG1lc3NhZ2UiIH0KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcHIxMDU0NTYtd2YuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9wcjEwNTQ1Ni13Zi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmYxYzUzNTBjYzAwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9wcjEwNTQ1Ni13Zi5mOTAKQEAgLTAsMCArMSwzNCBAQAorISB7 IGRnLWRvIHJ1biB9CishIHsgZGctc2hvdWxkZmFpbCAiVGhlIHVzZXJzIG1lc3NhZ2UiIH0K K21vZHVsZSBzazEKKyAgaW1wbGljaXQgbm9uZQorICB0eXBlIGNoYXIKKyAgICAgY2hhcmFj dGVyIDo6IGNoCisgIGVuZCB0eXBlIGNoYXIKKyAgaW50ZXJmYWNlIHdyaXRlIChmb3JtYXR0 ZWQpCisgICAgIG1vZHVsZSBwcm9jZWR1cmUgd3JpdGVfZm9ybWF0dGVkCisgIGVuZCBpbnRl cmZhY2Ugd3JpdGUgKGZvcm1hdHRlZCkKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgd3JpdGVf Zm9ybWF0dGVkIChkdHYsIHVuaXQsIGlvdHlwZSwgdmxpc3QsIHBpb3N0YXQsIHBpb21zZykK KyAgICBjbGFzcyAoY2hhciksIGludGVudChpbikgOjogZHR2CisgICAgaW50ZWdlciwgaW50 ZW50KGluKSA6OiB1bml0CisgICAgY2hhcmFjdGVyIChsZW49KiksIGludGVudChpbikgOjog aW90eXBlCisgICAgaW50ZWdlciwgaW50ZW50KGluKSA6OiB2bGlzdCg6KQorICAgIGludGVn ZXIsIGludGVudChvdXQpIDo6IHBpb3N0YXQKKyAgICBjaGFyYWN0ZXIgKGxlbj0qKSwgaW50 ZW50KGlub3V0KSA6OiBwaW9tc2cKKyAgICB3cml0ZSAodW5pdCxmbXQ9JyhBMSknLCBhZHZh bmNlPSJubyIsIGlvc3RhdD1waW9zdGF0LCBpb21zZz1waW9tc2cpIGR0diVjaAorICAgIHBp b3N0YXQgPSA0MgorICAgIHBpb21zZz0iVGhlIHVzZXJzIG1lc3NhZ2UiCisgIGVuZCBzdWJy b3V0aW5lIHdyaXRlX2Zvcm1hdHRlZAorZW5kIG1vZHVsZSBzazEKKworcHJvZ3JhbSBza2lw MQorICB1c2Ugc2sxCisgIGltcGxpY2l0IG5vbmUKKyAgdHlwZSAoY2hhcikgOjogeAorICB4 JWNoID0gJ1gnCisgIG9wZW4gKDEwLCBzdGF0dXM9J3NjcmF0Y2gnKQorICB3cml0ZSAoMTAs KikgeAorZW5kIHByb2dyYW0gc2tpcDEKKyEgeyBkZy1vdXRwdXQgIi4qKHVuaXQgPSAxMCwg ZmlsZSA9IC4qKSIgfQorISB7IGRnLW91dHB1dCAiRm9ydHJhbiBydW50aW1lIGVycm9yOiBU aGUgdXNlcnMgbWVzc2FnZSIgfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9wcjEwNTQ1Ni13dWYuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9wcjEw NTQ1Ni13dWYuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4y YjYzN2I3MDRhNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvcHIxMDU0NTYtd3VmLmY5MApAQCAtMCwwICsxLDM0IEBACishIHsgZGctZG8gcnVuIH0K KyEgeyBkZy1zaG91bGRmYWlsICJUaGUgdXNlcnMgbWVzc2FnZSIgfQorbW9kdWxlIHNrMQor ICBpbXBsaWNpdCBub25lCisgIHR5cGUgY2hhcgorICAgICBjaGFyYWN0ZXIgOjogY2gKKyAg ZW5kIHR5cGUgY2hhcgorICBpbnRlcmZhY2Ugd3JpdGUgKHVuZm9ybWF0dGVkKQorICAgICBt b2R1bGUgcHJvY2VkdXJlIHdyaXRlX3VuZm9ybWF0dGVkCisgIGVuZCBpbnRlcmZhY2Ugd3Jp dGUgKHVuZm9ybWF0dGVkKQorY29udGFpbnMKKyAgc3Vicm91dGluZSB3cml0ZV91bmZvcm1h dHRlZCAoZHR2LCB1bml0LCBwaW9zdGF0LCBwaW9tc2cpCisgICAgY2xhc3MgKGNoYXIpLCBp bnRlbnQoaW4pIDo6IGR0dgorICAgIGludGVnZXIsIGludGVudChpbikgOjogdW5pdAorICAg ICFjaGFyYWN0ZXIgKGxlbj0qKSwgaW50ZW50KGluKSA6OiBpb3R5cGUKKyAgICAhaW50ZWdl ciwgaW50ZW50KGluKSA6OiB2bGlzdCg6KQorICAgIGludGVnZXIsIGludGVudChvdXQpIDo6 IHBpb3N0YXQKKyAgICBjaGFyYWN0ZXIgKGxlbj0qKSwgaW50ZW50KGlub3V0KSA6OiBwaW9t c2cKKyAgICB3cml0ZSAodW5pdCxmbXQ9JyhBMSknLCBhZHZhbmNlPSJubyIsIGlvc3RhdD1w aW9zdGF0LCBpb21zZz1waW9tc2cpIGR0diVjaAorICAgIHBpb3N0YXQgPSA0MgorICAgIHBp b21zZz0iVGhlIHVzZXJzIG1lc3NhZ2UiCisgIGVuZCBzdWJyb3V0aW5lIHdyaXRlX3VuZm9y bWF0dGVkCitlbmQgbW9kdWxlIHNrMQorCitwcm9ncmFtIHNraXAxCisgIHVzZSBzazEKKyAg aW1wbGljaXQgbm9uZQorICB0eXBlIChjaGFyKSA6OiB4CisgIHglY2ggPSAnWCcKKyAgb3Bl biAoMTAsIGZvcm09J3VuZm9ybWF0dGVkJywgc3RhdHVzPSdzY3JhdGNoJykKKyAgd3JpdGUg KDEwKSB4CitlbmQgcHJvZ3JhbSBza2lwMQorISB7IGRnLW91dHB1dCAiLioodW5pdCA9IDEw LCBmaWxlID0gLiopIiB9CishIHsgZGctb3V0cHV0ICJGb3J0cmFuIHJ1bnRpbWUgZXJyb3I6 IFRoZSB1c2VycyBtZXNzYWdlIiB9CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9pby9pby5o IGIvbGliZ2ZvcnRyYW4vaW8vaW8uaAppbmRleCA1OWJjMTllZTgxNS4uMWMyMzY3NmNjNGMg MTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL2lvLmgKKysrIGIvbGliZ2ZvcnRyYW4vaW8v aW8uaApAQCAtMzQsNiArMzQsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZ SU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKIAogI2RlZmluZSBnY2Nf dW5yZWFjaGFibGUoKSBfX2J1aWx0aW5fdW5yZWFjaGFibGUgKCkKIAorLyogVXNlZCBmb3Ig YnVpbGRpbmcgZXJyb3IgbWVzc2FnZSBzdHJpbmdzLiAgKi8KKyNkZWZpbmUgSU9NU0dfTEVO IDI1NgorCiAvKiBQT1NJWCAyMDA4IHNwZWNpZmllcyB0aGF0IHRoZSBleHRlbmRlZCBsb2Nh bGUgc3R1ZmYgaXMgZm91bmQgaW4KICAgIGxvY2FsZS5oLCBidXQgc29tZSBzeXN0ZW1zIGhh dmUgdGhlbSBpbiB4bG9jYWxlLmguICAqLwogCkBAIC05OSwxMCArMTAyLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgYXJyYXlfbG9vcF9zcGVjCiB9CiBhcnJheV9sb29wX3NwZWM7CiAKLS8qIFVz ZXIgZGVmaW5lZCBpbnB1dC9vdXRwdXQgaW9tc2cgbGVuZ3RoLiAqLwotCi0jZGVmaW5lIElP TVNHX0xFTiAyNTYKLQogLyogU3Vicm91dGluZSBmb3JtYXR0ZWRfZHRpbyAoc3RydWN0LCB1 bml0LCBpb3R5cGUsIHZfbGlzdCwgaW9zdGF0LAogCQkJICAgICAgaW9tc2csIChfaW90eXBl KSwgKF9pb21zZykpICAqLwogdHlwZWRlZiB2b2lkICgqZm9ybWF0dGVkX2R0aW8pKHZvaWQg KiwgR0ZDX0lOVEVHRVJfNCAqLCBjaGFyICosCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9p by9saXN0X3JlYWQuYyBiL2xpYmdmb3J0cmFuL2lvL2xpc3RfcmVhZC5jCmluZGV4IGVlM2Fi NzEzNTE5Li5kYjdkNTNiNjlkOCAxMDA2NDQKLS0tIGEvbGliZ2ZvcnRyYW4vaW8vbGlzdF9y ZWFkLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW8vbGlzdF9yZWFkLmMKQEAgLTY0LDEwICs2NCw2 IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKIAogI2RlZmluZSBNQVhfUkVQRUFU IDIwMDAwMDAwMAogCi0KLSNkZWZpbmUgTVNHTEVOIDEwMAotCi0KIC8qIFdyYXBwZXJzIGZv ciBjYWxsaW5nIHRoZSBjdXJyZW50IHdvcmtlciBmdW5jdGlvbnMuICAqLwogCiAjZGVmaW5l IG5leHRfY2hhcihkdHApICgoZHRwKS0+dS5wLmN1cnJlbnRfdW5pdC0+bmV4dF9jaGFyX2Zu X3B0ciAoZHRwKSkKQEAgLTYzMiw3ICs2MjgsNyBAQCBubWxfYmFkX3JldHVybiAoc3RfcGFy YW1ldGVyX2R0ICpkdHAsIGNoYXIgYykKIHN0YXRpYyBpbnQKIGNvbnZlcnRfaW50ZWdlciAo c3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5ndGgsIGludCBuZWdhdGl2ZSkKIHsKLSAg Y2hhciBjLCAqYnVmZmVyLCBtZXNzYWdlW01TR0xFTl07CisgIGNoYXIgYywgKmJ1ZmZlciwg bWVzc2FnZVtJT01TR19MRU5dOwogICBpbnQgbTsKICAgR0ZDX1VJTlRFR0VSX0xBUkdFU1Qg diwgbWF4LCBtYXgxMDsKICAgR0ZDX0lOVEVHRVJfTEFSR0VTVCB2YWx1ZTsKQEAgLTY4Miw3 ICs2NzgsNyBAQCBjb252ZXJ0X2ludGVnZXIgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQg bGVuZ3RoLCBpbnQgbmVnYXRpdmUpCiAKICAgICAgIGlmIChkdHAtPnUucC5yZXBlYXRfY291 bnQgPT0gMCkKIAl7Ci0JICBzbnByaW50ZiAobWVzc2FnZSwgTVNHTEVOLCAiWmVybyByZXBl YXQgY291bnQgaW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwKKwkgIHNucHJpbnRmIChtZXNz YWdlLCBJT01TR19MRU4sICJaZXJvIHJlcGVhdCBjb3VudCBpbiBpdGVtICVkIG9mIGxpc3Qg aW5wdXQiLAogCQkgICBkdHAtPnUucC5pdGVtX2NvdW50KTsKIAogCSAgZ2VuZXJhdGVfZXJy b3IgKCZkdHAtPmNvbW1vbiwgTElCRVJST1JfUkVBRF9WQUxVRSwgbWVzc2FnZSk7CkBAIC02 OTUsMTAgKzY5MSwxMCBAQCBjb252ZXJ0X2ludGVnZXIgKHN0X3BhcmFtZXRlcl9kdCAqZHRw LCBpbnQgbGVuZ3RoLCBpbnQgbmVnYXRpdmUpCiAKICBvdmVyZmxvdzoKICAgaWYgKGxlbmd0 aCA9PSAtMSkKLSAgICBzbnByaW50ZiAobWVzc2FnZSwgTVNHTEVOLCAiUmVwZWF0IGNvdW50 IG92ZXJmbG93IGluIGl0ZW0gJWQgb2YgbGlzdCBpbnB1dCIsCisgICAgc25wcmludGYgKG1l c3NhZ2UsIElPTVNHX0xFTiwgIlJlcGVhdCBjb3VudCBvdmVyZmxvdyBpbiBpdGVtICVkIG9m IGxpc3QgaW5wdXQiLAogCSAgICAgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAgIGVsc2UKLSAg ICBzbnByaW50ZiAobWVzc2FnZSwgTVNHTEVOLCAiSW50ZWdlciBvdmVyZmxvdyB3aGlsZSBy ZWFkaW5nIGl0ZW0gJWQiLAorICAgIHNucHJpbnRmIChtZXNzYWdlLCBJT01TR19MRU4sICJJ bnRlZ2VyIG92ZXJmbG93IHdoaWxlIHJlYWRpbmcgaXRlbSAlZCIsCiAJICAgICBkdHAtPnUu cC5pdGVtX2NvdW50KTsKIAogICBmcmVlX3NhdmVkIChkdHApOwpAQCAtNzE1LDcgKzcxMSw3 IEBAIGNvbnZlcnRfaW50ZWdlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5ndGgs IGludCBuZWdhdGl2ZSkKIHN0YXRpYyBpbnQKIHBhcnNlX3JlcGVhdCAoc3RfcGFyYW1ldGVy X2R0ICpkdHApCiB7Ci0gIGNoYXIgbWVzc2FnZVtNU0dMRU5dOworICBjaGFyIG1lc3NhZ2Vb SU9NU0dfTEVOXTsKICAgaW50IGMsIHJlcGVhdDsKIAogICBpZiAoKGMgPSBuZXh0X2NoYXIg KGR0cCkpID09IEVPRikKQEAgLTc0Niw3ICs3NDIsNyBAQCBwYXJzZV9yZXBlYXQgKHN0X3Bh cmFtZXRlcl9kdCAqZHRwKQogCiAJICBpZiAocmVwZWF0ID4gTUFYX1JFUEVBVCkKIAkgICAg ewotCSAgICAgIHNucHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sCisJICAgICAgc25wcmludGYg KG1lc3NhZ2UsIElPTVNHX0xFTiwKIAkJICAgICAgICJSZXBlYXQgY291bnQgb3ZlcmZsb3cg aW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwKIAkJICAgICAgIGR0cC0+dS5wLml0ZW1fY291 bnQpOwogCkBAIC03NTksNyArNzU1LDcgQEAgcGFyc2VfcmVwZWF0IChzdF9wYXJhbWV0ZXJf ZHQgKmR0cCkKIAljYXNlICcqJzoKIAkgIGlmIChyZXBlYXQgPT0gMCkKIAkgICAgewotCSAg ICAgIHNucHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sCisJICAgICAgc25wcmludGYgKG1lc3Nh Z2UsIElPTVNHX0xFTiwKIAkJICAgICAgICJaZXJvIHJlcGVhdCBjb3VudCBpbiBpdGVtICVk IG9mIGxpc3QgaW5wdXQiLAogCQkgICAgICAgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAKQEAg LTc4OSw3ICs3ODUsNyBAQCBwYXJzZV9yZXBlYXQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwKQog ICAgIH0KICAgZWxzZQogICAgIGVhdF9saW5lIChkdHApOwotICBzbnByaW50ZiAobWVzc2Fn ZSwgTVNHTEVOLCAiQmFkIHJlcGVhdCBjb3VudCBpbiBpdGVtICVkIG9mIGxpc3QgaW5wdXQi LAorICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVOLCAiQmFkIHJlcGVhdCBjb3VudCBp biBpdGVtICVkIG9mIGxpc3QgaW5wdXQiLAogCSAgIGR0cC0+dS5wLml0ZW1fY291bnQpOwog ICBnZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBt ZXNzYWdlKTsKICAgcmV0dXJuIDE7CkBAIC04MTYsNyArODEyLDcgQEAgbF9wdXNoX2NoYXIg KHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBjaGFyIGMpCiBzdGF0aWMgdm9pZAogcmVhZF9sb2dp Y2FsIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgaW50IGxlbmd0aCkKIHsKLSAgY2hhciBtZXNz YWdlW01TR0xFTl07CisgIGNoYXIgbWVzc2FnZVtJT01TR19MRU5dOwogICBpbnQgYywgaSwg djsKIAogICBpZiAocGFyc2VfcmVwZWF0IChkdHApKQpAQCAtOTUzLDcgKzk0OSw3IEBAIHJl YWRfbG9naWNhbCAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5ndGgpCiAgICAgfQog ICBlbHNlIGlmIChjICE9ICdcbicpCiAgICAgZWF0X2xpbmUgKGR0cCk7Ci0gIHNucHJpbnRm IChtZXNzYWdlLCBNU0dMRU4sICJCYWQgbG9naWNhbCB2YWx1ZSB3aGlsZSByZWFkaW5nIGl0 ZW0gJWQiLAorICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVOLCAiQmFkIGxvZ2ljYWwg dmFsdWUgd2hpbGUgcmVhZGluZyBpdGVtICVkIiwKIAkgICAgICBkdHAtPnUucC5pdGVtX2Nv dW50KTsKICAgZnJlZV9saW5lIChkdHApOwogICBnZW5lcmF0ZV9lcnJvciAoJmR0cC0+Y29t bW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKQEAgLTk3Nyw3ICs5NzMsNyBA QCByZWFkX2xvZ2ljYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBpbnQgbGVuZ3RoKQogc3Rh dGljIHZvaWQKIHJlYWRfaW50ZWdlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5n dGgpCiB7Ci0gIGNoYXIgbWVzc2FnZVtNU0dMRU5dOworICBjaGFyIG1lc3NhZ2VbSU9NU0df TEVOXTsKICAgaW50IGMsIG5lZ2F0aXZlOwogCiAgIG5lZ2F0aXZlID0gMDsKQEAgLTExMTIs NyArMTEwOCw3IEBAIHJlYWRfaW50ZWdlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBs ZW5ndGgpCiAgIGVsc2UgaWYgKGMgIT0gJ1xuJykKICAgICBlYXRfbGluZSAoZHRwKTsKIAot ICBzbnByaW50ZiAobWVzc2FnZSwgTVNHTEVOLCAiQmFkIGludGVnZXIgZm9yIGl0ZW0gJWQg aW4gbGlzdCBpbnB1dCIsCisgIHNucHJpbnRmIChtZXNzYWdlLCBJT01TR19MRU4sICJCYWQg aW50ZWdlciBmb3IgaXRlbSAlZCBpbiBsaXN0IGlucHV0IiwKIAkgICAgICBkdHAtPnUucC5p dGVtX2NvdW50KTsKICAgZnJlZV9saW5lIChkdHApOwogICBnZW5lcmF0ZV9lcnJvciAoJmR0 cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKQEAgLTExNDAsNyAr MTEzNiw3IEBAIHJlYWRfaW50ZWdlciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5n dGgpCiBzdGF0aWMgdm9pZAogcmVhZF9jaGFyYWN0ZXIgKHN0X3BhcmFtZXRlcl9kdCAqZHRw LCBpbnQgbGVuZ3RoIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIHsKLSAgY2hhciBxdW90 ZSwgbWVzc2FnZVtNU0dMRU5dOworICBjaGFyIHF1b3RlLCBtZXNzYWdlW0lPTVNHX0xFTl07 CiAgIGludCBjOwogCiAgIHF1b3RlID0gJyAnOwkJCS8qIFNwYWNlIG1lYW5zIG5vIHF1b3Rl IGNoYXJhY3Rlci4gICovCkBAIC0xMjg2LDcgKzEyODIsNyBAQCByZWFkX2NoYXJhY3RlciAo c3RfcGFyYW1ldGVyX2R0ICpkdHAsIGludCBsZW5ndGggX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpKQogICBlbHNlCiAgICAgewogICAgICAgZnJlZV9zYXZlZCAoZHRwKTsKLSAgICAgIHNu cHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sICJJbnZhbGlkIHN0cmluZyBpbnB1dCBpbiBpdGVt ICVkIiwKKyAgICAgIHNucHJpbnRmIChtZXNzYWdlLCBJT01TR19MRU4sICJJbnZhbGlkIHN0 cmluZyBpbnB1dCBpbiBpdGVtICVkIiwKIAkJICBkdHAtPnUucC5pdGVtX2NvdW50KTsKICAg ICAgIGdlbmVyYXRlX2Vycm9yICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUs IG1lc3NhZ2UpOwogICAgIH0KQEAgLTEzMDYsNyArMTMwMiw3IEBAIHJlYWRfY2hhcmFjdGVy IChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgaW50IGxlbmd0aCBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSkpCiBzdGF0aWMgaW50CiBwYXJzZV9yZWFsIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwg dm9pZCAqYnVmZmVyLCBpbnQgbGVuZ3RoKQogewotICBjaGFyIG1lc3NhZ2VbTVNHTEVOXTsK KyAgY2hhciBtZXNzYWdlW0lPTVNHX0xFTl07CiAgIGludCBjLCBtLCBzZWVuX2RwOwogCiAg IGlmICgoYyA9IG5leHRfY2hhciAoZHRwKSkgPT0gRU9GKQpAQCAtMTUyMSw3ICsxNTE3LDcg QEAgcGFyc2VfcmVhbCAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIHZvaWQgKmJ1ZmZlciwgaW50 IGxlbmd0aCkKICAgZWxzZSBpZiAoYyAhPSAnXG4nKQogICAgIGVhdF9saW5lIChkdHApOwog Ci0gIHNucHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sICJCYWQgY29tcGxleCBmbG9hdGluZyBw b2ludCAiCisgIHNucHJpbnRmIChtZXNzYWdlLCBJT01TR19MRU4sICJCYWQgY29tcGxleCBm bG9hdGluZyBwb2ludCAiCiAJICAgICJudW1iZXIgZm9yIGl0ZW0gJWQiLCBkdHAtPnUucC5p dGVtX2NvdW50KTsKICAgZnJlZV9saW5lIChkdHApOwogICBnZW5lcmF0ZV9lcnJvciAoJmR0 cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsKQEAgLTE1MzYsNyAr MTUzMiw3IEBAIHBhcnNlX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCB2b2lkICpidWZm ZXIsIGludCBsZW5ndGgpCiBzdGF0aWMgdm9pZAogcmVhZF9jb21wbGV4IChzdF9wYXJhbWV0 ZXJfZHQgKmR0cCwgdm9pZCAqZGVzdCwgaW50IGtpbmQsIHNpemVfdCBzaXplKQogewotICBj aGFyIG1lc3NhZ2VbTVNHTEVOXTsKKyAgY2hhciBtZXNzYWdlW0lPTVNHX0xFTl07CiAgIGlu dCBjOwogCiAgIGlmIChwYXJzZV9yZXBlYXQgKGR0cCkpCkBAIC0xNjMzLDcgKzE2MjksNyBA QCBlb2xfNDoKICAgZWxzZSBpZiAoYyAhPSAnXG4nKQogICAgIGVhdF9saW5lIChkdHApOwog Ci0gIHNucHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sICJCYWQgY29tcGxleCB2YWx1ZSBpbiBp dGVtICVkIG9mIGxpc3QgaW5wdXQiLAorICBzbnByaW50ZiAobWVzc2FnZSwgSU9NU0dfTEVO LCAiQmFkIGNvbXBsZXggdmFsdWUgaW4gaXRlbSAlZCBvZiBsaXN0IGlucHV0IiwKIAkgICAg ICBkdHAtPnUucC5pdGVtX2NvdW50KTsKICAgZnJlZV9saW5lIChkdHApOwogICBnZW5lcmF0 ZV9lcnJvciAoJmR0cC0+Y29tbW9uLCBMSUJFUlJPUl9SRUFEX1ZBTFVFLCBtZXNzYWdlKTsK QEAgLTE2NDUsNyArMTY0MSw3IEBAIGVvbF80Ogogc3RhdGljIHZvaWQKIHJlYWRfcmVhbCAo c3RfcGFyYW1ldGVyX2R0ICpkdHAsIHZvaWQgKmRlc3QsIGludCBsZW5ndGgpCiB7Ci0gIGNo YXIgbWVzc2FnZVtNU0dMRU5dOworICBjaGFyIG1lc3NhZ2VbSU9NU0dfTEVOXTsKICAgaW50 IGM7CiAgIGludCBzZWVuX2RwOwogICBpbnQgaXNfaW5mOwpAQCAtMjA1OSw3ICsyMDU1LDcg QEAgcmVhZF9yZWFsIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgdm9pZCAqZGVzdCwgaW50IGxl bmd0aCkKICAgZWxzZSBpZiAoYyAhPSAnXG4nKQogICAgIGVhdF9saW5lIChkdHApOwogCi0g IHNucHJpbnRmIChtZXNzYWdlLCBNU0dMRU4sICJCYWQgcmVhbCBudW1iZXIgaW4gaXRlbSAl ZCBvZiBsaXN0IGlucHV0IiwKKyAgc25wcmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwgIkJh ZCByZWFsIG51bWJlciBpbiBpdGVtICVkIG9mIGxpc3QgaW5wdXQiLAogCSAgICAgIGR0cC0+ dS5wLml0ZW1fY291bnQpOwogICBmcmVlX2xpbmUgKGR0cCk7CiAgIGdlbmVyYXRlX2Vycm9y ICgmZHRwLT5jb21tb24sIExJQkVSUk9SX1JFQURfVkFMVUUsIG1lc3NhZ2UpOwpAQCAtMjA3 MiwxMSArMjA2OCwxMSBAQCByZWFkX3JlYWwgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCB2b2lk ICpkZXN0LCBpbnQgbGVuZ3RoKQogc3RhdGljIGludAogY2hlY2tfdHlwZSAoc3RfcGFyYW1l dGVyX2R0ICpkdHAsIGJ0IHR5cGUsIGludCBraW5kKQogewotICBjaGFyIG1lc3NhZ2VbTVNH TEVOXTsKKyAgY2hhciBtZXNzYWdlW0lPTVNHX0xFTl07CiAKICAgaWYgKGR0cC0+dS5wLnNh dmVkX3R5cGUgIT0gQlRfVU5LTk9XTiAmJiBkdHAtPnUucC5zYXZlZF90eXBlICE9IHR5cGUp CiAgICAgewotICAgICAgc25wcmludGYgKG1lc3NhZ2UsIE1TR0xFTiwgIlJlYWQgdHlwZSAl cyB3aGVyZSAlcyB3YXMgZXhwZWN0ZWQgZm9yIGl0ZW0gJWQiLAorICAgICAgc25wcmludGYg KG1lc3NhZ2UsIElPTVNHX0xFTiwgIlJlYWQgdHlwZSAlcyB3aGVyZSAlcyB3YXMgZXhwZWN0 ZWQgZm9yIGl0ZW0gJWQiLAogCQkgIHR5cGVfbmFtZSAoZHRwLT51LnAuc2F2ZWRfdHlwZSks IHR5cGVfbmFtZSAodHlwZSksCiAJCSAgZHRwLT51LnAuaXRlbV9jb3VudCk7CiAgICAgICBm cmVlX2xpbmUgKGR0cCk7CkBAIC0yMDkwLDcgKzIwODYsNyBAQCBjaGVja190eXBlIChzdF9w YXJhbWV0ZXJfZHQgKmR0cCwgYnQgdHlwZSwgaW50IGtpbmQpCiAgIGlmICgodHlwZSAhPSBC VF9DT01QTEVYICYmIGR0cC0+dS5wLnNhdmVkX2xlbmd0aCAhPSBraW5kKQogICAgICAgfHwg KHR5cGUgPT0gQlRfQ09NUExFWCAmJiBkdHAtPnUucC5zYXZlZF9sZW5ndGggIT0ga2luZCoy KSkKICAgICB7Ci0gICAgICBzbnByaW50ZiAobWVzc2FnZSwgTVNHTEVOLAorICAgICAgc25w cmludGYgKG1lc3NhZ2UsIElPTVNHX0xFTiwKIAkJICAiUmVhZCBraW5kICVkICVzIHdoZXJl IGtpbmQgJWQgaXMgcmVxdWlyZWQgZm9yIGl0ZW0gJWQiLAogCQkgIHR5cGUgPT0gQlRfQ09N UExFWCA/IGR0cC0+dS5wLnNhdmVkX2xlbmd0aCAvIDIKIAkJCQkgICAgIDogZHRwLT51LnAu c2F2ZWRfbGVuZ3RoLApAQCAtMjEzOCw3ICsyMTM0LDYgQEAgc3RhdGljIGludAogbGlzdF9m b3JtYXR0ZWRfcmVhZF9zY2FsYXIgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBidCB0eXBlLCB2 b2lkICpwLAogCQkJICAgIGludCBraW5kLCBzaXplX3Qgc2l6ZSkKIHsKLSAgY2hhciBtZXNz YWdlW01TR0xFTl07CiAgIGdmY19jaGFyNF90ICpxLCAqcjsKICAgc2l6ZV90IG07CiAgIGlu dCBjOwpAQCAtMjI2NywxMiArMjI2MiwxMiBAQCBsaXN0X2Zvcm1hdHRlZF9yZWFkX3NjYWxh ciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGJ0IHR5cGUsIHZvaWQgKnAsCiAJCQkgICAgICBp b3R5cGVfbGVuLCBjaGlsZF9pb21zZ19sZW4pOwogCSAgZHRwLT51LnAuY2hpbGRfc2F2ZWRf aW9zdGF0ID0gKmNoaWxkX2lvc3RhdDsKIAkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y2hp bGRfZHRpby0tOwotCSAgCi0JICAKKwogCSAgaWYgKChkdHAtPnUucC5jaGlsZF9zYXZlZF9p b3N0YXQgIT0gMCkgJiYKIAkgICAgICAhKGR0cC0+Y29tbW9uLmZsYWdzICYgSU9QQVJNX0hB U19JT01TRykgJiYKIAkgICAgICAhKGR0cC0+Y29tbW9uLmZsYWdzICYgSU9QQVJNX0hBU19J T1NUQVQpKQogCSAgICB7CisJICAgICAgY2hhciBtZXNzYWdlW0lPTVNHX0xFTl07CiAJICAg ICAgLyogVHJpbSB0cmFpbGluZyBzcGFjZXMgZnJvbSB0aGUgbWVzc2FnZS4gICovCiAJICAg ICAgZm9yKGludCBpID0gSU9NU0dfTEVOIC0gMTsgaSA+IDA7IGktLSkKIAkJaWYgKCFpc3Nw YWNlKGNoaWxkX2lvbXNnW2ldKSkKQEAgLTMwNjAsNyArMzA1NSw3IEBAIG5tbF9yZWFkX29i aiAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIG5hbWVsaXN0X2luZm8gKm5sLCBpbmRleF90eXBl IG9mZnNldCwKIAogCQlHRkNfREVTQ1JJUFRPUl9EQVRBKCZ2bGlzdCkgPSBOVUxMOwogCQlH RkNfRElNRU5TSU9OX1NFVCh2bGlzdC5kaW1bMF0sMSwgMCwgMCk7Ci0JCQorCiAJCWxpc3Rf b2JqLnZwdHIgPSBubC0+dnRhYmxlOwogCQlsaXN0X29iai5sZW4gPSAwOwogCkBAIC0zMDg4 LDYgKzMwODMsMjYgQEAgbm1sX3JlYWRfb2JqIChzdF9wYXJhbWV0ZXJfZHQgKmR0cCwgbmFt ZWxpc3RfaW5mbyAqbmwsIGluZGV4X3R5cGUgb2Zmc2V0LAogCQkJICBpb3R5cGVfbGVuLCBj aGlsZF9pb21zZ19sZW4pOwogCQlkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQgPSAqY2hp bGRfaW9zdGF0OwogCQlkdHAtPnUucC5jdXJyZW50X3VuaXQtPmNoaWxkX2R0aW8tLTsKKwor CQlpZiAoKGR0cC0+dS5wLmNoaWxkX3NhdmVkX2lvc3RhdCAhPSAwKSAmJgorCQkgICAgIShk dHAtPmNvbW1vbi5mbGFncyAmIElPUEFSTV9IQVNfSU9NU0cpICYmCisJCSAgICAhKGR0cC0+ Y29tbW9uLmZsYWdzICYgSU9QQVJNX0hBU19JT1NUQVQpKQorCQkgIHsKKwkJICAgIGNoYXIg bWVzc2FnZVtJT01TR19MRU5dOworCQkgICAgLyogVHJpbSB0cmFpbGluZyBzcGFjZXMgZnJv bSB0aGUgbWVzc2FnZS4gICovCisJCSAgICBmb3IoaW50IGkgPSBJT01TR19MRU4gLSAxOyBp ID4gMDsgaS0tKQorCQkgICAgICBpZiAoIWlzc3BhY2UoY2hpbGRfaW9tc2dbaV0pKQorCQkJ eworCQkJICAvKiBBZGQgdHdvIHRvIGdldCBiYWNrIHRvIHRoZSBlbmQgb2YgY2hpbGRfaW9t c2cuICAqLworCQkJICBjaGlsZF9pb21zZ19sZW4gPSBpKzI7CisJCQkgIGJyZWFrOworCQkJ fQorCQkgICAgc25wcmludGYgKG1lc3NhZ2UsIGNoaWxkX2lvbXNnX2xlbiwgY2hpbGRfaW9t c2cpOworCQkgICAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAtPmNvbW1vbiwgZHRwLT51LnAuY2hp bGRfc2F2ZWRfaW9zdGF0LAorCQkJCSAgICBtZXNzYWdlKTsKKwkJICAgIGdvdG8gbm1sX2Vy cl9yZXQ7CisJCSAgfQorCiAJCWdvdG8gaW5jcl9pZHg7CiAJICAgICAgfQogCmRpZmYgLS1n aXQgYS9saWJnZm9ydHJhbi9pby90cmFuc2Zlci5jIGIvbGliZ2ZvcnRyYW4vaW8vdHJhbnNm ZXIuYwppbmRleCAwMWRiNDEyMmQxNi4uOTkyYWFjYzFkZjkgMTAwNjQ0Ci0tLSBhL2xpYmdm b3J0cmFuL2lvL3RyYW5zZmVyLmMKKysrIGIvbGliZ2ZvcnRyYW4vaW8vdHJhbnNmZXIuYwpA QCAtMTEyMCw3ICsxMTIwLDI4IEBAIHVuZm9ybWF0dGVkX3JlYWQgKHN0X3BhcmFtZXRlcl9k dCAqZHRwLCBidCB0eXBlLAogCSAgZHRwLT51LnAuY3VycmVudF91bml0LT5jaGlsZF9kdGlv Kys7CiAJICBkdHAtPnUucC51ZmR0aW9fcHRyIChkZXN0LCAmdW5pdCwgY2hpbGRfaW9zdGF0 LCBjaGlsZF9pb21zZywKIAkJCSAgICAgICBjaGlsZF9pb21zZ19sZW4pOworCSAgZHRwLT51 LnAuY2hpbGRfc2F2ZWRfaW9zdGF0ID0gKmNoaWxkX2lvc3RhdDsKIAkgIGR0cC0+dS5wLmN1 cnJlbnRfdW5pdC0+Y2hpbGRfZHRpby0tOworCisJICBpZiAoKGR0cC0+dS5wLmNoaWxkX3Nh dmVkX2lvc3RhdCAhPSAwKSAmJgorCSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BB Uk1fSEFTX0lPTVNHKSAmJgorCSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1f SEFTX0lPU1RBVCkpCisJICAgIHsKKwkgICAgICBjaGFyIG1lc3NhZ2VbSU9NU0dfTEVOXTsK KworCSAgICAgIC8qIFRyaW0gdHJhaWxpbmcgc3BhY2VzIGZyb20gdGhlIG1lc3NhZ2UuICAq LworCSAgICAgIGZvcihpbnQgaSA9IElPTVNHX0xFTiAtIDE7IGkgPiAwOyBpLS0pCisJCWlm ICghaXNzcGFjZShjaGlsZF9pb21zZ1tpXSkpCisJCSAgeworCQkgICAgLyogQWRkIHR3byB0 byBnZXQgYmFjayB0byB0aGUgZW5kIG9mIGNoaWxkX2lvbXNnLiAgKi8KKwkJICAgIGNoaWxk X2lvbXNnX2xlbiA9IGkrMjsKKwkJICAgIGJyZWFrOworCQkgIH0KKwkgICAgICBzbnByaW50 ZiAobWVzc2FnZSwgY2hpbGRfaW9tc2dfbGVuLCBjaGlsZF9pb21zZyk7CisJICAgICAgZ2Vu ZXJhdGVfZXJyb3IgKCZkdHAtPmNvbW1vbiwgZHRwLT51LnAuY2hpbGRfc2F2ZWRfaW9zdGF0 LAorCQkJICAgICAgbWVzc2FnZSk7CisJICAgIH0KKwogCSAgcmV0dXJuOwogICAgIH0KIApA QCAtMTI1MCw3ICsxMjcxLDI3IEBAIHVuZm9ybWF0dGVkX3dyaXRlIChzdF9wYXJhbWV0ZXJf ZHQgKmR0cCwgYnQgdHlwZSwKIAkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y2hpbGRfZHRp bysrOwogCSAgZHRwLT51LnAudWZkdGlvX3B0ciAoc291cmNlLCAmdW5pdCwgY2hpbGRfaW9z dGF0LCBjaGlsZF9pb21zZywKIAkJCSAgICAgICBjaGlsZF9pb21zZ19sZW4pOworCSAgZHRw LT51LnAuY2hpbGRfc2F2ZWRfaW9zdGF0ID0gKmNoaWxkX2lvc3RhdDsKIAkgIGR0cC0+dS5w LmN1cnJlbnRfdW5pdC0+Y2hpbGRfZHRpby0tOworCSAgCisJICBpZiAoKGR0cC0+dS5wLmNo aWxkX3NhdmVkX2lvc3RhdCAhPSAwKSAmJgorCSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3Mg JiBJT1BBUk1fSEFTX0lPTVNHKSAmJgorCSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJ T1BBUk1fSEFTX0lPU1RBVCkpCisJICAgIHsKKwkgICAgICBjaGFyIG1lc3NhZ2VbSU9NU0df TEVOXTsKKworCSAgICAgIC8qIFRyaW0gdHJhaWxpbmcgc3BhY2VzIGZyb20gdGhlIG1lc3Nh Z2UuICAqLworCSAgICAgIGZvcihpbnQgaSA9IElPTVNHX0xFTiAtIDE7IGkgPiAwOyBpLS0p CisJCWlmICghaXNzcGFjZShjaGlsZF9pb21zZ1tpXSkpCisJCSAgeworCQkgICAgLyogQWRk IHR3byB0byBnZXQgYmFjayB0byB0aGUgZW5kIG9mIGNoaWxkX2lvbXNnLiAgKi8KKwkJICAg IGNoaWxkX2lvbXNnX2xlbiA9IGkrMjsKKwkJICAgIGJyZWFrOworCQkgIH0KKwkgICAgICBz bnByaW50ZiAobWVzc2FnZSwgY2hpbGRfaW9tc2dfbGVuLCBjaGlsZF9pb21zZyk7CisJICAg ICAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAtPmNvbW1vbiwgZHRwLT51LnAuY2hpbGRfc2F2ZWRf aW9zdGF0LAorCQkJICAgICAgbWVzc2FnZSk7CisJICAgIH0KIAkgIHJldHVybjsKICAgICB9 CiAKQEAgLTE3MzAsOCArMTc3MSwyOCBAQCBmb3JtYXR0ZWRfdHJhbnNmZXJfc2NhbGFyX3Jl YWQgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBidCB0eXBlLCB2b2lkICpwLCBpbnQga2luZAog CSAgZHRwLT51LnAuZmR0aW9fcHRyIChwLCAmdW5pdCwgaW90eXBlLCBmLT51LnVkZi52bGlz dCwKIAkJCSAgICAgIGNoaWxkX2lvc3RhdCwgY2hpbGRfaW9tc2csCiAJCQkgICAgICBpb3R5 cGVfbGVuLCBjaGlsZF9pb21zZ19sZW4pOworCSAgZHRwLT51LnAuY2hpbGRfc2F2ZWRfaW9z dGF0ID0gKmNoaWxkX2lvc3RhdDsKIAkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y2hpbGRf ZHRpby0tOwogCisJICBpZiAoKGR0cC0+dS5wLmNoaWxkX3NhdmVkX2lvc3RhdCAhPSAwKSAm JgorCSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1fSEFTX0lPTVNHKSAmJgor CSAgICAgICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1fSEFTX0lPU1RBVCkpCisJICAg IHsKKwkgICAgICBjaGFyIG1lc3NhZ2VbSU9NU0dfTEVOXTsKKworCSAgICAgIC8qIFRyaW0g dHJhaWxpbmcgc3BhY2VzIGZyb20gdGhlIG1lc3NhZ2UuICAqLworCSAgICAgIGZvcihpbnQg aSA9IElPTVNHX0xFTiAtIDE7IGkgPiAwOyBpLS0pCisJCWlmICghaXNzcGFjZShjaGlsZF9p b21zZ1tpXSkpCisJCSAgeworCQkgICAgLyogQWRkIHR3byB0byBnZXQgYmFjayB0byB0aGUg ZW5kIG9mIGNoaWxkX2lvbXNnLiAgKi8KKwkJICAgIGNoaWxkX2lvbXNnX2xlbiA9IGkrMjsK KwkJICAgIGJyZWFrOworCQkgIH0KKwkgICAgICBzbnByaW50ZiAobWVzc2FnZSwgY2hpbGRf aW9tc2dfbGVuLCBjaGlsZF9pb21zZyk7CisJICAgICAgZ2VuZXJhdGVfZXJyb3IgKCZkdHAt PmNvbW1vbiwgZHRwLT51LnAuY2hpbGRfc2F2ZWRfaW9zdGF0LAorCQkJICAgICAgbWVzc2Fn ZSk7CisJICAgIH0KKwogCSAgaWYgKGYtPnUudWRmLnN0cmluZ19sZW4gIT0gMCkKIAkgICAg ZnJlZSAoaW90eXBlKTsKIAkgIC8qIE5vdGU6IHZsaXN0IGlzIGZyZWVkIGluIGZyZWVfZm9y bWF0X2RhdGEuICAqLwpAQCAtMjIxNCw4ICsyMjc1LDI4IEBAIGZvcm1hdHRlZF90cmFuc2Zl cl9zY2FsYXJfd3JpdGUgKHN0X3BhcmFtZXRlcl9kdCAqZHRwLCBidCB0eXBlLCB2b2lkICpw LCBpbnQga2luCiAJICBkdHAtPnUucC5mZHRpb19wdHIgKHAsICZ1bml0LCBpb3R5cGUsIGYt PnUudWRmLnZsaXN0LAogCQkJICAgICAgY2hpbGRfaW9zdGF0LCBjaGlsZF9pb21zZywKIAkJ CSAgICAgIGlvdHlwZV9sZW4sIGNoaWxkX2lvbXNnX2xlbik7CisJICBkdHAtPnUucC5jaGls ZF9zYXZlZF9pb3N0YXQgPSAqY2hpbGRfaW9zdGF0OwogCSAgZHRwLT51LnAuY3VycmVudF91 bml0LT5jaGlsZF9kdGlvLS07CiAKKwkgIGlmICgoZHRwLT51LnAuY2hpbGRfc2F2ZWRfaW9z dGF0ICE9IDApICYmCisJICAgICAgIShkdHAtPmNvbW1vbi5mbGFncyAmIElPUEFSTV9IQVNf SU9NU0cpICYmCisJICAgICAgIShkdHAtPmNvbW1vbi5mbGFncyAmIElPUEFSTV9IQVNfSU9T VEFUKSkKKwkgICAgeworCSAgICAgIGNoYXIgbWVzc2FnZVtJT01TR19MRU5dOworCisJICAg ICAgLyogVHJpbSB0cmFpbGluZyBzcGFjZXMgZnJvbSB0aGUgbWVzc2FnZS4gICovCisJICAg ICAgZm9yKGludCBpID0gSU9NU0dfTEVOIC0gMTsgaSA+IDA7IGktLSkKKwkJaWYgKCFpc3Nw YWNlKGNoaWxkX2lvbXNnW2ldKSkKKwkJICB7CisJCSAgICAvKiBBZGQgdHdvIHRvIGdldCBi YWNrIHRvIHRoZSBlbmQgb2YgY2hpbGRfaW9tc2cuICAqLworCQkgICAgY2hpbGRfaW9tc2df bGVuID0gaSsyOworCQkgICAgYnJlYWs7CisJCSAgfQorCSAgICAgIHNucHJpbnRmIChtZXNz YWdlLCBjaGlsZF9pb21zZ19sZW4sIGNoaWxkX2lvbXNnKTsKKwkgICAgICBnZW5lcmF0ZV9l cnJvciAoJmR0cC0+Y29tbW9uLCBkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQsCisJCQkg ICAgICBtZXNzYWdlKTsKKwkgICAgfQorCiAJICBpZiAoZi0+dS51ZGYuc3RyaW5nX2xlbiAh PSAwKQogCSAgICBmcmVlIChpb3R5cGUpOwogCSAgLyogTm90ZTogdmxpc3QgaXMgZnJlZWQg aW4gZnJlZV9mb3JtYXRfZGF0YS4gICovCmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9pby93 cml0ZS5jIGIvbGliZ2ZvcnRyYW4vaW8vd3JpdGUuYwppbmRleCAxYTdjMTIzNDVmOS4uZDkx YTY0ZDk0N2IgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL2lvL3dyaXRlLmMKKysrIGIvbGli Z2ZvcnRyYW4vaW8vd3JpdGUuYwpAQCAtMTk5MSw3ICsxOTkxLDI3IEBAIGxpc3RfZm9ybWF0 dGVkX3dyaXRlX3NjYWxhciAoc3RfcGFyYW1ldGVyX2R0ICpkdHAsIGJ0IHR5cGUsIHZvaWQg KnAsIGludCBraW5kLAogCSAgZHRwLT51LnAuZmR0aW9fcHRyIChwLCAmdW5pdCwgaW90eXBl LCAmdmxpc3QsCiAJCQkgICAgICBjaGlsZF9pb3N0YXQsIGNoaWxkX2lvbXNnLAogCQkJICAg ICAgaW90eXBlX2xlbiwgY2hpbGRfaW9tc2dfbGVuKTsKKwkgIGR0cC0+dS5wLmNoaWxkX3Nh dmVkX2lvc3RhdCA9ICpjaGlsZF9pb3N0YXQ7CiAJICBkdHAtPnUucC5jdXJyZW50X3VuaXQt PmNoaWxkX2R0aW8tLTsKKworCSAgaWYgKChkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQg IT0gMCkgJiYKKwkgICAgICAhKGR0cC0+Y29tbW9uLmZsYWdzICYgSU9QQVJNX0hBU19JT01T RykgJiYKKwkgICAgICAhKGR0cC0+Y29tbW9uLmZsYWdzICYgSU9QQVJNX0hBU19JT1NUQVQp KQorCSAgICB7CisJICAgICAgY2hhciBtZXNzYWdlW0lPTVNHX0xFTl07CisKKwkgICAgICAv KiBUcmltIHRyYWlsaW5nIHNwYWNlcyBmcm9tIHRoZSBtZXNzYWdlLiAgKi8KKwkgICAgICBm b3IoaW50IGkgPSBJT01TR19MRU4gLSAxOyBpID4gMDsgaS0tKQorCQlpZiAoIWlzc3BhY2Uo Y2hpbGRfaW9tc2dbaV0pKQorCQkgIHsKKwkJICAgIC8qIEFkZCB0d28gdG8gZ2V0IGJhY2sg dG8gdGhlIGVuZCBvZiBjaGlsZF9pb21zZy4gICovCisJCSAgICBjaGlsZF9pb21zZ19sZW4g PSBpKzI7CisJCSAgICBicmVhazsKKwkJICB9CisJICAgICAgc25wcmludGYgKG1lc3NhZ2Us IGNoaWxkX2lvbXNnX2xlbiwgY2hpbGRfaW9tc2cpOworCSAgICAgIGdlbmVyYXRlX2Vycm9y ICgmZHRwLT5jb21tb24sIGR0cC0+dS5wLmNoaWxkX3NhdmVkX2lvc3RhdCwKKwkJCSAgICAg IG1lc3NhZ2UpOworCSAgICB9CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgpAQCAtMjMzMCw4ICsyMzUwLDI4IEBAIG5tbF93cml0ZV9vYmogKHN0X3BhcmFtZXRlcl9k dCAqZHRwLCBuYW1lbGlzdF9pbmZvICpvYmosIGluZGV4X3R5cGUgb2Zmc2V0LAogCQkJCWNo aWxkX2lvc3RhdCwgY2hpbGRfaW9tc2csCiAJCQkJaW90eXBlX2xlbiwgY2hpbGRfaW9tc2df bGVuKTsKIAkJICAgIH0KKwkJICBkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQgPSAqY2hp bGRfaW9zdGF0OwogCQkgIGR0cC0+dS5wLmN1cnJlbnRfdW5pdC0+Y2hpbGRfZHRpby0tOwog CisJCSAgaWYgKChkdHAtPnUucC5jaGlsZF9zYXZlZF9pb3N0YXQgIT0gMCkgJiYKKwkJICAg ICAgIShkdHAtPmNvbW1vbi5mbGFncyAmIElPUEFSTV9IQVNfSU9NU0cpICYmCisJCSAgICAg ICEoZHRwLT5jb21tb24uZmxhZ3MgJiBJT1BBUk1fSEFTX0lPU1RBVCkpCisJCSAgICB7CisJ CSAgICAgIGNoYXIgbWVzc2FnZVtJT01TR19MRU5dOworCisJCSAgICAgIC8qIFRyaW0gdHJh aWxpbmcgc3BhY2VzIGZyb20gdGhlIG1lc3NhZ2UuICAqLworCQkgICAgICBmb3IoaW50IGkg PSBJT01TR19MRU4gLSAxOyBpID4gMDsgaS0tKQorCQkJaWYgKCFpc3NwYWNlKGNoaWxkX2lv bXNnW2ldKSkKKwkJCSAgeworCQkJICAgIC8qIEFkZCB0d28gdG8gZ2V0IGJhY2sgdG8gdGhl IGVuZCBvZiBjaGlsZF9pb21zZy4gICovCisJCQkgICAgY2hpbGRfaW9tc2dfbGVuID0gaSsy OworCQkJICAgIGJyZWFrOworCQkJICB9CisJCSAgICAgIHNucHJpbnRmIChtZXNzYWdlLCBj aGlsZF9pb21zZ19sZW4sIGNoaWxkX2lvbXNnKTsKKwkJICAgICAgZ2VuZXJhdGVfZXJyb3Ig KCZkdHAtPmNvbW1vbiwgZHRwLT51LnAuY2hpbGRfc2F2ZWRfaW9zdGF0LAorCQkJCSAgICAg IG1lc3NhZ2UpOworCQkgICAgfQorCiAJCSAgZ290byBvYmpfbG9vcDsKIAkJfQogCg== --------------nEaj1rQ6uKxaG7fiP0hCYxkN--