From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 108718 invoked by alias); 7 Oct 2017 16:48:45 -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 108708 invoked by uid 89); 7 Oct 2017 16:48:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-15.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=convince X-HELO: EUR03-DB5-obe.outbound.protection.outlook.com Received: from mail-oln040092071082.outbound.protection.outlook.com (HELO EUR03-DB5-obe.outbound.protection.outlook.com) (40.92.71.82) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 07 Oct 2017 16:48:42 +0000 Received: from VE1EUR03FT003.eop-EUR03.prod.protection.outlook.com (10.152.18.56) by VE1EUR03HT165.eop-EUR03.prod.protection.outlook.com (10.152.19.238) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.77.10; Sat, 7 Oct 2017 16:48:38 +0000 Received: from AM5PR0701MB2657.eurprd07.prod.outlook.com (10.152.18.54) by VE1EUR03FT003.mail.protection.outlook.com (10.152.18.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.77.10 via Frontend Transport; Sat, 7 Oct 2017 16:48:38 +0000 Received: from AM5PR0701MB2657.eurprd07.prod.outlook.com ([fe80::8c96:1341:5db1:7f8c]) by AM5PR0701MB2657.eurprd07.prod.outlook.com ([fe80::8c96:1341:5db1:7f8c%18]) with mapi id 15.20.0077.019; Sat, 7 Oct 2017 16:48:38 +0000 From: Bernd Edlinger To: Jeff Law , Martin Sebor , "gcc-patches@gcc.gnu.org" , Joseph Myers , Jason Merrill Subject: [PATCH] Add a warning for invalid function casts Date: Sat, 07 Oct 2017 18:23:00 -0000 Message-ID: <6f4b4385-52af-6b41-14bf-7e0a06895a8f@hotmail.de> References: <1644e85e-6d3a-a114-32b5-a9b49de24407@gmail.com> <72167c17-48f5-d5d6-d9cd-87004e3c1d11@gmail.com> <476f5e91-3768-ef69-331a-ce0c00d38277@hotmail.de> In-Reply-To: <476f5e91-3768-ef69-331a-ce0c00d38277@hotmail.de> x-ms-exchange-imapappendstamp: AM5PR0701MB2657.eurprd07.prod.outlook.com (15.20.0077.017) authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=hotmail.de; x-incomingtopheadermarker: OriginalChecksum:F09B85D7BD4E2C700B7EFBC9F5F8B3237BA9B5A7BB185CA0175C522A36054F5B;UpperCasedChecksum:30782B1DCFC28D6DEB6E394E67FCD3E7820B82EC85A6AEE3D2CFF9BC5DD3DCF8;SizeAsReceived:7555;Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [HAqHncJCwil8tH1EJd0dCV3U0xP5lTCY] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VE1EUR03HT165;6:afnXykUjIAPcgbv7HyqUFuhjzbC5wuXn/BMODaH9FLUY5md9t75iUsVltQC4zbBS/Kj9j82Jnfmd30uhnmtRt0GwfnlyMAI1S3JmO7VB/rY5xKHkTytwtNS4C5z6AqUy85C/sM2BQ+9T8XN2Bz72wKGxHj/OwhvI9+S626wEeIF3sLZSJdVOoIRFZMiNQMYJVvYlpg/PYRhbMvpzuIq3IPJZda99AfQ8ZLaPk6CMu+hJdgrbNn/U9esASGPSw9Pibd5GLkCE22nEQc7Efy9UVPfISTtXO3W+NGzsNSqBl2P3SRhSEz0KYGyFIlyN8x2eP2XT2ROSXrHbkwXEMgRokg==;5:Ps2TjhWMjKeXFuJsg78LgTUWWndEiXtnK+WlqtqUxykehGgyAUTVm0pxP+KgQVd4lyolsN1pTaerHAnK6KULVjTxQfVNmpPHPYSZmUW6cy5iJCI/c5r/cVeUJ9rRfWhRv0ZhGKaU5kcXl93bYl3B0Q==;24:OuwXNRkG759t3hxESKV98nDA19W2eWFBGkyxc/p8/wu/aPsNK2v2h2RbpTacycXO4KfmlVATiWGtydPc1ONGLZe5ASZLdEbbQ39wPsMYYWc=;7:hNiLTxEJiCdaZ3fSCCsDLTFhDZ+pq49PHyjY90SpbHKXmweKx+MPCWGtbUdoAy91gWvyt6GlRtZFY3b8SLKVZ7sg6036eSP84cxJjEcSYCndAZNdMrT2bzvwltIZfFzVMCtFNiCITMd36Wuj8vZbV4UPFzLnEGWQXX5vp0xzAT9VxC5YmM56mveqnTO11ZwfSqiR4ytgRJFG/Aurh1pBN13t6wBXJoIbx+4VBMMWc7Y= x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: bd574c8e-ce28-46f9-7259-08d50da34242 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125374)(1701031045);SRVR:VE1EUR03HT165; x-ms-traffictypediagnostic: VE1EUR03HT165: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031);SRVR:VE1EUR03HT165;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VE1EUR03HT165; x-forefront-prvs: 045315E1EE x-forefront-antispam-report: SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:VE1EUR03HT165;H:AM5PR0701MB2657.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_003_6f4b438552af6b4114bf7e0a06895a8fhotmailde_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2017 16:48:38.4024 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR03HT165 X-SW-Source: 2017-10/txt/msg00424.txt.bz2 --_003_6f4b438552af6b4114bf7e0a06895a8fhotmailde_ Content-Type: text/plain; charset="iso-8859-1" Content-ID: <2B30993CC1C60A47B33845F9AD1DC1AA@sct-15-1-1199-6-msonline-outlook-20107.templateTenant> Content-Transfer-Encoding: quoted-printable Content-length: 1265 Hi! I think I have now something useful, it has a few more heuristics added, to reduce the number of false-positives so that it is able to find real bugs, for instance in openssl it triggers at a function cast which has already a TODO on it. The heuristics are: - handle void (*)(void) as a wild-card function type. - ignore volatile, const qualifiers on parameters/return. - handle any pointers as equivalent. - handle integral types, enums, and booleans of same precision and signedness as equivalent. - stop parameter validation at the first "...". I cannot convince myself to handle uintptr_t and pointers as equivalent. It is possible that targets like m68k have an ABI where uintptr_t and void* are different as return values but are identical as parameter values. IMHO adding an exception for uintptr_t vs. pointer as parameters could easily prevent detection of real bugs. Even if it is safe for all targets. However it happens: Examples are the libiberty splay-tree functions, and also one single place in linux, where an argument of type "long int" is used to call a timer function with a pointer argument. Note, linux does not enable -Wextra. Patch was bootstrapped and reg-tested on x86_64-pc-linux-gnu. Is it OK for trunk? Thanks Bernd. --_003_6f4b438552af6b4114bf7e0a06895a8fhotmailde_ Content-Type: text/plain; name="changelog-cast-function-type.txt" Content-Description: changelog-cast-function-type.txt Content-Disposition: attachment; filename="changelog-cast-function-type.txt"; size=1209; creation-date="Sat, 07 Oct 2017 16:41:30 GMT"; modification-date="Sat, 07 Oct 2017 16:41:30 GMT" Content-ID: <9E783EE39707C04B91B04F336721BC02@sct-15-1-1199-6-msonline-outlook-20107.templateTenant> Content-Transfer-Encoding: base64 Content-length: 1639 Z2NjOg0KMjAxNy0xMC0wNiAgQmVybmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxp bmdlckBob3RtYWlsLmRlPg0KDQoJKiBkb2MvaW52b2tlLnRleGk6IERvY3Vt ZW50IC1XY2FzdC1mdW5jdGlvbi10eXBlLg0KCSogcmVjb2cuaCAoc3RvcmVk X2Z1bmNwdHIpOiBDaGFuZ2Ugc2lnbmF0dXJlLg0KCSogdHJlZS1kdW1wLmMg KGR1bXBfbm9kZSk6IEF2b2lkIHdhcm5pbmcuDQoJKiB0eXBlZC1zcGxheS10 cmVlLmggKHR5cGVkX3NwbGF5X3RyZWUpOiBBdm9pZCB3YXJuaW5nLg0KDQps aWJjcHA6DQoyMDE3LTEwLTA2ICBCZXJuZCBFZGxpbmdlciAgPGJlcm5kLmVk bGluZ2VyQGhvdG1haWwuZGU+DQoNCgkqIGludGVybmFsLmggKG1heWJlX3By aW50X2xpbmUpOiBDaGFuZ2Ugc2lnbmF0dXJlLg0KCQ0KYy1mYW1pbHk6DQoy MDE3LTEwLTA2ICBCZXJuZCBFZGxpbmdlciAgPGJlcm5kLmVkbGluZ2VyQGhv dG1haWwuZGU+DQoNCgkqIGMub3B0IChXY2FzdC1mdW5jdGlvbi10eXBlKTog TmV3IHdhcm5pbmcgb3B0aW9uLg0KCSogYy1sZXguYyAoZ2V0X2ZpbGVpbmZv KTogQXZvaWQgd2FybmluZy4NCgkqIGMtcHBvdXRwdXQuYyAoc2Nhbl90cmFu c2xhdGlvbl91bml0X2RpcmVjdGl2ZXNfb25seSk6IFJlbW92ZSBjYXN0Lg0K DQpjOg0KMjAxNy0xMC0wNiAgQmVybmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxp bmdlckBob3RtYWlsLmRlPg0KDQoJKiBjLXR5cGVjay5jIChjX2FiaV9lcXVp dl90eXBlX3AsIGNfc2FmZV9mdW5jdGlvbl90eXBlX2Nhc3RfcCk6IE5ldy4N CgkoYnVpbGRfY19jYXN0KTogSW1wbGVtZW50IC1XY2FzdF9mdW5jdGlvbl90 eXBlLg0KDQpjcDoNCjIwMTctMTAtMDYgIEJlcm5kIEVkbGluZ2VyICA8YmVy bmQuZWRsaW5nZXJAaG90bWFpbC5kZT4NCg0KCSogZGVjbDIuYyAoc3RhcnRf c3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBBdm9pZCB3YXJu aW5nLg0KCSogdHlwZWNrLmMgKGN4eF9hYmlfZXF1aXZfdHlwZV9wLCBjeHhf c2FmZV9mdW5jdGlvbl90eXBlX2Nhc3RfcCk6IE5ldy4NCgkoYnVpbGRfcmVp bnRlcnByZXRfY2FzdF8xKTogSW1wbGVtZW50IC1XY2FzdF9mdW5jdGlvbl90 eXBlLg0KDQp0ZXN0c3VpdGU6DQoyMDE3LTEwLTA2ICBCZXJuZCBFZGxpbmdl ciAgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+DQoNCgkqIGMtYysrLWNv bW1vbi9XY2FzdC1mdW5jdGlvbi10eXBlLmM6IE5ldyB0ZXN0Lg0K --_003_6f4b438552af6b4114bf7e0a06895a8fhotmailde_ Content-Type: text/x-patch; name="patch-cast-function-type.diff" Content-Description: patch-cast-function-type.diff Content-Disposition: attachment; filename="patch-cast-function-type.diff"; size=12982; creation-date="Sat, 07 Oct 2017 16:41:30 GMT"; modification-date="Sat, 07 Oct 2017 16:41:30 GMT" Content-ID: <180F77409C39F8409020FFAD4D89014E@sct-15-1-1199-6-msonline-outlook-20107.templateTenant> Content-Transfer-Encoding: base64 Content-length: 17601 SW5kZXg6IGdjYy9jL2MtdHlwZWNrLmMNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCi0tLSBnY2MvYy9jLXR5cGVjay5jCShyZXZpc2lvbiAyNTM0OTMpDQor KysgZ2NjL2MvYy10eXBlY2suYwkod29ya2luZyBjb3B5KQ0KQEAgLTU0NzQs NiArNTQ3NCw1MiBAQCBoYW5kbGVfd2Fybl9jYXN0X3F1YWwgKGxvY2F0aW9u X3QgbG9jLCB0cmVlIHR5cGUsDQogICB3aGlsZSAoVFJFRV9DT0RFIChpbl90 eXBlKSA9PSBQT0lOVEVSX1RZUEUpOw0KIH0NCiANCisvKiBIZXVyaXN0aWMg Y2hlY2sgaWYgdHdvIHBhcmFtZXRlciB0eXBlcyBjYW4gYmUgY29uc2lkZXJl ZCBBQkktZXF1aXZhbGVudC4gICovDQorDQorc3RhdGljIGJvb2wNCitjX2Fi aV9lcXVpdl90eXBlX3AgKHRyZWUgdDEsIHRyZWUgdDIpDQorew0KKyAgdDEg PSBUWVBFX01BSU5fVkFSSUFOVCAodDEpOw0KKyAgdDIgPSBUWVBFX01BSU5f VkFSSUFOVCAodDIpOw0KKw0KKyAgaWYgKFRSRUVfQ09ERSAodDEpID09IFBP SU5URVJfVFlQRQ0KKyAgICAgICYmIFRSRUVfQ09ERSAodDIpID09IFBPSU5U RVJfVFlQRSkNCisgICAgcmV0dXJuIHRydWU7DQorDQorICBpZiAoSU5URUdS QUxfVFlQRV9QICh0MSkNCisgICAgICAmJiBJTlRFR1JBTF9UWVBFX1AgKHQy KQ0KKyAgICAgICYmIFRZUEVfUFJFQ0lTSU9OICh0MSkgPT0gVFlQRV9QUkVD SVNJT04gKHQyKQ0KKyAgICAgICYmIFRZUEVfVU5TSUdORUQgKHQxKSA9PSBU WVBFX1VOU0lHTkVEICh0MikpDQorICAgIHJldHVybiB0cnVlOw0KKw0KKyAg cmV0dXJuIGNvbXB0eXBlcyAodDEsIHQyKTsNCit9DQorDQorLyogQ2hlY2sg aWYgYSB0eXBlIGNhc3QgYmV0d2VlbiB0d28gZnVuY3Rpb24gdHlwZXMgY2Fu IGJlIGNvbnNpZGVyZWQgc2FmZS4gICovDQorDQorc3RhdGljIGJvb2wNCitj X3NhZmVfZnVuY3Rpb25fdHlwZV9jYXN0X3AgKHRyZWUgdDEsIHRyZWUgdDIp DQorew0KKyAgaWYgKFRSRUVfVFlQRSAodDEpID09IHZvaWRfdHlwZV9ub2Rl ICYmDQorICAgICAgVFlQRV9BUkdfVFlQRVMgKHQxKSA9PSB2b2lkX2xpc3Rf bm9kZSkNCisgICAgcmV0dXJuIHRydWU7DQorDQorICBpZiAoVFJFRV9UWVBF ICh0MikgPT0gdm9pZF90eXBlX25vZGUgJiYNCisgICAgICBUWVBFX0FSR19U WVBFUyAodDIpID09IHZvaWRfbGlzdF9ub2RlKQ0KKyAgICByZXR1cm4gdHJ1 ZTsNCisNCisgIGlmICghY19hYmlfZXF1aXZfdHlwZV9wIChUUkVFX1RZUEUg KHQxKSwgVFJFRV9UWVBFICh0MikpKQ0KKyAgICByZXR1cm4gZmFsc2U7DQor DQorICBmb3IgKHQxID0gVFlQRV9BUkdfVFlQRVMgKHQxKSwgdDIgPSBUWVBF X0FSR19UWVBFUyAodDIpOw0KKyAgICAgICB0MSAmJiB0MjsNCisgICAgICAg dDEgPSBUUkVFX0NIQUlOICh0MSksIHQyID0gVFJFRV9DSEFJTiAodDIpKQ0K KyAgICBpZiAoIWNfYWJpX2VxdWl2X3R5cGVfcCAoVFJFRV9WQUxVRSAodDEp LCBUUkVFX1ZBTFVFICh0MikpKQ0KKyAgICAgIHJldHVybiBmYWxzZTsNCisN CisgIHJldHVybiB0cnVlOw0KK30NCisNCiAvKiBCdWlsZCBhbiBleHByZXNz aW9uIHJlcHJlc2VudGluZyBhIGNhc3QgdG8gdHlwZSBUWVBFIG9mIGV4cHJl c3Npb24gRVhQUi4NCiAgICBMT0MgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBj YXN0LS0gdHlwaWNhbGx5IHRoZSBvcGVuIHBhcmVuIG9mIHRoZSBjYXN0LiAg Ki8NCiANCkBAIC01NjY3LDYgKzU3MTMsMTYgQEAgYnVpbGRfY19jYXN0IChs b2NhdGlvbl90IGxvYywgdHJlZSB0eXBlLCB0cmVlIGV4cHINCiAJcGVkd2Fy biAobG9jLCBPUFRfV3BlZGFudGljLCAiSVNPIEMgZm9yYmlkcyAiDQogCQkg ImNvbnZlcnNpb24gb2Ygb2JqZWN0IHBvaW50ZXIgdG8gZnVuY3Rpb24gcG9p bnRlciB0eXBlIik7DQogDQorICAgICAgaWYgKFRSRUVfQ09ERSAodHlwZSkg PT0gUE9JTlRFUl9UWVBFDQorCSAgJiYgVFJFRV9DT0RFIChvdHlwZSkgPT0g UE9JTlRFUl9UWVBFDQorCSAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKHR5 cGUpKSA9PSBGVU5DVElPTl9UWVBFDQorCSAgJiYgVFJFRV9DT0RFIChUUkVF X1RZUEUgKG90eXBlKSkgPT0gRlVOQ1RJT05fVFlQRQ0KKwkgICYmICFjX3Nh ZmVfZnVuY3Rpb25fdHlwZV9jYXN0X3AgKFRSRUVfVFlQRSAodHlwZSksDQor CQkJCQkgICBUUkVFX1RZUEUgKG90eXBlKSkpDQorCXdhcm5pbmdfYXQgKGxv YywgT1BUX1djYXN0X2Z1bmN0aW9uX3R5cGUsDQorCQkgICAgImNhc3QgYmV0 d2VlbiBpbmNvbXBhdGlibGUgZnVuY3Rpb24gdHlwZXMiDQorCQkgICAgIiBm cm9tICVxVCB0byAlcVQiLCBvdHlwZSwgdHlwZSk7DQorDQogICAgICAgb3Zh bHVlID0gdmFsdWU7DQogICAgICAgdmFsdWUgPSBjb252ZXJ0ICh0eXBlLCB2 YWx1ZSk7DQogDQpJbmRleDogZ2NjL2MtZmFtaWx5L2MtbGV4LmMNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSBnY2MvYy1mYW1pbHkvYy1sZXguYwko cmV2aXNpb24gMjUzNDkzKQ0KKysrIGdjYy9jLWZhbWlseS9jLWxleC5jCSh3 b3JraW5nIGNvcHkpDQpAQCAtMTAxLDkgKzEwMSwxMSBAQCBnZXRfZmlsZWlu Zm8gKGNvbnN0IGNoYXIgKm5hbWUpDQogICBzdHJ1Y3QgY19maWxlaW5mbyAq Zmk7DQogDQogICBpZiAoIWZpbGVfaW5mb190cmVlKQ0KLSAgICBmaWxlX2lu Zm9fdHJlZSA9IHNwbGF5X3RyZWVfbmV3ICgoc3BsYXlfdHJlZV9jb21wYXJl X2ZuKSBzdHJjbXAsDQorICAgIGZpbGVfaW5mb190cmVlID0gc3BsYXlfdHJl ZV9uZXcgKChzcGxheV90cmVlX2NvbXBhcmVfZm4pDQorCQkJCSAgICAgKHZv aWQgKCopICh2b2lkKSkgc3RyY21wLA0KIAkJCQkgICAgIDAsDQotCQkJCSAg ICAgKHNwbGF5X3RyZWVfZGVsZXRlX3ZhbHVlX2ZuKSBmcmVlKTsNCisJCQkJ ICAgICAoc3BsYXlfdHJlZV9kZWxldGVfdmFsdWVfZm4pDQorCQkJCSAgICAg KHZvaWQgKCopICh2b2lkKSkgZnJlZSk7DQogDQogICBuID0gc3BsYXlfdHJl ZV9sb29rdXAgKGZpbGVfaW5mb190cmVlLCAoc3BsYXlfdHJlZV9rZXkpIG5h bWUpOw0KICAgaWYgKG4pDQpJbmRleDogZ2NjL2MtZmFtaWx5L2MtcHBvdXRw dXQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGdjYy9jLWZhbWls eS9jLXBwb3V0cHV0LmMJKHJldmlzaW9uIDI1MzQ5MykNCisrKyBnY2MvYy1m YW1pbHkvYy1wcG91dHB1dC5jCSh3b3JraW5nIGNvcHkpDQpAQCAtMjk5LDcg KzI5OSw3IEBAIHNjYW5fdHJhbnNsYXRpb25fdW5pdF9kaXJlY3RpdmVzX29u bHkgKGNwcF9yZWFkZXINCiAgIHN0cnVjdCBfY3BwX2Rpcl9vbmx5X2NhbGxi YWNrcyBjYjsNCiANCiAgIGNiLnByaW50X2xpbmVzID0gcHJpbnRfbGluZXNf ZGlyZWN0aXZlc19vbmx5Ow0KLSAgY2IubWF5YmVfcHJpbnRfbGluZSA9ICh2 b2lkICgqKSAoc291cmNlX2xvY2F0aW9uKSkgbWF5YmVfcHJpbnRfbGluZTsN CisgIGNiLm1heWJlX3ByaW50X2xpbmUgPSBtYXliZV9wcmludF9saW5lOw0K IA0KICAgX2NwcF9wcmVwcm9jZXNzX2Rpcl9vbmx5IChwZmlsZSwgJmNiKTsN CiB9DQpJbmRleDogZ2NjL2MtZmFtaWx5L2Mub3B0DQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gZ2NjL2MtZmFtaWx5L2Mub3B0CShyZXZpc2lvbiAy NTM0OTMpDQorKysgZ2NjL2MtZmFtaWx5L2Mub3B0CSh3b3JraW5nIGNvcHkp DQpAQCAtMzg0LDYgKzM4NCwxMCBAQCBXYysrMTctY29tcGF0DQogQysrIE9i akMrKyBWYXIod2Fybl9jeHgxN19jb21wYXQpIFdhcm5pbmcgTGFuZ0VuYWJs ZWRCeShDKysgT2JqQysrLFdhbGwpDQogV2FybiBhYm91dCBDKysgY29uc3Ry dWN0cyB3aG9zZSBtZWFuaW5nIGRpZmZlcnMgYmV0d2VlbiBJU08gQysrIDIw MTQgYW5kIElTTyBDKysgMjAxNy4NCiANCitXY2FzdC1mdW5jdGlvbi10eXBl DQorQyBPYmpDIEMrKyBPYmpDKysgVmFyKHdhcm5fY2FzdF9mdW5jdGlvbl90 eXBlKSBXYXJuaW5nIEVuYWJsZWRCeShXZXh0cmEpDQorV2FybiBhYm91dCBj YXN0cyBiZXR3ZWVuIGluY29tcGF0aWJsZSBmdW5jdGlvbiB0eXBlcy4NCisN CiBXY2FzdC1xdWFsDQogQyBPYmpDIEMrKyBPYmpDKysgVmFyKHdhcm5fY2Fz dF9xdWFsKSBXYXJuaW5nDQogV2FybiBhYm91dCBjYXN0cyB3aGljaCBkaXNj YXJkIHF1YWxpZmllcnMuDQpJbmRleDogZ2NjL2NwL2RlY2wyLmMNCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSBnY2MvY3AvZGVjbDIuYwkocmV2aXNp b24gMjUzNDkzKQ0KKysrIGdjYy9jcC9kZWNsMi5jCSh3b3JraW5nIGNvcHkp DQpAQCAtMzQ4NCw3ICszNDg0LDggQEAgc3RhcnRfc3RhdGljX3N0b3JhZ2Vf ZHVyYXRpb25fZnVuY3Rpb24gKHVuc2lnbmVkIGMNCiAgICAgICBwcmlvcml0 eV9pbmZvX21hcCA9IHNwbGF5X3RyZWVfbmV3IChzcGxheV90cmVlX2NvbXBh cmVfaW50cywNCiAJCQkJCSAgLypkZWxldGVfa2V5X2ZuPSovMCwNCiAJCQkJ CSAgLypkZWxldGVfdmFsdWVfZm49Ki8NCi0JCQkJCSAgKHNwbGF5X3RyZWVf ZGVsZXRlX3ZhbHVlX2ZuKSAmZnJlZSk7DQorCQkJCQkgIChzcGxheV90cmVl X2RlbGV0ZV92YWx1ZV9mbikNCisJCQkJCSAgKHZvaWQgKCopICh2b2lkKSkg ZnJlZSk7DQogDQogICAgICAgLyogV2UgYWx3YXlzIG5lZWQgdG8gZ2VuZXJh dGUgZnVuY3Rpb25zIGZvciB0aGUNCiAJIERFRkFVTFRfSU5JVF9QUklPUklU WSBzbyBlbnRlciBpdCBub3cuICBUaGF0IHdheSB3aGVuIHdlIHdhbGsNCklu ZGV4OiBnY2MvY3AvdHlwZWNrLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBnY2MvY3AvdHlwZWNrLmMJKHJldmlzaW9uIDI1MzQ5MykNCisrKyBn Y2MvY3AvdHlwZWNrLmMJKHdvcmtpbmcgY29weSkNCkBAIC0xMTczLDYgKzEx NzMsNTIgQEAgY29tcF90ZW1wbGF0ZV9wYXJtc19wb3NpdGlvbiAodHJlZSB0 MSwgdHJlZSB0MikNCiAgIHJldHVybiB0cnVlOw0KIH0NCiANCisvKiBIZXVy aXN0aWMgY2hlY2sgaWYgdHdvIHBhcmFtZXRlciB0eXBlcyBjYW4gYmUgY29u c2lkZXJlZCBBQkktZXF1aXZhbGVudC4gICovDQorDQorc3RhdGljIGJvb2wN CitjeHhfYWJpX2VxdWl2X3R5cGVfcCAodHJlZSB0MSwgdHJlZSB0MikNCit7 DQorICB0MSA9IFRZUEVfTUFJTl9WQVJJQU5UICh0MSk7DQorICB0MiA9IFRZ UEVfTUFJTl9WQVJJQU5UICh0Mik7DQorDQorICBpZiAoVFJFRV9DT0RFICh0 MSkgPT0gUE9JTlRFUl9UWVBFDQorICAgICAgJiYgVFJFRV9DT0RFICh0Mikg PT0gUE9JTlRFUl9UWVBFKQ0KKyAgICByZXR1cm4gdHJ1ZTsNCisNCisgIGlm IChJTlRFR1JBTF9UWVBFX1AgKHQxKQ0KKyAgICAgICYmIElOVEVHUkFMX1RZ UEVfUCAodDIpDQorICAgICAgJiYgVFlQRV9QUkVDSVNJT04gKHQxKSA9PSBU WVBFX1BSRUNJU0lPTiAodDIpDQorICAgICAgJiYgVFlQRV9VTlNJR05FRCAo dDEpID09IFRZUEVfVU5TSUdORUQgKHQyKSkNCisgICAgcmV0dXJuIHRydWU7 DQorDQorICByZXR1cm4gc2FtZV90eXBlX3AgKHQxLCB0Mik7DQorfQ0KKw0K Ky8qIENoZWNrIGlmIGEgdHlwZSBjYXN0IGJldHdlZW4gdHdvIGZ1bmN0aW9u IHR5cGVzIGNhbiBiZSBjb25zaWRlcmVkIHNhZmUuICAqLw0KKw0KK3N0YXRp YyBib29sDQorY3h4X3NhZmVfZnVuY3Rpb25fdHlwZV9jYXN0X3AgKHRyZWUg dDEsIHRyZWUgdDIpDQorew0KKyAgaWYgKFRSRUVfVFlQRSAodDEpID09IHZv aWRfdHlwZV9ub2RlICYmDQorICAgICAgVFlQRV9BUkdfVFlQRVMgKHQxKSA9 PSB2b2lkX2xpc3Rfbm9kZSkNCisgICAgcmV0dXJuIHRydWU7DQorDQorICBp ZiAoVFJFRV9UWVBFICh0MikgPT0gdm9pZF90eXBlX25vZGUgJiYNCisgICAg ICBUWVBFX0FSR19UWVBFUyAodDIpID09IHZvaWRfbGlzdF9ub2RlKQ0KKyAg ICByZXR1cm4gdHJ1ZTsNCisNCisgIGlmICghY3h4X2FiaV9lcXVpdl90eXBl X3AgKFRSRUVfVFlQRSAodDEpLCBUUkVFX1RZUEUgKHQyKSkpDQorICAgIHJl dHVybiBmYWxzZTsNCisNCisgIGZvciAodDEgPSBUWVBFX0FSR19UWVBFUyAo dDEpLCB0MiA9IFRZUEVfQVJHX1RZUEVTICh0Mik7DQorICAgICAgIHQxICYm IHQyOw0KKyAgICAgICB0MSA9IFRSRUVfQ0hBSU4gKHQxKSwgdDIgPSBUUkVF X0NIQUlOICh0MikpDQorICAgIGlmICghY3h4X2FiaV9lcXVpdl90eXBlX3Ag KFRSRUVfVkFMVUUgKHQxKSwgVFJFRV9WQUxVRSAodDIpKSkNCisgICAgICBy ZXR1cm4gZmFsc2U7DQorDQorICByZXR1cm4gdHJ1ZTsNCit9DQorDQogLyog U3Vicm91dGluZSBpbiBjb21wdHlwZXMuICAqLw0KIA0KIHN0YXRpYyBib29s DQpAQCAtNzI2Myw3ICs3MzA5LDE5IEBAIGJ1aWxkX3JlaW50ZXJwcmV0X2Nh c3RfMSAodHJlZSB0eXBlLCB0cmVlIGV4cHIsIGJvDQogICAgIHJldHVybiBy dmFsdWUgKGV4cHIpOw0KICAgZWxzZSBpZiAoKFRZUEVfUFRSRk5fUCAodHlw ZSkgJiYgVFlQRV9QVFJGTl9QIChpbnR5cGUpKQ0KIAkgICB8fCAoVFlQRV9Q VFJNRU1GVU5DX1AgKHR5cGUpICYmIFRZUEVfUFRSTUVNRlVOQ19QIChpbnR5 cGUpKSkNCi0gICAgcmV0dXJuIGJ1aWxkX25vcCAodHlwZSwgZXhwcik7DQor ICAgIHsNCisgICAgICBpZiAoKGNvbXBsYWluICYgdGZfd2FybmluZykNCisJ ICAmJiBUUkVFX0NPREUgKHR5cGUpID09IFBPSU5URVJfVFlQRQ0KKwkgICYm IFRSRUVfQ09ERSAoaW50eXBlKSA9PSBQT0lOVEVSX1RZUEUNCisJICAmJiBU UkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkpID09IEZVTkNUSU9OX1RZUEUN CisJICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAoaW50eXBlKSkgPT0gRlVO Q1RJT05fVFlQRQ0KKwkgICYmICFjeHhfc2FmZV9mdW5jdGlvbl90eXBlX2Nh c3RfcCAoVFJFRV9UWVBFICh0eXBlKSwNCisJCQkJCSAgICAgVFJFRV9UWVBF IChpbnR5cGUpKSkNCisJd2FybmluZyAoT1BUX1djYXN0X2Z1bmN0aW9uX3R5 cGUsDQorCQkgImNhc3QgYmV0d2VlbiBpbmNvbXBhdGlibGUgZnVuY3Rpb24g dHlwZXMiDQorCQkgIiBmcm9tICVxSCB0byAlcUkiLCBpbnR5cGUsIHR5cGUp Ow0KKyAgICAgIHJldHVybiBidWlsZF9ub3AgKHR5cGUsIGV4cHIpOw0KKyAg ICB9DQogICBlbHNlIGlmICgoVFlQRV9QVFJEQVRBTUVNX1AgKHR5cGUpICYm IFRZUEVfUFRSREFUQU1FTV9QIChpbnR5cGUpKQ0KIAkgICB8fCAoVFlQRV9Q VFJPQlZfUCAodHlwZSkgJiYgVFlQRV9QVFJPQlZfUCAoaW50eXBlKSkpDQog ICAgIHsNCkluZGV4OiBnY2MvZG9jL2ludm9rZS50ZXhpDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gZ2NjL2RvYy9pbnZva2UudGV4aQkocmV2aXNp b24gMjUzNDkzKQ0KKysrIGdjYy9kb2MvaW52b2tlLnRleGkJKHdvcmtpbmcg Y29weSkNCkBAIC0yNjcsNyArMjY3LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9i amVjdGl2ZS1DKysgRGlhbGVjdHN9Lg0KIC1Xbm8tYnVpbHRpbi1kZWNsYXJh dGlvbi1taXNtYXRjaCBAZ29sDQogLVduby1idWlsdGluLW1hY3JvLXJlZGVm aW5lZCAgLVdjOTAtYzk5LWNvbXBhdCAgLVdjOTktYzExLWNvbXBhdCBAZ29s DQogLVdjKystY29tcGF0ICAtV2MrKzExLWNvbXBhdCAgLVdjKysxNC1jb21w YXQgIEBnb2wNCi0tV2Nhc3QtYWxpZ24gIC1XY2FzdC1hbGlnbj1zdHJpY3Qg IC1XY2FzdC1xdWFsICBAZ29sDQorLVdjYXN0LWFsaWduICAtV2Nhc3QtYWxp Z249c3RyaWN0ICAtV2Nhc3QtZnVuY3Rpb24tdHlwZSAgLVdjYXN0LXF1YWwg IEBnb2wNCiAtV2NoYXItc3Vic2NyaXB0cyAgLVdjaGtwICAtV2NhdGNoLXZh bHVlICAtV2NhdGNoLXZhbHVlPUB2YXJ7bn0gQGdvbA0KIC1XY2xvYmJlcmVk ICAtV2NvbW1lbnQgIC1XY29uZGl0aW9uYWxseS1zdXBwb3J0ZWQgQGdvbA0K IC1XY29udmVyc2lvbiAgLVdjb3ZlcmFnZS1taXNtYXRjaCAgLVduby1jcHAg IC1XZGFuZ2xpbmctZWxzZSAgLVdkYXRlLXRpbWUgQGdvbA0KQEAgLTM4OTks NiArMzg5OSw3IEBAIFRoaXMgZW5hYmxlcyBzb21lIGV4dHJhIHdhcm5pbmcg ZmxhZ3MgdGhhdCBhcmUgbm90DQogbmFtZSBpcyBzdGlsbCBzdXBwb3J0ZWQs IGJ1dCB0aGUgbmV3ZXIgbmFtZSBpcyBtb3JlIGRlc2NyaXB0aXZlLikNCiAN CiBAZ2Njb3B0bGlzdHstV2Nsb2JiZXJlZCAgQGdvbA0KKy1XY2FzdC1mdW5j dGlvbi10eXBlICBAZ29sDQogLVdlbXB0eS1ib2R5ICBAZ29sDQogLVdpZ25v cmVkLXF1YWxpZmllcnMgQGdvbA0KIC1XaW1wbGljaXQtZmFsbHRocm91Z2g9 MyBAZ29sDQpAQCAtNTk1OSw2ICs1OTYwLDIxIEBAIFdhcm4gd2hlbmV2ZXIg YSBwb2ludGVyIGlzIGNhc3Qgc3VjaCB0aGF0IHRoZSByZXF1DQogdGFyZ2V0 IGlzIGluY3JlYXNlZC4gIEZvciBleGFtcGxlLCB3YXJuIGlmIGEgQGNvZGV7 Y2hhciAqfSBpcyBjYXN0IHRvDQogYW4gQGNvZGV7aW50ICp9IHJlZ2FyZGxl c3Mgb2YgdGhlIHRhcmdldCBtYWNoaW5lLg0KIA0KK0BpdGVtIC1XY2FzdC1m dW5jdGlvbi10eXBlDQorQG9waW5kZXggV2Nhc3QtZnVuY3Rpb24tdHlwZQ0K K0BvcGluZGV4IFduby1jYXN0LWZ1bmN0aW9uLXR5cGUNCitXYXJuIHdoZW4g YSBmdW5jdGlvbiBwb2ludGVyIGlzIGNhc3QgdG8gYW4gaW5jb21wYXRpYmxl IGZ1bmN0aW9uIHBvaW50ZXIuDQorV2hlbiBvbmUgb2YgdGhlIGZ1bmN0aW9u IHR5cGVzIHVzZXMgdmFyaWFibGUgYXJndW1lbnRzIGxpa2UgdGhpcw0KK0Bj b2Rle2ludCBmKC4uLik7fSwgdGhlbiBvbmx5IHRoZSByZXR1cm4gdmFsdWUg YW5kIHRoZSBwYXJhbWV0ZXJzIGJlZm9yZQ0KK3RoZSBAY29kZXsuLi59IGFy ZSBjaGVja2VkLCBvdGhlcndpc2UgdGhlIHJldHVybiB2YWx1ZSBhbmQgYWxs IHBhcmFtZXRlcw0KK2FyZSBjaGVja2VkIGZvciBiaW5hcnkgY29tcGF0aWJp bGl0eS4gIEFueSBwYXJhbWV0ZXIgb2YgcG9pbnRlci10eXBlDQorbWF0Y2hl cyBhbnkgb3RoZXIgcG9pbnRlci10eXBlLiAgQW55IGJlbmlnbiBkaWZmZXJl bmNlcyBpbiBpbnRlZ3JhbCB0eXBlcw0KK2FyZSBpZ25vcmVkLCBsaWtlIEBj b2Rle2ludH0gdnMuICBAY29kZXtsb25nfSBvbiBJTFAzMiB0YXJnZXRzLiAg TGlrZXdpc2UNCitAY29kZXtjb25zdH0gYW5kIEBjb2Rle3ZvbGF0aWxlfSBx dWFsaWZpZXJzIGFyZSBpZ25vcmVkLiAgVGhlIGZ1bmN0aW9uDQordHlwZSBA Y29kZXt2b2lkICgqKSAodm9pZCk7fSBpcyBzcGVjaWFsIGFuZCBtYXRjaGVz IGV2ZXJ5dGhpbmcsIHdoaWNoIGNhbg0KK2JlIHVzZWQgdG8gc3VwcHJlc3Mg dGhpcyB3YXJuaW5nLg0KK1RoaXMgd2FybmluZyBpcyBlbmFibGVkIGJ5IEBv cHRpb257LVdleHRyYX0uDQorDQogQGl0ZW0gLVd3cml0ZS1zdHJpbmdzDQog QG9waW5kZXggV3dyaXRlLXN0cmluZ3MNCiBAb3BpbmRleCBXbm8td3JpdGUt c3RyaW5ncw0KSW5kZXg6IGdjYy9yZWNvZy5oDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQotLS0gZ2NjL3JlY29nLmgJKHJldmlzaW9uIDI1MzQ5MykNCisr KyBnY2MvcmVjb2cuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI5NCw3ICsyOTQs NyBAQCBzdHJ1Y3QgaW5zbl9nZW5fZm4NCiAgIHR5cGVkZWYgcnR4X2luc24g KiAoKmYxNSkgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwg cnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgpOw0KICAg dHlwZWRlZiBydHhfaW5zbiAqICgqZjE2KSAocnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCwgcnR4KTsNCiANCi0gIHR5cGVkZWYgZjAgc3RvcmVkX2Z1 bmNwdHI7DQorICB0eXBlZGVmIHZvaWQgKCpzdG9yZWRfZnVuY3B0cikgKHZv aWQpOw0KIA0KICAgcnR4X2luc24gKiBvcGVyYXRvciAoKSAodm9pZCkgY29u c3QgeyByZXR1cm4gKChmMClmdW5jKSAoKTsgfQ0KICAgcnR4X2luc24gKiBv cGVyYXRvciAoKSAocnR4IGEwKSBjb25zdCB7IHJldHVybiAoKGYxKWZ1bmMp IChhMCk7IH0NCkluZGV4OiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9X Y2FzdC1mdW5jdGlvbi10eXBlLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9XY2FzdC1mdW5jdGlv bi10eXBlLmMJKHJldmlzaW9uIDApDQorKysgZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vV2Nhc3QtZnVuY3Rpb24tdHlwZS5jCSh3b3JraW5nIGNvcHkp DQpAQCAtMCwwICsxLDMxIEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8N CisvKiB7IGRnLW9wdGlvbnMgIi1XY2FzdC1mdW5jdGlvbi10eXBlIiB9ICov DQorDQoraW50IGYobG9uZyk7DQorDQordHlwZWRlZiBpbnQgKGYxKShsb25n KTsNCit0eXBlZGVmIGludCAoZjIpKHZvaWQqKTsNCisjaWZkZWYgX19jcGx1 c3BsdXMNCit0eXBlZGVmIGludCAoZjMpKC4uLik7DQordHlwZWRlZiB2b2lk IChmNCkoLi4uKTsNCisjZWxzZQ0KK3R5cGVkZWYgaW50IChmMykoKTsNCit0 eXBlZGVmIHZvaWQgKGY0KSgpOw0KKyNlbmRpZg0KK3R5cGVkZWYgdm9pZCAo ZjUpKHZvaWQpOw0KKw0KK2YxICphOw0KK2YyICpiOw0KK2YzICpjOw0KK2Y0 ICpkOw0KK2Y1ICplOw0KKw0KK3ZvaWQNCitmb28gKHZvaWQpDQorew0KKyAg YSA9IChmMSAqKSBmOyAvKiB7IGRnLWJvZ3VzICAgImluY29tcGF0aWJsZSBm dW5jdGlvbiB0eXBlcyIgfSAqLw0KKyAgYiA9IChmMiAqKSBmOyAvKiB7IGRn LXdhcm5pbmcgImluY29tcGF0aWJsZSBmdW5jdGlvbiB0eXBlcyIgfSAqLw0K KyAgYyA9IChmMyAqKSBmOyAvKiB7IGRnLWJvZ3VzICAgImluY29tcGF0aWJs ZSBmdW5jdGlvbiB0eXBlcyIgfSAqLw0KKyAgZCA9IChmNCAqKSBmOyAvKiB7 IGRnLXdhcm5pbmcgImluY29tcGF0aWJsZSBmdW5jdGlvbiB0eXBlcyIgfSAq Lw0KKyAgZSA9IChmNSAqKSBmOyAvKiB7IGRnLWJvZ3VzICAgImluY29tcGF0 aWJsZSBmdW5jdGlvbiB0eXBlcyIgfSAqLw0KK30NCkluZGV4OiBnY2MvdHJl ZS1kdW1wLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBnY2MvdHJl ZS1kdW1wLmMJKHJldmlzaW9uIDI1MzQ5MykNCisrKyBnY2MvdHJlZS1kdW1w LmMJKHdvcmtpbmcgY29weSkNCkBAIC03MzUsNyArNzM1LDggQEAgZHVtcF9u b2RlIChjb25zdF90cmVlIHQsIGR1bXBfZmxhZ3NfdCBmbGFncywgRklMRQ0K ICAgZGkuZmxhZ3MgPSBmbGFnczsNCiAgIGRpLm5vZGUgPSB0Ow0KICAgZGku bm9kZXMgPSBzcGxheV90cmVlX25ldyAoc3BsYXlfdHJlZV9jb21wYXJlX3Bv aW50ZXJzLCAwLA0KLQkJCSAgICAgKHNwbGF5X3RyZWVfZGVsZXRlX3ZhbHVl X2ZuKSAmZnJlZSk7DQorCQkJICAgICAoc3BsYXlfdHJlZV9kZWxldGVfdmFs dWVfZm4pDQorCQkJICAgICAodm9pZCAoKikgKHZvaWQpKSBmcmVlKTsNCiAN CiAgIC8qIFF1ZXVlIHVwIHRoZSBmaXJzdCBub2RlLiAgKi8NCiAgIHF1ZXVl ICgmZGksIHQsIERVTVBfTk9ORSk7DQpJbmRleDogZ2NjL3R5cGVkLXNwbGF5 LXRyZWUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGdjYy90eXBl ZC1zcGxheS10cmVlLmgJKHJldmlzaW9uIDI1MzQ5MykNCisrKyBnY2MvdHlw ZWQtc3BsYXktdHJlZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzUsOSArNzUs MTIgQEAgaW5saW5lIHR5cGVkX3NwbGF5X3RyZWU8S0VZX1RZUEUsIFZBTFVF X1RZUEU+OjoNCiAJCSAgICBkZWxldGVfa2V5X2ZuIGRlbGV0ZV9rZXlfZm4s DQogCQkgICAgZGVsZXRlX3ZhbHVlX2ZuIGRlbGV0ZV92YWx1ZV9mbikNCiB7 DQotICBtX2lubmVyID0gc3BsYXlfdHJlZV9uZXcgKChzcGxheV90cmVlX2Nv bXBhcmVfZm4pY29tcGFyZV9mbiwNCi0JCQkgICAgKHNwbGF5X3RyZWVfZGVs ZXRlX2tleV9mbilkZWxldGVfa2V5X2ZuLA0KLQkJCSAgICAoc3BsYXlfdHJl ZV9kZWxldGVfdmFsdWVfZm4pZGVsZXRlX3ZhbHVlX2ZuKTsNCisgIG1faW5u ZXIgPSBzcGxheV90cmVlX25ldyAoKHNwbGF5X3RyZWVfY29tcGFyZV9mbikN CisJCQkgICAgKHZvaWQgKCopICh2b2lkKSkgY29tcGFyZV9mbiwNCisJCQkg ICAgKHNwbGF5X3RyZWVfZGVsZXRlX2tleV9mbikNCisJCQkgICAgKHZvaWQg KCopICh2b2lkKSkgZGVsZXRlX2tleV9mbiwNCisJCQkgICAgKHNwbGF5X3Ry ZWVfZGVsZXRlX3ZhbHVlX2ZuKQ0KKwkJCSAgICAodm9pZCAoKikgKHZvaWQp KSBkZWxldGVfdmFsdWVfZm4pOw0KIH0NCiANCiAvKiBEZXN0cnVjdG9yIGZv ciB0eXBlZF9zcGxheV90cmVlIDxLLCBWPi4gICovDQpJbmRleDogbGliY3Bw L2ludGVybmFsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaWJj cHAvaW50ZXJuYWwuaAkocmV2aXNpb24gMjUzNDkzKQ0KKysrIGxpYmNwcC9p bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzA4LDcgKzcwOCw3IEBA IHN0cnVjdCBfY3BwX2Rpcl9vbmx5X2NhbGxiYWNrcw0KIHsNCiAgIC8qIENh bGxlZCB0byBwcmludCBhIGJsb2NrIG9mIGxpbmVzLiAqLw0KICAgdm9pZCAo KnByaW50X2xpbmVzKSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCk7DQot ICB2b2lkICgqbWF5YmVfcHJpbnRfbGluZSkgKHNvdXJjZV9sb2NhdGlvbik7 DQorICBib29sICgqbWF5YmVfcHJpbnRfbGluZSkgKHNvdXJjZV9sb2NhdGlv bik7DQogfTsNCiANCiBleHRlcm4gdm9pZCBfY3BwX3ByZXByb2Nlc3NfZGly X29ubHkgKGNwcF9yZWFkZXIgKiwNCg== --_003_6f4b438552af6b4114bf7e0a06895a8fhotmailde_--