From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 47282 invoked by alias); 3 Aug 2015 18:45:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 47265 invoked by uid 89); 3 Aug 2015 18:45:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-wi0-f171.google.com Received: from mail-wi0-f171.google.com (HELO mail-wi0-f171.google.com) (209.85.212.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 03 Aug 2015 18:45:40 +0000 Received: by wicgj17 with SMTP id gj17so118024257wic.1 for ; Mon, 03 Aug 2015 11:45:37 -0700 (PDT) X-Received: by 10.180.91.40 with SMTP id cb8mr37626960wib.54.1438627537048; Mon, 03 Aug 2015 11:45:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.188.139 with HTTP; Mon, 3 Aug 2015 11:44:57 -0700 (PDT) In-Reply-To: References: From: =?UTF-8?B?TWFudWVsIEzDs3Blei1JYsOhw7Fleg==?= Date: Mon, 03 Aug 2015 18:45:00 -0000 Message-ID: Subject: Re: PR middle-end/16351 NULL dereference warnings To: Gcc Patch List , Richard Biener , Jakub Jelinek , Jeff Law , Florian Weimer Content-Type: multipart/mixed; boundary=f46d043c7e785054fd051c6c9316 X-SW-Source: 2015-08/txt/msg00112.txt.bz2 --f46d043c7e785054fd051c6c9316 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2634 PING: https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01860.html Actually, the xfailed test was because the function folded to nothing and the offending code was removed without warning. Fixed in the attached version. Same changelog. On 22 July 2015 at 17:52, Manuel L=C3=B3pez-Ib=C3=A1=C3=B1ez wrote: > I took the patch in > https://gcc.gnu.org/ml/gcc-patches/2014-01/msg01715.html and removed > the Wnull-attribute part, since most of it can be done from the FE as > shown in https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01857.html and > also to make the patch smaller and easier to review. > > I also fixed the comments by Florian here: > https://gcc.gnu.org/ml/gcc-patches/2014-02/msg00149.html and added > more tests from the PR and its duplicates (one xfailed, I'll open a > new PR about it). > > Futher cleanups may be possible (infer_nonnull_range_by_attribute > checks flag_delete_null_pointer_checks, which seems weird to me but it > matches the existing behavior of infer_nonnull_range). > > I added this to Wall to get as much testing as possible, we can always > move it to Wextra or disable it by default just before the release if > it turns out to be too noisy. > > Boostrapped and regression tested on x86_64-linux-gnu. > > OK? > > gcc/ChangeLog: > > 2015-07-22 Manuel L=C3=B3pez-Ib=C3=A1=C3=B1ez > Jeff Law > > PR c/16351 > * doc/invoke.texi (Wnull-dereference): New. > * tree-vrp.c (infer_value_range): Update call to infer_nonnull_range. > * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behaviour): > Warn for potential NULL dereferences. > (find_explicit_erroneous_behaviour): Warn for NULL dereferences. > * ubsan.c (instrument_nonnull_arg): Call > infer_nonnull_range_by_attribute. > (instrument_nonnull_return): Likewise. > * common.opt (Wnull-dereference); New. > * gimple.c (infer_nonnull_range): Remove bool arguments. > (infer_nonnull_range_by_dereference): New. > (infer_nonnull_range_by_attribute): New. > * gimple.h: Update declarations. > > gcc/testsuite/ChangeLog: > > 2015-07-22 Manuel L=C3=B3pez-Ib=C3=A1=C3=B1ez > Jeff Law > > PR c/16351 > * gcc.dg/tree-ssa/isolate-2.c: Close comment. > * gcc.dg/tree-ssa/isolate-4.c: Likewise. > * gcc.dg/tree-ssa/wnull-dereference.c: New test. > * gcc.dg/tree-ssa/isolate-1.c: Test warnings with -Wnull-dereference. > * gcc.dg/tree-ssa/isolate-3.c: Likewise. > * gcc.dg/tree-ssa/isolate-5.c: Likewise. > * c-c++-common/wnonnull-1.c: New test. --f46d043c7e785054fd051c6c9316 Content-Type: text/plain; charset=US-ASCII; name="wnull-dereference.diff" Content-Disposition: attachment; filename="wnull-dereference.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icw9nk3t1 Content-length: 26845 SW5kZXg6IGdjYy90cmVlLXZycC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGdjYy90cmVlLXZycC5jCShyZXZpc2lvbiAyMjU4NjgpCisrKyBnY2Mv dHJlZS12cnAuYwkod29ya2luZyBjb3B5KQpAQCAtNDkzNiwxMSArNDkzNiwx MSBAQCBpbmZlcl92YWx1ZV9yYW5nZSAoZ2ltcGxlIHN0bXQsIHRyZWUgb3As CiAJICBicmVhazsKICAgICAgIGlmIChlID09IE5VTEwpCiAJcmV0dXJuIGZh bHNlOwogICAgIH0KIAotICBpZiAoaW5mZXJfbm9ubnVsbF9yYW5nZSAoc3Rt dCwgb3AsIHRydWUsIHRydWUpKQorICBpZiAoaW5mZXJfbm9ubnVsbF9yYW5n ZSAoc3RtdCwgb3ApKQogICAgIHsKICAgICAgICp2YWxfcCA9IGJ1aWxkX2lu dF9jc3QgKFRSRUVfVFlQRSAob3ApLCAwKTsKICAgICAgICpjb21wX2NvZGVf cCA9IE5FX0VYUFI7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4 OiBnY2MvZG9jL2ludm9rZS50ZXhpCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGdjYy9kb2MvaW52b2tlLnRleGkJKHJldmlzaW9uIDIyNTg2OCkKKysr IGdjYy9kb2MvaW52b2tlLnRleGkJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwx MCArMjU4LDExIEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERp YWxlY3RzfS4KIC1XZnJhbWUtbGFyZ2VyLXRoYW49QHZhcntsZW59IC1Xbm8t ZnJlZS1ub25oZWFwLW9iamVjdCAtV2p1bXAtbWlzc2VzLWluaXQgQGdvbAog LVdpZ25vcmVkLXF1YWxpZmllcnMgIC1XaW5jb21wYXRpYmxlLXBvaW50ZXIt dHlwZXMgQGdvbAogLVdpbXBsaWNpdCAgLVdpbXBsaWNpdC1mdW5jdGlvbi1k ZWNsYXJhdGlvbiAgLVdpbXBsaWNpdC1pbnQgQGdvbAogLVdpbml0LXNlbGYg IC1XaW5saW5lICAtV25vLWludC1jb252ZXJzaW9uIEBnb2wKIC1Xbm8taW50 LXRvLXBvaW50ZXItY2FzdCAtV25vLWludmFsaWQtb2Zmc2V0b2YgQGdvbAor LVdudWxsLWRlcmVmZXJlbmNlIEBnb2wKIC1XaW52YWxpZC1wY2ggLVdsYXJn ZXItdGhhbj1AdmFye2xlbn0gIC1XdW5zYWZlLWxvb3Atb3B0aW1pemF0aW9u cyBAZ29sCiAtV2xvZ2ljYWwtb3AgLVdsb2dpY2FsLW5vdC1wYXJlbnRoZXNl cyAtV2xvbmctbG9uZyBAZ29sCiAtV21haW4gLVdtYXliZS11bmluaXRpYWxp emVkIC1XbWVtc2V0LXRyYW5zcG9zZWQtYXJncyBAZ29sCiAtV21pc2xlYWRp bmctaW5kZW50YXRpb24gLVdtaXNzaW5nLWJyYWNlcyBAZ29sCiAtV21pc3Np bmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XbWlzc2luZy1pbmNsdWRlLWRpcnMg QGdvbApAQCAtNDEzMCwxMCArNDEzMywyMCBAQCBBbGwgdGhlIGFib3ZlIEBv cHRpb257LVd1bnVzZWR9IG9wdGlvbnMgCiAKIEluIG9yZGVyIHRvIGdldCBh IHdhcm5pbmcgYWJvdXQgYW4gdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlciwg eW91IG11c3QKIGVpdGhlciBzcGVjaWZ5IEBvcHRpb257LVdleHRyYSAtV3Vu dXNlZH0gKG5vdGUgdGhhdCBAb3B0aW9uey1XYWxsfSBpbXBsaWVzCiBAb3B0 aW9uey1XdW51c2VkfSksIG9yIHNlcGFyYXRlbHkgc3BlY2lmeSBAb3B0aW9u ey1XdW51c2VkLXBhcmFtZXRlcn0uCiAKK0BpdGVtIC1XbnVsbC1kZXJlZmVy ZW5jZQorQG9waW5kZXggV251bGwtZGVyZWZlcmVuY2UKK0BvcGluZGV4IFdu by1udWxsLWRlcmVmZXJlbmNlCitXYXJuIGlmIHRoZSBjb21waWxlciBkZXRl Y3RzIHBhdGhzIHdoaWNoIHRyaWdnZXIgZXJyb25lb3VzIG9yCit1bmRlZmlu ZWQgYmVoYXZpb3VyIGR1ZSB0byBkZXJlZmVyZW5jaW5nIGEgTlVMTCBwb2lu dGVyLiAgVGhpcyBvcHRpb24KK2lzIG9ubHkgYWN0aXZlIHdoZW4gQG9wdGlv bnstZmRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzfSBpcyBhY3RpdmUsCit3 aGljaCBpcyBlbmFibGVkIGJ5IG9wdGltaXphdGlvbnMgaW4gbW9zdCB0YXJn ZXRzLiAgVGhlIHByZWNpc2lvbiBvZgordGhlIHdhcm5pbmdzIGRlcGVuZHMg b24gdGhlIG9wdGltaXphdGlvbiBvcHRpb25zIHVzZWQuICBUaGlzIG9wdGlv biBpcworZW5hYmxlZCBieSBAb3B0aW9uey1XYWxsfS4KKwogQGl0ZW0gLVd1 bmluaXRpYWxpemVkCiBAb3BpbmRleCBXdW5pbml0aWFsaXplZAogQG9waW5k ZXggV25vLXVuaW5pdGlhbGl6ZWQKIFdhcm4gaWYgYW4gYXV0b21hdGljIHZh cmlhYmxlIGlzIHVzZWQgd2l0aG91dCBmaXJzdCBiZWluZyBpbml0aWFsaXpl ZAogb3IgaWYgYSB2YXJpYWJsZSBtYXkgYmUgY2xvYmJlcmVkIGJ5IGEgQGNv ZGV7c2V0am1wfSBjYWxsLiBJbiBDKyssCkluZGV4OiBnY2MvdGVzdHN1aXRl L2djYy5kZy90cmVlLXNzYS9pc29sYXRlLTIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9pc29s YXRlLTIuYwkocmV2aXNpb24gMjI1ODY4KQorKysgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdHJlZS1zc2EvaXNvbGF0ZS0yLmMJKHdvcmtpbmcgY29weSkKQEAg LTMzLDEwICszMywxMCBAQCBiYXIgKHZvaWQpCiAgICByZXR1cm5zIG5vbi1u dWxsIGF0dHJpYnV0ZSB0byBpc29sYXRlIGEgcGF0aCB3aGVyZSBOVUxMIGZs b3dzIGludG8KICAgIGEgcmV0dXJuIHN0YXRlbWVudC4gIFdlIHRlc3QgdGhp cyB0d2ljZSwgb25jZSB3aGVyZSB0aGUgTlVMTCBmbG93cwogICAgZnJvbSBh IFBISSwgdGhlIHNlY29uZCB3aXRoIGFuIGV4cGxpY2l0IHJldHVybiAwIGlu IHRoZSBJTC4KIAogICAgV2UgYWxzbyB2ZXJpZnkgdGhhdCBhZnRlciBpc29s YXRpb24gcGhpLWNwcm9wIHNpbXBsaWZpZXMgdGhlCi0gICByZXR1cm4gc3Rh dGVtZW50IHNvIHRoYXQgaXQgcmV0dXJucyAmeiBkaXJlY3RseS4KKyAgIHJl dHVybiBzdGF0ZW1lbnQgc28gdGhhdCBpdCByZXR1cm5zICZ6IGRpcmVjdGx5 LiAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJf X2J1aWx0aW5fdHJhcCIgMiAiaXNvbGF0ZS1wYXRocyJ9IH0gKi8KIC8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAicmV0dXJuICZ6OyIg MSAicGhpY3Byb3AxIn0gfSAqLwogCiAKSW5kZXg6IGdjYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL2lzb2xhdGUtNC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2lzb2xh dGUtNC5jCShyZXZpc2lvbiAyMjU4NjgpCisrKyBnY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9pc29sYXRlLTQuYwkod29ya2luZyBjb3B5KQpAQCAt MjIsMTAgKzIyLDEwIEBAIGJhciAodm9pZCkKIC8qIFdlIHRlc3RpbmcgdGhh dCB0aGUgcGF0aCBpc29sYXRpb24gY29kZSBjYW4gdGFrZSBhZHZhbnRhZ2Ug b2YgdGhlCiAgICByZXR1cm5zIG5vbi1udWxsIGF0dHJpYnV0ZSB0byBpc29s YXRlIGEgcGF0aCB3aGVyZSBOVUxMIGZsb3dzIGludG8KICAgIGEgcmV0dXJu IHN0YXRlbWVudC4KIAogICAgV2UgYWxzbyB2ZXJpZnkgdGhhdCBhZnRlciBp c29sYXRpb24gcGhpLWNwcm9wIHNpbXBsaWZpZXMgdGhlCi0gICByZXR1cm4g c3RhdGVtZW50IHNvIHRoYXQgaXQgcmV0dXJucyAmeiBkaXJlY3RseS4KKyAg IHJldHVybiBzdGF0ZW1lbnQgc28gdGhhdCBpdCByZXR1cm5zICZ6IGRpcmVj dGx5LiAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJfX2J1aWx0aW5fdHJhcCIgMiAiaXNvbGF0ZS1wYXRocyJ9IH0gKi8KIC8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZm9vIC4mei47 IiAxICJwaGljcHJvcDEifSB9ICovCiAKIApJbmRleDogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2Evd251bGwtZGVyZWZlcmVuY2UuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS93bnVsbC1kZXJlZmVyZW5jZS5jCShyZXZpc2lvbiAwKQorKysgZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evd251bGwtZGVyZWZlcmVuY2Uu YwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8gCisvKiBQUiBjLzE2NTMxICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiAtZmRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIC1XbnVsbC1k ZXJlZmVyZW5jZSIgfSAqLworLyogeyBkZy1za2lwLWlmICIiIGtlZXBzX251 bGxfcG9pbnRlcl9jaGVja3MgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVz CisjZGVmaW5lIE5VTEwgKHZvaWQgKikwCisjZWxzZQorI2RlZmluZSBOVUxM IG51bGxwdHIKKyNlbmRpZgorCitzdHJ1Y3QgdAoreworICBpbnQgYmFyOwor fTsKKworc3RydWN0IHQyCit7CisgIHN0cnVjdCB0ICpzOworfTsKKwordm9p ZCB0ZXN0MSAoKQoreworICBzdHJ1Y3QgdCAqcyA9IE5VTEw7CisgIHMtPmJh ciA9IDE7ICAvKiB7IGRnLXdhcm5pbmcgIm51bGwiIH0gKi8KK30KKwordm9p ZCB0ZXN0MiAoc3RydWN0IHQgKnMpCit7CisgIGlmIChzID09IE5VTEwgJiYg cy0+YmFyID4gMikgIC8qIHsgZGctd2FybmluZyAibnVsbCIgfSAqLworICAg IHJldHVybjsKKworICBzLT5iYXIgPSAzOworfQorCit2b2lkIHRlc3QzIChz dHJ1Y3QgdCAqcykKK3sKKyAgaWYgKHMgIT0gTlVMTCB8fCBzLT5iYXIgPiAy KSAgLyogeyBkZy13YXJuaW5nICJudWxsIiB9ICovCisgICAgcmV0dXJuOwor CisgIHMtPmJhciA9IDM7ICAvKiB7IGRnLXdhcm5pbmcgIm51bGwiIH0gKi8K K30KKworaW50IHRlc3Q0IChzdHJ1Y3QgdCAqcykKK3sKKyAgaWYgKHMgIT0g TlVMTCAmJiBzLT5iYXIgPiAyKSAgLyogeyBkZy1ib2d1cyAibnVsbCIgfSAq LworICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworaW50IHRlc3Q1 IChzdHJ1Y3QgdCAqcykKK3sKKyAgaWYgKHMgPT0gTlVMTCB8fCBzLT5iYXIg PiAyKSAgLyogeyBkZy1ib2d1cyAibnVsbCIgfSAqLworICAgIHJldHVybiAx OworICByZXR1cm4gMDsKK30KKworaW50IHRlc3Q2IChzdHJ1Y3QgdDIgKnMp Cit7CisgIGlmIChzLT5zID09IDAgJiYgcy0+cy0+YmFyID09IDApICAvKiB7 IGRnLXdhcm5pbmcgIm51bGwiIH0gKi8KKyAgICByZXR1cm4gMTsKKyAgcmV0 dXJuIDA7Cit9CisKK2ludCB0ZXN0NyAoc3RydWN0IHQgKnMpCit7CisgIHMg PSAwOworICByZXR1cm4gcy0+YmFyOyAgLyogeyBkZy13YXJuaW5nICJudWxs IiB9ICovCit9CisKK2ludCB0ZXN0OCAoKQoreworICByZXR1cm4gKChzdHJ1 Y3QgdCAqKTApLT5iYXI7ICAvKiB7IGRnLXdhcm5pbmcgIm51bGwiIH0gKi8K K30KKwordm9pZCB0ZXN0OSAoc3RydWN0IHQgKipzKQoreworICBpZiAocyA9 PSAwKQorICAgICpzID0gMDsgIC8qIHsgZGctd2FybmluZyAibnVsbCIgfSAq LworfQorCisKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L2lzb2xhdGUtMS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2lzb2xhdGUtMS5jCShyZXZpc2lv biAyMjU4NjgpCisrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9p c29sYXRlLTEuYwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDcgQEAKLQog LyogeyBkZy1kbyBjb21waWxlIH0gKi8gCi0vKiB7IGRnLW9wdGlvbnMgIi1P MiAtZmR1bXAtdHJlZS1pc29sYXRlLXBhdGhzIC1mZGVsZXRlLW51bGwtcG9p bnRlci1jaGVja3MiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVt cC10cmVlLWlzb2xhdGUtcGF0aHMgLWZkZWxldGUtbnVsbC1wb2ludGVyLWNo ZWNrcyAtV251bGwtZGVyZWZlcmVuY2UiIH0gKi8KIC8qIHsgZGctc2tpcC1p ZiAiIiBrZWVwc19udWxsX3BvaW50ZXJfY2hlY2tzIH0gKi8KIAogCiBzdHJ1 Y3QgZGVtYW5nbGVfY29tcG9uZW50CiB7CkBAIC0zNywxMiArMzYsMTIgQEAg ZF9tYWtlX2VtcHR5IChzdHJ1Y3QgZF9pbmZvICpkaSkKIHN0cnVjdCBkZW1h bmdsZV9jb21wb25lbnQgKgogZF90eXBlIChzdHJ1Y3QgZF9pbmZvICpkaSkK IHsKICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnJldDsKICAgIHJl dCA9IGRfbWFrZV9lbXB0eSAoZGkpOwotICAgcmV0LT50eXBlID0gNDI7Ci0g ICByZXQtPnp6eiA9IC0xOworICAgcmV0LT50eXBlID0gNDI7CQkvKiB7IGRn LXdhcm5pbmcgIm51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSIgfSAqLworICAg cmV0LT56enogPSAtMTsJCS8qIHsgZGctd2FybmluZyAibnVsbCBwb2ludGVy IGRlcmVmZXJlbmNlIiB9ICovCiAgICByZXR1cm4gcmV0OwogfQogCiAvKiBX ZSdyZSB0ZXN0aW5nIHRocmVlIGFzcGVjdHMgb2YgaXNvbGF0aW9uIGhlcmUu ICBGaXJzdCB0aGF0IGlzb2xhdGlvbgogICAgb2NjdXJzLCBzZWNvbmQgdGhh dCBpZiB3ZSBoYXZlIHR3byBudWxsIGRlcmVmZXJlbmNlcyBpbiBhIGJsb2Nr IHRoYXQKQEAgLTUxLDEwICs1MCw1IEBAIGRfdHlwZSAoc3RydWN0IGRfaW5m byAqZGkpCiAgICBhbmQgZmluYWxseSB0aGF0IHdlIHNldCB0aGUgUkhTIG9m IHRoZSBzdG9yZSB0byB6ZXJvLiAgKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX3RyYXAiIDEgImlzb2xhdGUt cGF0aHMifSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIi0+dHlwZSA9IDQyIiAxICJpc29sYXRlLXBhdGhzIn0gfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICItPnR5cGUg PXt2fSAwIiAxICJpc29sYXRlLXBhdGhzIn0gfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICItPnp6eiIgMSAiaXNvbGF0ZS1w YXRocyJ9IH0gKi8KLQotCi0KLQotCkluZGV4OiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9pc29sYXRlLTMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9pc29sYXRl LTMuYwkocmV2aXNpb24gMjI1ODY4KQorKysgZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdHJlZS1zc2EvaXNvbGF0ZS0zLmMJKHdvcmtpbmcgY29weSkKQEAgLTEs NyArMSw3IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLyAKLS8qIHsgZGct b3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLWlzb2xhdGUtcGF0aHMgLWZkZWxl dGUtbnVsbC1wb2ludGVyLWNoZWNrcyIgfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLWZkdW1wLXRyZWUtaXNvbGF0ZS1wYXRocyAtZmRlbGV0ZS1udWxs LXBvaW50ZXItY2hlY2tzIC1XbnVsbC1kZXJlZmVyZW5jZSIgfSAqLwogLyog eyBkZy1za2lwLWlmICIiIGtlZXBzX251bGxfcG9pbnRlcl9jaGVja3MgfSAq LwogCiAKIHR5cGVkZWYgX19TSVpFX1RZUEVfXyBzaXplX3Q7CiBleHRlcm4g dm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24p CkBAIC0yNywxMSArMjcsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVkVDX3J0eF9n YwogCiBzdGF0aWMgX19pbmxpbmVfXyB2b2lkCiBWRUNfcnR4X2djX3NhZmVf Z3JvdyAoVkVDX3J0eF9nYyAqKiB2ZWNfLCBpbnQgc2l6ZV8sIGNvbnN0IGNo YXIgKmZpbGVfLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxp bmVfLCBjb25zdCBjaGFyICpmdW5jdGlvbl8pCiB7Ci0gICgoKnZlY18pID8g JigqdmVjXyktPmJhc2UgOiAwKS0+bnVtID0gc2l6ZV87CisgICgoKnZlY18p ID8gJigqdmVjXyktPmJhc2UgOiAwKS0+bnVtID0gc2l6ZV87IC8qIHsgZGct d2FybmluZyAibnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIiB9ICovCiB9IAog CiBzdGF0aWMgX19pbmxpbmVfXyB2b2lkCiBWRUNfcnR4X2djX3NhZmVfZ3Jv d19jbGVhcmVkIChWRUNfcnR4X2djICoqIHZlY18sIGludCBzaXplXywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVf LCB1bnNpZ25lZCBsaW5lXywKSW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L3RyZWUtc3NhL2lzb2xhdGUtNS5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL2lzb2xhdGUtNS5j CShyZXZpc2lvbiAyMjU4NjgpCisrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy90 cmVlLXNzYS9pc29sYXRlLTUuYwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx LDcgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovIAotLyogeyBkZy1vcHRp b25zICItTzIgLWZkZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyAtZmR1bXAt dHJlZS1pc29sYXRlLXBhdGhzIC1mZHVtcC10cmVlLW9wdGltaXplZCIgfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLWZkZWxldGUtbnVsbC1wb2ludGVy LWNoZWNrcyAtZmR1bXAtdHJlZS1pc29sYXRlLXBhdGhzIC1mZHVtcC10cmVl LW9wdGltaXplZCAtV251bGwtZGVyZWZlcmVuY2UiIH0gKi8KIC8qIHsgZGct c2tpcC1pZiAiIiBrZWVwc19udWxsX3BvaW50ZXJfY2hlY2tzIH0gKi8KIAog c3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudAogewogCkBAIC0zNCwxMiArMzQs MTIgQEAgZF9tYWtlX2VtcHR5IChzdHJ1Y3QgZF9pbmZvICpkaSkKIHN0cnVj dCBkZW1hbmdsZV9jb21wb25lbnQgKgogZF90eXBlIChzdHJ1Y3QgZF9pbmZv ICpkaSkKIHsKICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnJldDsK ICAgIHJldCA9IGRfbWFrZV9lbXB0eSAoZGkpOwotICAgZm9vIChyZXQtPnR5 cGUpOwotICAgYmFyIChyZXQtPnp6eik7CisgICBmb28gKHJldC0+dHlwZSk7 IC8qIHsgZGctd2FybmluZyAibnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIiB9 ICovCisgICBiYXIgKHJldC0+enp6KTsgLyogeyBkZy13YXJuaW5nICJudWxs IHBvaW50ZXIgZGVyZWZlcmVuY2UiIH0gKi8KICAgIHJldHVybiByZXQ7CiB9 CiAKIC8qIFdlJ3JlIHRlc3RpbmcgdHdvIGFzcGVjdHMgb2YgaXNvbGF0aW9u IGhlcmUuICBGaXJzdCB0aGF0IGlzb2xhdGlvbgogICAgb2NjdXJzLCBzZWNv bmQgdGhhdCBpZiB3ZSBoYXZlIHR3byBudWxsIGRlcmVmZXJlbmNlcyBpbiBh IGJsb2NrIHRoYXQKSW5kZXg6IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L3dub25udWxsLTEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi93bm9ubnVsbC0xLmMJKHJldmlzaW9u IDApCisrKyBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi93bm9ubnVsbC0x LmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovIAorLyogeyBkZy1vcHRpb25zICItV25vbm51bGwiIH0g Ki8KKworCitleHRlcm4gdm9pZCBmb28odm9pZCAqKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7CisKK2ludCB6OworaW50IHk7CisKK3Zv aWQKK2NvbSAoaW50IGEpCit7CisgIGZvbyAoYSA9PSA0MiA/ICZ6ICA6ICh2 b2lkICopIDApOyAvKiB7IGRnLXdhcm5pbmcgIm51bGwiIH0gKi8KK30KKwor dm9pZAorYmFyICh2b2lkKQoreworICBmb28gKCh2b2lkICopMCk7IC8qIHsg ZGctd2FybmluZyAibnVsbCIgfSAqLworfQorCitpbnQgKiBmb29fcihpbnQg YSkgX19hdHRyaWJ1dGVfXygocmV0dXJuc19ub25udWxsKSk7CitpbnQgKiBi YXJfcih2b2lkKSBfX2F0dHJpYnV0ZV9fKChyZXR1cm5zX25vbm51bGwpKTsK KworaW50ICoKK2Zvb19yKGludCBhKQoreworICBzd2l0Y2ggKGEpCisgICAg eworICAgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gJno7CisgICAgICBk ZWZhdWx0OgorICAgICAgICByZXR1cm4gKGludCAqKTA7IC8qIHsgZGctd2Fy bmluZyAibnVsbCIgfSAqLworICAgIH0KK30KKworaW50ICoKK2Jhcl9yICh2 b2lkKQoreworICByZXR1cm4gMDsJCS8qIHsgZGctd2FybmluZyAibnVsbCIg fSAqLworfQorCkluZGV4OiBnY2MvZ2ltcGxlLXNzYS1pc29sYXRlLXBhdGhz LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2dpbXBsZS1zc2Et aXNvbGF0ZS1wYXRocy5jCShyZXZpc2lvbiAyMjU4NjgpCisrKyBnY2MvZ2lt cGxlLXNzYS1pc29sYXRlLXBhdGhzLmMJKHdvcmtpbmcgY29weSkKQEAgLTMy OSwxNSArMzI5LDMzIEBAIGZpbmRfaW1wbGljaXRfZXJyb25lb3VzX2JlaGF2 aW91ciAodm9pZCkKIAkJICAgICBpbiBvdGhlciBibG9ja3Mgd291bGQgcmVx dWlyZSBtb3JlIGNvbXBsZXggcGF0aAogCQkgICAgIGlzb2xhdGlvbiBjb2Rl LiAgICovCiAJCSAgaWYgKGdpbXBsZV9iYiAodXNlX3N0bXQpICE9IGJiKQog CQkgICAgY29udGludWU7CiAKLQkJICBpZiAoaW5mZXJfbm9ubnVsbF9yYW5n ZSAodXNlX3N0bXQsIGxocywKLQkJCQkJICAgZmxhZ19pc29sYXRlX2Vycm9u ZW91c19wYXRoc19kZXJlZmVyZW5jZSwKLQkJCQkJICAgZmxhZ19pc29sYXRl X2Vycm9uZW91c19wYXRoc19hdHRyaWJ1dGUpKQorCQkgIGJvb2wgYnlfZGVy ZWZlcmVuY2UgCisJCSAgICA9IGluZmVyX25vbm51bGxfcmFuZ2VfYnlfZGVy ZWZlcmVuY2UgKHVzZV9zdG10LCBsaHMpOwogCisJCSAgaWYgKGJ5X2RlcmVm ZXJlbmNlIAorCQkgICAgICB8fCBpbmZlcl9ub25udWxsX3JhbmdlX2J5X2F0 dHJpYnV0ZSAodXNlX3N0bXQsIGxocykpCiAJCSAgICB7CisJCSAgICAgIGxv Y2F0aW9uX3QgbG9jID0gZ2ltcGxlX2xvY2F0aW9uICh1c2Vfc3RtdCkKKwkJ CT8gZ2ltcGxlX2xvY2F0aW9uICh1c2Vfc3RtdCkKKwkJCTogZ2ltcGxlX3Bo aV9hcmdfbG9jYXRpb24gKHBoaSwgaSk7CisKKwkJICAgICAgaWYgKGJ5X2Rl cmVmZXJlbmNlKQorCQkJeworCQkJICB3YXJuaW5nX2F0IChsb2MsIE9QVF9X bnVsbF9kZXJlZmVyZW5jZSwKKwkJCQkgICAgICAicG90ZW50aWFsIG51bGwg cG9pbnRlciBkZXJlZmVyZW5jZSIpOworCQkJICBpZiAoIWZsYWdfaXNvbGF0 ZV9lcnJvbmVvdXNfcGF0aHNfZGVyZWZlcmVuY2UpCisJCQkgICAgY29udGlu dWU7CisJCQl9CisJCSAgICAgIGVsc2UgCisJCQl7CisJCQkgIGlmICghZmxh Z19pc29sYXRlX2Vycm9uZW91c19wYXRoc19hdHRyaWJ1dGUpCisJCQkgICAg Y29udGludWU7CisJCQl9CisKIAkJICAgICAgZHVwbGljYXRlID0gaXNvbGF0 ZV9wYXRoIChiYiwgZHVwbGljYXRlLCBlLAogCQkJCQkJdXNlX3N0bXQsIGxo cywgZmFsc2UpOwogCiAJCSAgICAgIC8qIFdoZW4gd2UgcmVtb3ZlIGFuIGlu Y29taW5nIGVkZ2UsIHdlIG5lZWQgdG8KIAkJCSByZXByb2Nlc3MgdGhlIEl0 aCBlbGVtZW50LiAgKi8KQEAgLTM3OSwxNyArMzk3LDMzIEBAIGZpbmRfZXhw bGljaXRfZXJyb25lb3VzX2JlaGF2aW91ciAodm9pZCkKIAkgYmVjYXVzZSBv ZiBqdW1wIHRocmVhZGluZyBhbmQgY29uc3RhbnQgcHJvcGFnYXRpb24uICAq LwogICAgICAgZm9yIChzaSA9IGdzaV9zdGFydF9iYiAoYmIpOyAhZ3NpX2Vu ZF9wIChzaSk7IGdzaV9uZXh0ICgmc2kpKQogCXsKIAkgIGdpbXBsZSBzdG10 ID0gZ3NpX3N0bXQgKHNpKTsKIAotCSAgLyogQnkgcGFzc2luZyBudWxsX3Bv aW50ZXJfbm9kZSwgd2UgY2FuIHVzZSBpbmZlcl9ub25udWxsX3JhbmdlCi0J ICAgICB0byBkZXRlY3QgZXhwbGljaXQgTlVMTCBwb2ludGVyIGRlcmVmZXJl bmNlcyBhbmQgb3RoZXIgdXNlcwotCSAgICAgd2hlcmUgYSBub24tTlVMTCB2 YWx1ZSBpcyByZXF1aXJlZC4gICovCi0JICBpZiAoaW5mZXJfbm9ubnVsbF9y YW5nZSAoc3RtdCwgbnVsbF9wb2ludGVyX25vZGUsCi0JCQkJICAgZmxhZ19p c29sYXRlX2Vycm9uZW91c19wYXRoc19kZXJlZmVyZW5jZSwKLQkJCQkgICBm bGFnX2lzb2xhdGVfZXJyb25lb3VzX3BhdGhzX2F0dHJpYnV0ZSkpCisJICAv KiBCeSBwYXNzaW5nIG51bGxfcG9pbnRlcl9ub2RlLCB3ZSBjYW4gdXNlIHRo ZQorCSAgICAgaW5mZXJfbm9ubnVsbF9yYW5nZSBmdW5jdGlvbnMgdG8gZGV0 ZWN0IGV4cGxpY2l0IE5VTEwKKwkgICAgIHBvaW50ZXIgZGVyZWZlcmVuY2Vz IGFuZCBvdGhlciB1c2VzIHdoZXJlIGEgbm9uLU5VTEwKKwkgICAgIHZhbHVl IGlzIHJlcXVpcmVkLiAgKi8KKwkgIAorCSAgYm9vbCBieV9kZXJlZmVyZW5j ZQorCSAgICA9IGluZmVyX25vbm51bGxfcmFuZ2VfYnlfZGVyZWZlcmVuY2Ug KHN0bXQsIG51bGxfcG9pbnRlcl9ub2RlKTsKKwkgIGlmIChieV9kZXJlZmVy ZW5jZQorCSAgICAgIHx8IGluZmVyX25vbm51bGxfcmFuZ2VfYnlfYXR0cmli dXRlIChzdG10LCBudWxsX3BvaW50ZXJfbm9kZSkpCiAJICAgIHsKKwkgICAg ICBpZiAoYnlfZGVyZWZlcmVuY2UpCisJCXsKKwkJICB3YXJuaW5nX2F0IChn aW1wbGVfbG9jYXRpb24gKHN0bXQpLCBPUFRfV251bGxfZGVyZWZlcmVuY2Us CisJCQkgICAgICAibnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIik7CisJCSAg aWYgKCFmbGFnX2lzb2xhdGVfZXJyb25lb3VzX3BhdGhzX2RlcmVmZXJlbmNl KQorCQkgICAgY29udGludWU7CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJ ICBpZiAoIWZsYWdfaXNvbGF0ZV9lcnJvbmVvdXNfcGF0aHNfYXR0cmlidXRl KQorCQkgICAgY29udGludWU7CisJCX0KKwogCSAgICAgIGluc2VydF90cmFw X2FuZF9yZW1vdmVfdHJhaWxpbmdfc3RhdGVtZW50cyAoJnNpLAogCQkJCQkJ CSAgbnVsbF9wb2ludGVyX25vZGUpOwogCiAJICAgICAgLyogQW5kIGZpbmFs bHksIHJlbW92ZSBhbGwgb3V0Z29pbmcgZWRnZXMgZnJvbSBCQi4gICovCiAJ ICAgICAgZWRnZSBlOwpAQCAtNTMyLDExICs1NjYsMTIgQEAgcHVibGljOgog ICB2aXJ0dWFsIGJvb2wgZ2F0ZSAoZnVuY3Rpb24gKikKICAgICB7CiAgICAg ICAvKiBJZiB3ZSBkbyBub3QgaGF2ZSBhIHN1aXRhYmxlIGJ1aWx0aW4gZnVu Y3Rpb24gZm9yIHRoZSB0cmFwIHN0YXRlbWVudCwKIAkgdGhlbiBkbyBub3Qg cGVyZm9ybSB0aGUgb3B0aW1pemF0aW9uLiAgKi8KICAgICAgIHJldHVybiAo ZmxhZ19pc29sYXRlX2Vycm9uZW91c19wYXRoc19kZXJlZmVyZW5jZSAhPSAw Ci0JICAgICAgfHwgZmxhZ19pc29sYXRlX2Vycm9uZW91c19wYXRoc19hdHRy aWJ1dGUgIT0gMCk7CisJICAgICAgfHwgZmxhZ19pc29sYXRlX2Vycm9uZW91 c19wYXRoc19hdHRyaWJ1dGUgIT0gMAorCSAgICAgIHx8IHdhcm5fbnVsbF9k ZXJlZmVyZW5jZSk7CiAgICAgfQogCiAgIHZpcnR1YWwgdW5zaWduZWQgaW50 IGV4ZWN1dGUgKGZ1bmN0aW9uICopCiAgICAgewogICAgICAgcmV0dXJuIGdp bXBsZV9zc2FfaXNvbGF0ZV9lcnJvbmVvdXNfcGF0aHMgKCk7CkluZGV4OiBn Y2MvdWJzYW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdWJz YW4uYwkocmV2aXNpb24gMjI1ODY4KQorKysgZ2NjL3Vic2FuLmMJKHdvcmtp bmcgY29weSkKQEAgLTE2MTMsMTEgKzE2MTMsMTEgQEAgaW5zdHJ1bWVudF9u b25udWxsX2FyZyAoZ2ltcGxlX3N0bXRfaXRlcgogICBsb2NbMV0gPSBVTktO T1dOX0xPQ0FUSU9OOwogICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8 IGdpbXBsZV9jYWxsX251bV9hcmdzIChzdG10KTsgaSsrKQogICAgIHsKICAg ICAgIHRyZWUgYXJnID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpKTsKICAg ICAgIGlmIChQT0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBFIChhcmcpKQotCSAg JiYgaW5mZXJfbm9ubnVsbF9yYW5nZSAoc3RtdCwgYXJnLCBmYWxzZSwgdHJ1 ZSkpCisJICAmJiBpbmZlcl9ub25udWxsX3JhbmdlX2J5X2F0dHJpYnV0ZSAo c3RtdCwgYXJnKSkKIAl7CiAJICBnaW1wbGUgZzsKIAkgIGlmICghaXNfZ2lt cGxlX3ZhbCAoYXJnKSkKIAkgICAgewogCSAgICAgIGcgPSBnaW1wbGVfYnVp bGRfYXNzaWduIChtYWtlX3NzYV9uYW1lIChUUkVFX1RZUEUgKGFyZykpLCBh cmcpOwpAQCAtMTY3OCwxMSArMTY3OCwxMSBAQCBpbnN0cnVtZW50X25vbm51 bGxfcmV0dXJuIChnaW1wbGVfc3RtdF9pCiAgIGxvY1swXSA9IGdpbXBsZV9s b2NhdGlvbiAoc3RtdCk7CiAgIGxvY1sxXSA9IFVOS05PV05fTE9DQVRJT047 CiAgIGlmIChhcmcKICAgICAgICYmIFBPSU5URVJfVFlQRV9QIChUUkVFX1RZ UEUgKGFyZykpCiAgICAgICAmJiBpc19naW1wbGVfdmFsIChhcmcpCi0gICAg ICAmJiBpbmZlcl9ub25udWxsX3JhbmdlIChzdG10LCBhcmcsIGZhbHNlLCB0 cnVlKSkKKyAgICAgICYmIGluZmVyX25vbm51bGxfcmFuZ2VfYnlfYXR0cmli dXRlIChzdG10LCBhcmcpKQogICAgIHsKICAgICAgIGJhc2ljX2Jsb2NrIHRo ZW5fYmIsIGZhbGx0aHJ1X2JiOwogICAgICAgKmdzaSA9IGNyZWF0ZV9jb25k X2luc2VydF9wb2ludCAoZ3NpLCB0cnVlLCBmYWxzZSwgdHJ1ZSwKIAkJCQkg ICAgICAgJnRoZW5fYmIsICZmYWxsdGhydV9iYik7CiAgICAgICBnaW1wbGUg ZyA9IGdpbXBsZV9idWlsZF9jb25kIChFUV9FWFBSLCBhcmcsCkluZGV4OiBn Y2MvY29tbW9uLm9wdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv Y29tbW9uLm9wdAkocmV2aXNpb24gMjI1ODY4KQorKysgZ2NjL2NvbW1vbi5v cHQJKHdvcmtpbmcgY29weSkKQEAgLTU5MCwxMCArNTkwLDE1IEBAIENvbW1v biBSZWplY3ROZWdhdGl2ZSBKb2luZWQgV2FybmluZyBVbmQKIAogV2xhcmdl ci10aGFuPQogQ29tbW9uIFJlamVjdE5lZ2F0aXZlIEpvaW5lZCBVSW50ZWdl ciBXYXJuaW5nCiAtV2xhcmdlci10aGFuPTxudW1iZXI+CVdhcm4gaWYgYW4g b2JqZWN0IGlzIGxhcmdlciB0aGFuIDxudW1iZXI+IGJ5dGVzCiAKK1dudWxs LWRlcmVmZXJlbmNlCitDb21tb24gVmFyKHdhcm5fbnVsbF9kZXJlZmVyZW5j ZSkgV2FybmluZyBFbmFibGVkQnkoV2FsbCkKK1dhcm4gaWYgdGhlIGNvbXBp bGVyIGRldGVjdHMgcGF0aHMgd2hpY2ggdHJpZ2dlciBlcnJvbmVvdXMgb3Ig dW5kZWZpbmVkCitiZWhhdmlvdXIgZHVlIHRvIGRlcmVmZXJlbmNpbmcgYSBO VUxMIHBvaW50ZXIuCisKIFd1bnNhZmUtbG9vcC1vcHRpbWl6YXRpb25zCiBD b21tb24gVmFyKHdhcm5fdW5zYWZlX2xvb3Bfb3B0aW1pemF0aW9ucykgV2Fy bmluZwogV2FybiBpZiB0aGUgbG9vcCBjYW5ub3QgYmUgb3B0aW1pemVkIGR1 ZSB0byBub250cml2aWFsIGFzc3VtcHRpb25zLgogCiBXbWlzc2luZy1ub3Jl dHVybgpJbmRleDogZ2NjL2dpbXBsZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy9naW1wbGUuYwkocmV2aXNpb24gMjI1ODY4KQorKysgZ2Nj L2dpbXBsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC0yNjE2LDM1ICsyNjE2LDUy IEBAIGNoZWNrX2xvYWRzdG9yZSAoZ2ltcGxlLCB0cmVlIG9wLCB0cmVlLCAK ICAgICAgICYmIG9wZXJhbmRfZXF1YWxfcCAoVFJFRV9PUEVSQU5EIChvcCwg MCksICh0cmVlKWRhdGEsIDApKQogICAgIHJldHVybiB0cnVlOwogICByZXR1 cm4gZmFsc2U7CiB9CiAKLS8qIElmIE9QIGNhbiBiZSBpbmZlcnJlZCB0byBi ZSBub24tTlVMTCBhZnRlciBTVE1UIGV4ZWN1dGVzLCByZXR1cm4gdHJ1ZS4K IAotICAgREVSRUZFUkVOQ0UgaXMgVFJVRSBpZiB3ZSBjYW4gdXNlIGEgcG9p bnRlciBkZXJlZmVyZW5jZSB0byBpbmZlciBhCi0gICBub24tTlVMTCByYW5n ZSwgRkFMU0Ugb3RoZXJ3aXNlLgotCi0gICBBVFRSSUJVVEUgaXMgVFJVRSBp ZiB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXMgdG8gaW5mZXIgYSBub24tTlVMTCBy YW5nZQotICAgZm9yIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZh bHVlcy4gIEZBTFNFIG90aGVyd2lzZS4gICovCisvKiBSZXR1cm4gdHJ1ZSBp ZiBPUCBjYW4gYmUgaW5mZXJyZWQgdG8gYmUgbm9uLU5VTEwgYWZ0ZXIgU1RN VCBleGVjdXRlcywKKyAgIGVpdGhlciBieSB1c2luZyBhIHBvaW50ZXIgZGVy ZWZlcmVuY2Ugb3IgYXR0cmlidXRlcy4gICovCitib29sCitpbmZlcl9ub25u dWxsX3JhbmdlIChnaW1wbGUgc3RtdCwgdHJlZSBvcCkKK3sKKyAgcmV0dXJu IGluZmVyX25vbm51bGxfcmFuZ2VfYnlfZGVyZWZlcmVuY2UgKHN0bXQsIG9w KQorICAgIHx8IGluZmVyX25vbm51bGxfcmFuZ2VfYnlfYXR0cmlidXRlIChz dG10LCBvcCk7Cit9CiAKKy8qIFJldHVybiB0cnVlIGlmIE9QIGNhbiBiZSBp bmZlcnJlZCB0byBiZSBub24tTlVMTCBhZnRlciBTVE1UCisgICBleGVjdXRl cyBieSB1c2luZyBhIHBvaW50ZXIgZGVyZWZlcmVuY2UuICAqLwogYm9vbAot aW5mZXJfbm9ubnVsbF9yYW5nZSAoZ2ltcGxlIHN0bXQsIHRyZWUgb3AsIGJv b2wgZGVyZWZlcmVuY2UsIGJvb2wgYXR0cmlidXRlKQoraW5mZXJfbm9ubnVs bF9yYW5nZV9ieV9kZXJlZmVyZW5jZSAoZ2ltcGxlIHN0bXQsIHRyZWUgb3Ap CiB7CiAgIC8qIFdlIGNhbiBvbmx5IGFzc3VtZSB0aGF0IGEgcG9pbnRlciBk ZXJlZmVyZW5jZSB3aWxsIHlpZWxkCiAgICAgIG5vbi1OVUxMIGlmIC1mZGVs ZXRlLW51bGwtcG9pbnRlci1jaGVja3MgaXMgZW5hYmxlZC4gICovCiAgIGlm ICghZmxhZ19kZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcwogICAgICAgfHwg IVBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKG9wKSkKICAgICAgIHx8IGdp bXBsZV9jb2RlIChzdG10KSA9PSBHSU1QTEVfQVNNKQogICAgIHJldHVybiBm YWxzZTsKIAotICBpZiAoZGVyZWZlcmVuY2UKLSAgICAgICYmIHdhbGtfc3Rt dF9sb2FkX3N0b3JlX29wcyAoc3RtdCwgKHZvaWQgKilvcCwKLQkJCQkgICBj aGVja19sb2Fkc3RvcmUsIGNoZWNrX2xvYWRzdG9yZSkpCisgIGlmICh3YWxr X3N0bXRfbG9hZF9zdG9yZV9vcHMgKHN0bXQsICh2b2lkICopb3AsCisJCQkJ Y2hlY2tfbG9hZHN0b3JlLCBjaGVja19sb2Fkc3RvcmUpKQogICAgIHJldHVy biB0cnVlOwogCi0gIGlmIChhdHRyaWJ1dGUKLSAgICAgICYmIGlzX2dpbXBs ZV9jYWxsIChzdG10KSAmJiAhZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3Rt dCkpCisgIHJldHVybiBmYWxzZTsKK30KKworLyogUmV0dXJuIHRydWUgaWYg T1AgY2FuIGJlIGluZmVycmVkIHRvIGJlIGEgbm9uLU5VTEwgYWZ0ZXIgU1RN VAorICAgZXhlY3V0ZXMgYnkgdXNpbmcgYXR0cmlidXRlcy4gICovCitib29s CitpbmZlcl9ub25udWxsX3JhbmdlX2J5X2F0dHJpYnV0ZSAoZ2ltcGxlIHN0 bXQsIHRyZWUgb3ApCit7CisgIC8qIFdlIGNhbiBvbmx5IGFzc3VtZSB0aGF0 IGEgcG9pbnRlciBkZXJlZmVyZW5jZSB3aWxsIHlpZWxkCisgICAgIG5vbi1O VUxMIGlmIC1mZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MgaXMgZW5hYmxl ZC4gICovCisgIGlmICghZmxhZ19kZWxldGVfbnVsbF9wb2ludGVyX2NoZWNr cworICAgICAgfHwgIVBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKG9wKSkK KyAgICAgIHx8IGdpbXBsZV9jb2RlIChzdG10KSA9PSBHSU1QTEVfQVNNKQor ICAgIHJldHVybiBmYWxzZTsKKworICBpZiAoaXNfZ2ltcGxlX2NhbGwgKHN0 bXQpICYmICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10KSkKICAgICB7 CiAgICAgICB0cmVlIGZudHlwZSA9IGdpbXBsZV9jYWxsX2ZudHlwZSAoc3Rt dCk7CiAgICAgICB0cmVlIGF0dHJzID0gVFlQRV9BVFRSSUJVVEVTIChmbnR5 cGUpOwogICAgICAgZm9yICg7IGF0dHJzOyBhdHRycyA9IFRSRUVfQ0hBSU4g KGF0dHJzKSkKIAl7CkBAIC0yNjc5LDE3ICsyNjk2LDE2IEBAIGluZmVyX25v bm51bGxfcmFuZ2UgKGdpbXBsZSBzdG10LCB0cmVlIG8KIAl9CiAgICAgfQog CiAgIC8qIElmIHRoaXMgZnVuY3Rpb24gaXMgbWFya2VkIGFzIHJldHVybmlu ZyBub24tbnVsbCwgdGhlbiB3ZSBjYW4KICAgICAgaW5mZXIgT1AgaXMgbm9u LW51bGwgaWYgaXQgaXMgdXNlZCBpbiB0aGUgcmV0dXJuIHN0YXRlbWVudC4g ICovCi0gIGlmIChhdHRyaWJ1dGUpCi0gICAgaWYgKGdyZXR1cm4gKnJldHVy bl9zdG10ID0gZHluX2Nhc3QgPGdyZXR1cm4gKj4gKHN0bXQpKQotICAgICAg aWYgKGdpbXBsZV9yZXR1cm5fcmV0dmFsIChyZXR1cm5fc3RtdCkKLQkgICYm IG9wZXJhbmRfZXF1YWxfcCAoZ2ltcGxlX3JldHVybl9yZXR2YWwgKHJldHVy bl9zdG10KSwgb3AsIDApCi0JICAmJiBsb29rdXBfYXR0cmlidXRlICgicmV0 dXJuc19ub25udWxsIiwKLQkJCSAgICAgICBUWVBFX0FUVFJJQlVURVMgKFRS RUVfVFlQRSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkpKQotCXJldHVybiB0 cnVlOworICBpZiAoZ3JldHVybiAqcmV0dXJuX3N0bXQgPSBkeW5fY2FzdCA8 Z3JldHVybiAqPiAoc3RtdCkpCisgICAgaWYgKGdpbXBsZV9yZXR1cm5fcmV0 dmFsIChyZXR1cm5fc3RtdCkKKwkmJiBvcGVyYW5kX2VxdWFsX3AgKGdpbXBs ZV9yZXR1cm5fcmV0dmFsIChyZXR1cm5fc3RtdCksIG9wLCAwKQorCSYmIGxv b2t1cF9hdHRyaWJ1dGUgKCJyZXR1cm5zX25vbm51bGwiLAorCQkJICAgICBU WVBFX0FUVFJJQlVURVMgKFRSRUVfVFlQRSAoY3VycmVudF9mdW5jdGlvbl9k ZWNsKSkpKQorICAgICAgcmV0dXJuIHRydWU7CiAKICAgcmV0dXJuIGZhbHNl OwogfQogCiAvKiBDb21wYXJlIHR3byBjYXNlIGxhYmVscy4gIEJlY2F1c2Ug dGhlIGZyb250IGVuZCBzaG91bGQgYWxyZWFkeSBoYXZlCkluZGV4OiBnY2Mv Z2ltcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2dpbXBs ZS5oCShyZXZpc2lvbiAyMjU4NjgpCisrKyBnY2MvZ2ltcGxlLmgJKHdvcmtp bmcgY29weSkKQEAgLTEzOTksMTEgKzEzOTksMTMgQEAgZXh0ZXJuIGJvb2wg Z2ltcGxlX2NhbGxfYnVpbHRpbl9wIChjb25zdAogZXh0ZXJuIGJvb2wgZ2lt cGxlX2NhbGxfYnVpbHRpbl9wIChjb25zdF9naW1wbGUsIGVudW0gYnVpbHRf aW5fY2xhc3MpOwogZXh0ZXJuIGJvb2wgZ2ltcGxlX2NhbGxfYnVpbHRpbl9w IChjb25zdF9naW1wbGUsIGVudW0gYnVpbHRfaW5fZnVuY3Rpb24pOwogZXh0 ZXJuIGJvb2wgZ2ltcGxlX2FzbV9jbG9iYmVyc19tZW1vcnlfcCAoY29uc3Qg Z2FzbSAqKTsKIGV4dGVybiB2b2lkIGR1bXBfZGVjbF9zZXQgKEZJTEUgKiwg Yml0bWFwKTsKIGV4dGVybiBib29sIG5vbmZyZWVpbmdfY2FsbF9wIChnaW1w bGUpOwotZXh0ZXJuIGJvb2wgaW5mZXJfbm9ubnVsbF9yYW5nZSAoZ2ltcGxl LCB0cmVlLCBib29sLCBib29sKTsKK2V4dGVybiBib29sIGluZmVyX25vbm51 bGxfcmFuZ2UgKGdpbXBsZSwgdHJlZSk7CitleHRlcm4gYm9vbCBpbmZlcl9u b25udWxsX3JhbmdlX2J5X2RlcmVmZXJlbmNlIChnaW1wbGUsIHRyZWUpOwor ZXh0ZXJuIGJvb2wgaW5mZXJfbm9ubnVsbF9yYW5nZV9ieV9hdHRyaWJ1dGUg KGdpbXBsZSwgdHJlZSk7CiBleHRlcm4gdm9pZCBzb3J0X2Nhc2VfbGFiZWxz ICh2ZWM8dHJlZT4pOwogZXh0ZXJuIHZvaWQgcHJlcHJvY2Vzc19jYXNlX2xh YmVsX3ZlY19mb3JfZ2ltcGxlICh2ZWM8dHJlZT4sIHRyZWUsIHRyZWUgKik7 CiBleHRlcm4gdm9pZCBnaW1wbGVfc2VxX3NldF9sb2NhdGlvbiAoZ2ltcGxl X3NlcSwgbG9jYXRpb25fdCk7CiBleHRlcm4gdm9pZCBnaW1wbGVfc2VxX2Rp c2NhcmQgKGdpbXBsZV9zZXEpOwogZXh0ZXJuIHZvaWQgbWF5YmVfcmVtb3Zl X3VudXNlZF9jYWxsX2FyZ3MgKHN0cnVjdCBmdW5jdGlvbiAqLCBnaW1wbGUp Owo= --f46d043c7e785054fd051c6c9316--