From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27132 invoked by alias); 26 Jan 2014 10:26:44 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 27110 invoked by uid 89); 26 Jan 2014 10:26:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f181.google.com Received: from mail-ob0-f181.google.com (HELO mail-ob0-f181.google.com) (209.85.214.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sun, 26 Jan 2014 10:26:35 +0000 Received: by mail-ob0-f181.google.com with SMTP id va2so5340926obc.40 for ; Sun, 26 Jan 2014 02:26:33 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.60.80.137 with SMTP id r9mr9936890oex.30.1390731993572; Sun, 26 Jan 2014 02:26:33 -0800 (PST) Received: by 10.182.162.36 with HTTP; Sun, 26 Jan 2014 02:26:33 -0800 (PST) In-Reply-To: References: <87d2jjc4rx.fsf@seketeli.org> <874n4uagv0.fsf@redhat.com> Date: Sun, 26 Jan 2014 16:12:00 -0000 Message-ID: Subject: Re: -Wformat-security warnings generated in gcc build From: Prathamesh Kulkarni To: Dodji Seketeli , gcc Content-Type: multipart/mixed; boundary=089e013a12f874894e04f0dd0666 X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00269.txt.bz2 --089e013a12f874894e04f0dd0666 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 3078 On Fri, Jan 24, 2014 at 9:19 PM, Prathamesh Kulkarni wrote: > On Thu, Jan 23, 2014 at 9:09 PM, Prathamesh Kulkarni > wrote: >> On Thu, Jan 23, 2014 at 8:24 PM, Dodji Seketeli wrote: >>> Prathamesh Kulkarni writes: >>> >>>> >>>> Shall it be correct then to replace calls to error() and friends, >>>> taking only format string with no-argument specifiers >>>> to error_at_no_args() ? (similarly we shall need warning_at_no_args, >>>> pedwarn_no_args, etc.) >>> >>> I would guess so, yes. >>> >>>>> >>>>> Also, you'd need to modify cp/error.c:cp_printer in a similar way, to >>>>> issue an internal_error each time we try to access a null test->args_ptr. >>>> >>>> Shall check for text->args_ptr be required in each case label of >>>> argument specifier in pp_format() >>>> and client-specific functions like cp_printer() ? >>> >>> Yes, I think so. Maybe you can make that a bit more maintainable by >>> creating a macro like those used to access text->args_ptr in cp_printer, >>> e.g: >>> >>> #define next_int va_arg (*text->args_ptr, int) >>> >>> In that macro, make the check for text->args_ptr before accessing it, >>> and then use that macro to access text->args_ptr through the function. >>> >> >> I was going through diagnostic.c, it appears that many functions in >> (error(), error_at(), warning(), etc.) share common code (mostly >> contains call to diagnostic_set_info() followed by call to >> report_diagnostic()), which I guess can be re-written in terms of >> emit_diagnostic(), however since it's variadic that's not possible. I >> wrote a v_emit_diagnostic() function, that takes same arguments as >> emit_diagnostic(), with additional va_list * at end (va_list * instead >> of va_list, so I could pass NULL for error_no_args() and friends). Is >> it correct to write these other functions (emit_diagnostic(), error(), >> inform(), etc.) in terms of v_emit_diagnostic() ? > > silly mistake in warning_at(), it should be: > ret = v_emit_diagnostic (DK_WARNING, location, opt, gmsgid, &ap); The attached patch removes all -Wformat-security warnings I put assertions for tree->args_ptr in pretty-print.c:pp_format(), cp/error.c:cp_printer() and c/c-objc-common.c:c_tree_printer(). However, adding *_no_args() functions in include/cpplib.h (eg: cpp_error_no_args(), etc.), generates a new set of warnings of type -Wsuggest-attribute=format gnu_printf for these functions. I removed them by adding the following in include/ansidecl.h +#ifndef ATTRIBUTE_GNU_PRINTF +#define ATTRIBUTE_GNU_PRINTF(m, n) __attribute__ ((__format__ (__gnu_printf__, m, n))) ATTRIBUTE_NONNULL(m) +#define ATTRIBUTE_GNU_PRINTF_3_0 ATTRIBUTE_GNU_PRINTF(3, 0) +#define ATTRIBUTE_GNU_PRINTF_5_0 ATTRIBUTE_GNU_PRINTF(5, 0) +#endif /* ATTRIBUTE_GNU_PRINTF */ + and declarations changed to: +extern bool cpp_error_no_args (cpp_reader *, int, const char *) + ATTRIBUTE_GNU_PRINTF_3_0; + Is this correct way to fix it ? Thanks! > >> >> >> >> >> >>> -- >>> Dodji --089e013a12f874894e04f0dd0666 Content-Type: text/x-patch; charset=US-ASCII; name="format-warnings.patch" Content-Disposition: attachment; filename="format-warnings.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hqw5twda0 Content-length: 39878 SW5kZXg6IGdjYy9jL2MtY29udmVydC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy9jL2MtY29udmVydC5jCShyZXZpc2lvbiAyMDcwNzQpCisr KyBnY2MvYy9jLWNvbnZlcnQuYwkod29ya2luZyBjb3B5KQpAQCAtNzksNyAr NzksNyBAQCBjb252ZXJ0ICh0cmVlIHR5cGUsIHRyZWUgZXhwcikKICAgaWYg KChpbnZhbGlkX2NvbnZfZGlhZwogICAgICAgID0gdGFyZ2V0bS5pbnZhbGlk X2NvbnZlcnNpb24gKFRSRUVfVFlQRSAoZXhwciksIHR5cGUpKSkKICAgICB7 Ci0gICAgICBlcnJvciAoaW52YWxpZF9jb252X2RpYWcpOworICAgICAgZXJy b3Jfbm9fYXJncyAoaW52YWxpZF9jb252X2RpYWcpOwogICAgICAgcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKICAgICB9CiAKSW5kZXg6IGdjYy9jL2MtZGVj bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jL2MtZGVjbC5j CShyZXZpc2lvbiAyMDcwNzQpCisrKyBnY2MvYy9jLWRlY2wuYwkod29ya2lu ZyBjb3B5KQpAQCAtNTY5OCw3ICs1Njk4LDcgQEAgZ3Jva2RlY2xhcmF0b3Ig KGNvbnN0IHN0cnVjdCBjX2RlY2xhcmF0bwogCSAgICBlcnJtc2cgPSB0YXJn ZXRtLmludmFsaWRfcmV0dXJuX3R5cGUgKHR5cGUpOwogCSAgICBpZiAoZXJy bXNnKQogCSAgICAgIHsKLQkJZXJyb3IgKGVycm1zZyk7CisJCWVycm9yX25v X2FyZ3MgKGVycm1zZyk7CiAJCXR5cGUgPSBpbnRlZ2VyX3R5cGVfbm9kZTsK IAkgICAgICB9CiAKQEAgLTY0NzksNyArNjQ3OSw3IEBAIGdyb2twYXJtcyAo c3RydWN0IGNfYXJnX2luZm8gKmFyZ19pbmZvLAogCSAgZXJybXNnID0gdGFy Z2V0bS5pbnZhbGlkX3BhcmFtZXRlcl90eXBlICh0eXBlKTsKIAkgIGlmIChl cnJtc2cpCiAJICAgIHsKLQkgICAgICBlcnJvciAoZXJybXNnKTsKKwkgICAg ICBlcnJvcl9ub19hcmdzIChlcnJtc2cpOwogCSAgICAgIFRSRUVfVkFMVUUg KHR5cGVsdCkgPSBlcnJvcl9tYXJrX25vZGU7CiAJICAgICAgVFJFRV9UWVBF IChwYXJtKSA9IGVycm9yX21hcmtfbm9kZTsKIAkgICAgICBhcmdfdHlwZXMg PSBOVUxMX1RSRUU7CkluZGV4OiBnY2MvYy9jLXR5cGVjay5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy9jL2MtdHlwZWNrLmMJKHJldmlzaW9u IDIwNzA3NCkKKysrIGdjYy9jL2MtdHlwZWNrLmMJKHdvcmtpbmcgY29weSkK QEAgLTMzMDAsNyArMzMwMCw3IEBAIGNvbnZlcnRfYXJndW1lbnRzICh0cmVl IHR5cGVsaXN0LCB2ZWM8dHIKICAgICAgIGVsc2UgaWYgKChpbnZhbGlkX2Z1 bmNfZGlhZyA9CiAJCXRhcmdldG0uY2FsbHMuaW52YWxpZF9hcmdfZm9yX3Vu cHJvdG90eXBlZF9mbiAodHlwZWxpc3QsIGZ1bmRlY2wsIHZhbCkpKQogCXsK LQkgIGVycm9yIChpbnZhbGlkX2Z1bmNfZGlhZyk7CisJICBlcnJvcl9ub19h cmdzIChpbnZhbGlkX2Z1bmNfZGlhZyk7CiAJICByZXR1cm4gLTE7CiAJfQog ICAgICAgZWxzZQpAQCAtMzc5OCw3ICszNzk4LDcgQEAgYnVpbGRfdW5hcnlf b3AgKGxvY2F0aW9uX3QgbG9jYXRpb24sCiAgIGlmICgoaW52YWxpZF9vcF9k aWFnCiAgICAgICAgPSB0YXJnZXRtLmludmFsaWRfdW5hcnlfb3AgKGNvZGUs IFRSRUVfVFlQRSAoeGFyZykpKSkKICAgICB7Ci0gICAgICBlcnJvcl9hdCAo bG9jYXRpb24sIGludmFsaWRfb3BfZGlhZyk7CisgICAgICBlcnJvcl9hdF9u b19hcmdzIChsb2NhdGlvbiwgaW52YWxpZF9vcF9kaWFnKTsKICAgICAgIHJl dHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICAgfQogCkBAIC02NDA5LDcgKzY0 MDksNyBAQCBlcnJvcl9pbml0IChjb25zdCBjaGFyICpnbXNnaWQpCiAgIGNo YXIgKm9md2hhdDsKIAogICAvKiBUaGUgZ21zZ2lkIG1heSBiZSBhIGZvcm1h dCBzdHJpbmcgd2l0aCAlPCBhbmQgJT4uICovCi0gIGVycm9yIChnbXNnaWQp OworICBlcnJvcl9ub19hcmdzIChnbXNnaWQpOwogICBvZndoYXQgPSBwcmlu dF9zcGVsbGluZyAoKGNoYXIgKikgYWxsb2NhIChzcGVsbGluZ19sZW5ndGgg KCkgKyAxKSk7CiAgIGlmICgqb2Z3aGF0KQogICAgIGVycm9yICgiKG5lYXIg aW5pdGlhbGl6YXRpb24gZm9yICVxcykiLCBvZndoYXQpOwpAQCAtNjQyNiw3 ICs2NDI2LDcgQEAgcGVkd2Fybl9pbml0IChsb2NhdGlvbl90IGxvY2F0aW9u LCBpbnQgbwogICBjaGFyICpvZndoYXQ7CiAKICAgLyogVGhlIGdtc2dpZCBt YXkgYmUgYSBmb3JtYXQgc3RyaW5nIHdpdGggJTwgYW5kICU+LiAqLwotICBw ZWR3YXJuIChsb2NhdGlvbiwgb3B0LCBnbXNnaWQpOworICBwZWR3YXJuX25v X2FyZ3MgKGxvY2F0aW9uLCBvcHQsIGdtc2dpZCk7CiAgIG9md2hhdCA9IHBy aW50X3NwZWxsaW5nICgoY2hhciAqKSBhbGxvY2EgKHNwZWxsaW5nX2xlbmd0 aCAoKSArIDEpKTsKICAgaWYgKCpvZndoYXQpCiAgICAgcGVkd2FybiAobG9j YXRpb24sIG9wdCwgIihuZWFyIGluaXRpYWxpemF0aW9uIGZvciAlcXMpIiwg b2Z3aGF0KTsKQEAgLTY0NDQsNyArNjQ0NCw3IEBAIHdhcm5pbmdfaW5pdCAo aW50IG9wdCwgY29uc3QgY2hhciAqZ21zZ2kKICAgY2hhciAqb2Z3aGF0Owog CiAgIC8qIFRoZSBnbXNnaWQgbWF5IGJlIGEgZm9ybWF0IHN0cmluZyB3aXRo ICU8IGFuZCAlPi4gKi8KLSAgd2FybmluZyAob3B0LCBnbXNnaWQpOworICB3 YXJuaW5nX25vX2FyZ3MgKG9wdCwgZ21zZ2lkKTsKICAgb2Z3aGF0ID0gcHJp bnRfc3BlbGxpbmcgKChjaGFyICopIGFsbG9jYSAoc3BlbGxpbmdfbGVuZ3Ro ICgpICsgMSkpOwogICBpZiAoKm9md2hhdCkKICAgICB3YXJuaW5nIChvcHQs ICIobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJXFzKSIsIG9md2hhdCk7CkBA IC0xMDEwMiw3ICsxMDEwMiw3IEBAIGJ1aWxkX2JpbmFyeV9vcCAobG9jYXRp b25fdCBsb2NhdGlvbiwgZW4KICAgaWYgKChpbnZhbGlkX29wX2RpYWcKICAg ICAgICA9IHRhcmdldG0uaW52YWxpZF9iaW5hcnlfb3AgKGNvZGUsIHR5cGUw LCB0eXBlMSkpKQogICAgIHsKLSAgICAgIGVycm9yX2F0IChsb2NhdGlvbiwg aW52YWxpZF9vcF9kaWFnKTsKKyAgICAgIGVycm9yX2F0X25vX2FyZ3MgKGxv Y2F0aW9uLCBpbnZhbGlkX29wX2RpYWcpOwogICAgICAgcmV0dXJuIGVycm9y X21hcmtfbm9kZTsKICAgICB9CiAKSW5kZXg6IGdjYy9jLWZhbWlseS9jLWNv bW1vbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jLWZhbWls eS9jLWNvbW1vbi5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBnY2MvYy1mYW1p bHkvYy1jb21tb24uYwkod29ya2luZyBjb3B5KQpAQCAtOTUyMiwxMSArOTUy MiwxMSBAQCBjX3BhcnNlX2Vycm9yIChjb25zdCBjaGFyICpnbXNnaWQsIGVu dW0KICAgICAgIG1lc3NhZ2UgPSBOVUxMOwogICAgIH0KICAgZWxzZQotICAg IGVycm9yIChnbXNnaWQpOworICAgIGVycm9yX25vX2FyZ3MgKGdtc2dpZCk7 CiAKICAgaWYgKG1lc3NhZ2UpCiAgICAgewotICAgICAgZXJyb3IgKG1lc3Nh Z2UpOworICAgICAgZXJyb3Jfbm9fYXJncyAobWVzc2FnZSk7CiAgICAgICBm cmVlIChtZXNzYWdlKTsKICAgICB9CiAjdW5kZWYgY2F0ZW5hdGVfbWVzc2Fn ZXMKSW5kZXg6IGdjYy9jb2xsZWN0Mi5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy9jb2xsZWN0Mi5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBn Y2MvY29sbGVjdDIuYwkod29ya2luZyBjb3B5KQpAQCAtMTk4Miw3ICsxOTgy LDcgQEAgY29sbGVjdF9leGVjdXRlIChjb25zdCBjaGFyICpwcm9nLCBjaGFy CiAJICBmYXRhbF9lcnJvciAoIiVzOiAlbSIsIF8oZXJybXNnKSk7CiAJfQog ICAgICAgZWxzZQotCWZhdGFsX2Vycm9yIChlcnJtc2cpOworCWZhdGFsX2Vy cm9yX25vX2FyZ3MgKGVycm1zZyk7CiAgICAgfQogCiAgIGZyZWUgKHJlc3Bv bnNlX2FyZyk7CkBAIC0yNTMzLDcgKzI1MzMsNyBAQCBzY2FuX3Byb2dfZmls ZSAoY29uc3QgY2hhciAqcHJvZ19uYW1lLCBzCiAJICBmYXRhbF9lcnJvciAo IiVzOiAlbSIsIF8oZXJybXNnKSk7CiAJfQogICAgICAgZWxzZQotCWZhdGFs X2Vycm9yIChlcnJtc2cpOworCWZhdGFsX2Vycm9yX25vX2FyZ3MgKGVycm1z Zyk7CiAgICAgfQogCiAgIGludF9oYW5kbGVyICA9ICh2b2lkICgqKSAoaW50 KSkgc2lnbmFsIChTSUdJTlQsICBTSUdfSUdOKTsKSW5kZXg6IGdjYy9jcC9j dnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvY3AvY3Z0LmMJ KHJldmlzaW9uIDIwNzA3NCkKKysrIGdjYy9jcC9jdnQuYwkod29ya2luZyBj b3B5KQpAQCAtNjY5LDcgKzY2OSw3IEBAIG9jcF9jb252ZXJ0ICh0cmVlIHR5 cGUsIHRyZWUgZXhwciwgaW50IGMKICAgICAgICA9IHRhcmdldG0uaW52YWxp ZF9jb252ZXJzaW9uIChUUkVFX1RZUEUgKGV4cHIpLCB0eXBlKSkpCiAgICAg ewogICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCi0JZXJyb3IgKGlu dmFsaWRfY29udl9kaWFnKTsKKwllcnJvcl9ub19hcmdzIChpbnZhbGlkX2Nv bnZfZGlhZyk7CiAgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogICAg IH0KIApJbmRleDogZ2NjL2NwL2RlY2wuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvY3AvZGVjbC5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBn Y2MvY3AvZGVjbC5jCSh3b3JraW5nIGNvcHkpCkBAIC05NTUwLDcgKzk1NTAs NyBAQCBncm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAqZGVj CiAJICAgIGVycm1zZyA9IHRhcmdldG0uaW52YWxpZF9yZXR1cm5fdHlwZSAo dHlwZSk7CiAJICAgIGlmIChlcnJtc2cpCiAJICAgICAgewotCQllcnJvciAo ZXJybXNnKTsKKwkJZXJyb3Jfbm9fYXJncyAoZXJybXNnKTsKIAkJdHlwZSA9 IGludGVnZXJfdHlwZV9ub2RlOwogCSAgICAgIH0KIApAQCAtMTExMjQsNyAr MTExMjQsNyBAQCBncm9rcGFybXMgKHRyZWUgcGFybWxpc3QsIHRyZWUgKnBh cm1zKQogICAgICAgaWYgKHR5cGUgIT0gZXJyb3JfbWFya19ub2RlCiAJICAm JiAoZXJybXNnID0gdGFyZ2V0bS5pbnZhbGlkX3BhcmFtZXRlcl90eXBlICh0 eXBlKSkpCiAJewotCSAgZXJyb3IgKGVycm1zZyk7CisJICBlcnJvcl9ub19h cmdzIChlcnJtc2cpOwogCSAgdHlwZSA9IGVycm9yX21hcmtfbm9kZTsKIAkg IFRSRUVfVFlQRSAoZGVjbCkgPSBlcnJvcl9tYXJrX25vZGU7CiAJfQpJbmRl eDogZ2NjL2NwL3BhcnNlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGdjYy9jcC9wYXJzZXIuYwkocmV2aXNpb24gMjA3MDc0KQorKysgZ2NjL2Nw L3BhcnNlci5jCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYwLDcgKzI2NjAsNyBA QCBjcF9wYXJzZXJfY2hlY2tfdHlwZV9kZWZpbml0aW9uIChjcF9wYXJzCiAg ICAgewogICAgICAgLyogRG9uJ3QgdXNlIGAlcycgdG8gcHJpbnQgdGhlIHN0 cmluZywgYmVjYXVzZSBxdW90YXRpb25zIChgJTwnLCBgJT4nKQogCSBpbiB0 aGUgbWVzc2FnZSBuZWVkIHRvIGJlIGludGVycHJldGVkLiAgKi8KLSAgICAg IGVycm9yIChwYXJzZXItPnR5cGVfZGVmaW5pdGlvbl9mb3JiaWRkZW5fbWVz c2FnZSk7CisgICAgICBlcnJvcl9ub19hcmdzIChwYXJzZXItPnR5cGVfZGVm aW5pdGlvbl9mb3JiaWRkZW5fbWVzc2FnZSk7CiAgICAgICByZXR1cm4gZmFs c2U7CiAgICAgfQogICByZXR1cm4gdHJ1ZTsKSW5kZXg6IGdjYy9jcC9wdC5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9jcC9wdC5jCShyZXZp c2lvbiAyMDcwNzQpCisrKyBnY2MvY3AvcHQuYwkod29ya2luZyBjb3B5KQpA QCAtMTM5NjUsNyArMTM5NjUsNyBAQCB0c3Vic3RfY29weV9hbmRfYnVpbGQg KHRyZWUgdCwKIAkJCQkgICAgICZlcnJvcl9tc2csCiAJCQkJICAgICBpbnB1 dF9sb2NhdGlvbik7CiAJaWYgKGVycm9yX21zZykKLQkgIGVycm9yIChlcnJv cl9tc2cpOworCSAgZXJyb3Jfbm9fYXJncyAoZXJyb3JfbXNnKTsKIAlpZiAo IWZ1bmN0aW9uX3AgJiYgaWRlbnRpZmllcl9wIChkZWNsKSkKIAkgIHsKIAkg ICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCkluZGV4OiBnY2MvY3AvdHlw ZWNrLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2NwL3R5cGVj ay5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBnY2MvY3AvdHlwZWNrLmMJKHdv cmtpbmcgY29weSkKQEAgLTM5ODMsNyArMzk4Myw3IEBAIGNwX2J1aWxkX2Jp bmFyeV9vcCAobG9jYXRpb25fdCBsb2NhdGlvbiwKICAgICAgICA9IHRhcmdl dG0uaW52YWxpZF9iaW5hcnlfb3AgKGNvZGUsIHR5cGUwLCB0eXBlMSkpKQog ICAgIHsKICAgICAgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQotCWVycm9y IChpbnZhbGlkX29wX2RpYWcpOworCWVycm9yX25vX2FyZ3MgKGludmFsaWRf b3BfZGlhZyk7CiAgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogICAg IH0KIApAQCAtNTU2OCw3ICs1NTY4LDcgQEAgY3BfYnVpbGRfdW5hcnlfb3Ag KGVudW0gdHJlZV9jb2RlIGNvZGUsCiAJCQkJICAgVFJFRV9UWVBFICh4YXJn KSkpKQogICAgIHsKICAgICAgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQot CWVycm9yIChpbnZhbGlkX29wX2RpYWcpOworCWVycm9yX25vX2FyZ3MgKGlu dmFsaWRfb3BfZGlhZyk7CiAgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2Rl OwogICAgIH0KIApJbmRleDogZ2NjL2RpYWdub3N0aWMtY29yZS5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9kaWFnbm9zdGljLWNvcmUuaAko cmV2aXNpb24gMjA3MDc0KQorKysgZ2NjL2RpYWdub3N0aWMtY29yZS5oCSh3 b3JraW5nIGNvcHkpCkBAIC01NiwyNCArNTYsNDIgQEAgZXh0ZXJuIGNvbnN0 IGNoYXIgKnRyaW1fZmlsZW5hbWUgKGNvbnN0CiAjZW5kaWYKIGV4dGVybiB2 b2lkIGludGVybmFsX2Vycm9yIChjb25zdCBjaGFyICosIC4uLikgQVRUUklC VVRFX0dDQ19ESUFHKDEsMikKICAgICAgQVRUUklCVVRFX05PUkVUVVJOOwor ZXh0ZXJuIHZvaWQgaW50ZXJuYWxfZXJyb3Jfbm9fYXJncyAoY29uc3QgY2hh ciAqKSBBVFRSSUJVVEVfTk9SRVRVUk47CisKIC8qIFBhc3Mgb25lIG9mIHRo ZSBPUFRfVyogZnJvbSBvcHRpb25zLmggYXMgdGhlIGZpcnN0IHBhcmFtZXRl ci4gICovCiBleHRlcm4gYm9vbCB3YXJuaW5nIChpbnQsIGNvbnN0IGNoYXIg KiwgLi4uKSBBVFRSSUJVVEVfR0NDX0RJQUcoMiwzKTsKIGV4dGVybiBib29s IHdhcm5pbmdfYXQgKGxvY2F0aW9uX3QsIGludCwgY29uc3QgY2hhciAqLCAu Li4pCiAgICAgQVRUUklCVVRFX0dDQ19ESUFHKDMsNCk7CitleHRlcm4gYm9v bCB3YXJuaW5nX25vX2FyZ3MgKGludCwgY29uc3QgY2hhciAqKTsKK2V4dGVy biBib29sIHdhcm5pbmdfYXRfbm9fYXJncyAobG9jYXRpb25fdCwgaW50LCBj b25zdCBjaGFyICopOworCiBleHRlcm4gdm9pZCBlcnJvciAoY29uc3QgY2hh ciAqLCAuLi4pIEFUVFJJQlVURV9HQ0NfRElBRygxLDIpOwogZXh0ZXJuIHZv aWQgZXJyb3JfbiAobG9jYXRpb25fdCwgaW50LCBjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgLi4uKQogICAgIEFUVFJJQlVURV9HQ0NfRElBRygzLDUp IEFUVFJJQlVURV9HQ0NfRElBRyg0LDUpOwogZXh0ZXJuIHZvaWQgZXJyb3Jf YXQgKGxvY2F0aW9uX3QsIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVf R0NDX0RJQUcoMiwzKTsKK2V4dGVybiB2b2lkIGVycm9yX25vX2FyZ3MgKGNv bnN0IGNoYXIgKik7CitleHRlcm4gdm9pZCBlcnJvcl9hdF9ub19hcmdzIChs b2NhdGlvbl90LCBjb25zdCBjaGFyICopOworCiBleHRlcm4gdm9pZCBmYXRh bF9lcnJvciAoY29uc3QgY2hhciAqLCAuLi4pIEFUVFJJQlVURV9HQ0NfRElB RygxLDIpCiAgICAgIEFUVFJJQlVURV9OT1JFVFVSTjsKK2V4dGVybiB2b2lk IGZhdGFsX2Vycm9yX25vX2FyZ3MgKGNvbnN0IGNoYXIgKikgQVRUUklCVVRF X05PUkVUVVJOOworCiAvKiBQYXNzIG9uZSBvZiB0aGUgT1BUX1cqIGZyb20g b3B0aW9ucy5oIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiAgKi8KIGV4dGVy biBib29sIHBlZHdhcm4gKGxvY2F0aW9uX3QsIGludCwgY29uc3QgY2hhciAq LCAuLi4pCiAgICAgIEFUVFJJQlVURV9HQ0NfRElBRygzLDQpOworZXh0ZXJu IGJvb2wgcGVkd2Fybl9ub19hcmdzIChsb2NhdGlvbl90LCBpbnQsIGNvbnN0 IGNoYXIgKik7CisKIGV4dGVybiBib29sIHBlcm1lcnJvciAobG9jYXRpb25f dCwgY29uc3QgY2hhciAqLCAuLi4pIEFUVFJJQlVURV9HQ0NfRElBRygyLDMp OworZXh0ZXJuIGJvb2wgcGVybWVycm9yX25vX2FyZ3MgKGxvY2F0aW9uX3Qs IGNvbnN0IGNoYXIgKik7CisKIGV4dGVybiB2b2lkIHNvcnJ5IChjb25zdCBj aGFyICosIC4uLikgQVRUUklCVVRFX0dDQ19ESUFHKDEsMik7CitleHRlcm4g dm9pZCBzb3JyeV9ub19hcmdzIChjb25zdCBjaGFyICopOworCiBleHRlcm4g dm9pZCBpbmZvcm0gKGxvY2F0aW9uX3QsIGNvbnN0IGNoYXIgKiwgLi4uKSBB VFRSSUJVVEVfR0NDX0RJQUcoMiwzKTsKIGV4dGVybiB2b2lkIGluZm9ybV9u IChsb2NhdGlvbl90LCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCAuLi4pCiAgICAgQVRUUklCVVRFX0dDQ19ESUFHKDMsNSkgQVRUUklCVVRF X0dDQ19ESUFHKDQsNSk7CitleHRlcm4gdm9pZCBpbmZvcm1fbm9fYXJncyAo bG9jYXRpb25fdCwgY29uc3QgY2hhciAqKTsKKwogZXh0ZXJuIHZvaWQgdmVy YmF0aW0gKGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfR0NDX0RJQUco MSwyKTsKIGV4dGVybiBib29sIGVtaXRfZGlhZ25vc3RpYyAoZGlhZ25vc3Rp Y190LCBsb2NhdGlvbl90LCBpbnQsCiAJCQkgICAgIGNvbnN0IGNoYXIgKiwg Li4uKSBBVFRSSUJVVEVfR0NDX0RJQUcoNCw1KTsKSW5kZXg6IGdjYy9kaWFn bm9zdGljLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2RpYWdu b3N0aWMuYwkocmV2aXNpb24gMjA3MDc0KQorKysgZ2NjL2RpYWdub3N0aWMu Ywkod29ya2luZyBjb3B5KQpAQCAtODkxLDI5ICs4OTEsMzggQEAgZGlhZ25v c3RpY19hcHBlbmRfbm90ZSAoZGlhZ25vc3RpY19jb250ZQogICB2YV9lbmQg KGFwKTsKIH0KIAotYm9vbAotZW1pdF9kaWFnbm9zdGljIChkaWFnbm9zdGlj X3Qga2luZCwgbG9jYXRpb25fdCBsb2NhdGlvbiwgaW50IG9wdCwKLQkJIGNv bnN0IGNoYXIgKmdtc2dpZCwgLi4uKQorc3RhdGljIGJvb2wKK3ZfZW1pdF9k aWFnbm9zdGljIChkaWFnbm9zdGljX3Qga2luZCwgbG9jYXRpb25fdCBsb2Nh dGlvbiwgaW50IG9wdCwgY29uc3QgY2hhciAqZ21zZ2lkLCB2YV9saXN0ICph cF9wKQogewogICBkaWFnbm9zdGljX2luZm8gZGlhZ25vc3RpYzsKLSAgdmFf bGlzdCBhcDsKICAgYm9vbCByZXQ7Ci0KLSAgdmFfc3RhcnQgKGFwLCBnbXNn aWQpOworICAKICAgaWYgKGtpbmQgPT0gREtfUEVSTUVSUk9SKQogICAgIHsK LSAgICAgIGRpYWdub3N0aWNfc2V0X2luZm8gKCZkaWFnbm9zdGljLCBnbXNn aWQsICZhcCwgbG9jYXRpb24sCisgICAgICBkaWFnbm9zdGljX3NldF9pbmZv ICgmZGlhZ25vc3RpYywgZ21zZ2lkLCBhcF9wLCBsb2NhdGlvbiwKIAkJCSAg IHBlcm1pc3NpdmVfZXJyb3Jfa2luZCAoZ2xvYmFsX2RjKSk7CiAgICAgICBk aWFnbm9zdGljLm9wdGlvbl9pbmRleCA9IHBlcm1pc3NpdmVfZXJyb3Jfb3B0 aW9uIChnbG9iYWxfZGMpOwogICAgIH0KICAgZWxzZSB7Ci0gICAgICBkaWFn bm9zdGljX3NldF9pbmZvICgmZGlhZ25vc3RpYywgZ21zZ2lkLCAmYXAsIGxv Y2F0aW9uLCBraW5kKTsKKyAgICAgIGRpYWdub3N0aWNfc2V0X2luZm8gKCZk aWFnbm9zdGljLCBnbXNnaWQsIGFwX3AsIGxvY2F0aW9uLCBraW5kKTsKICAg ICAgIGlmIChraW5kID09IERLX1dBUk5JTkcgfHwga2luZCA9PSBES19QRURX QVJOKQogCWRpYWdub3N0aWMub3B0aW9uX2luZGV4ID0gb3B0OwogICB9CiAK ICAgcmV0ID0gcmVwb3J0X2RpYWdub3N0aWMgKCZkaWFnbm9zdGljKTsKLSAg dmFfZW5kIChhcCk7CisgIHJldHVybiByZXQ7Cit9CisKK2Jvb2wKK2VtaXRf ZGlhZ25vc3RpYyAoZGlhZ25vc3RpY190IGtpbmQsIGxvY2F0aW9uX3QgbG9j YXRpb24sIGludCBvcHQsCisJCSBjb25zdCBjaGFyICpnbXNnaWQsIC4uLikK K3sKKyAgdmFfbGlzdCBhcDsKKyAgYm9vbCByZXQ7CisKKyAgdmFfc3RhcnQg KGFwLCBnbXNnaWQpOworICByZXQgPSB2X2VtaXRfZGlhZ25vc3RpYyAoa2lu ZCwgbG9jYXRpb24sIG9wdCwgZ21zZ2lkLCAmYXApOworICB2YV9lbmQgKGFw KTsgCiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTkyMiwxMiArOTMxLDEwIEBA IGVtaXRfZGlhZ25vc3RpYyAoZGlhZ25vc3RpY190IGtpbmQsIGxvY2EKIHZv aWQKIGluZm9ybSAobG9jYXRpb25fdCBsb2NhdGlvbiwgY29uc3QgY2hhciAq Z21zZ2lkLCAuLi4pCiB7Ci0gIGRpYWdub3N0aWNfaW5mbyBkaWFnbm9zdGlj OwogICB2YV9saXN0IGFwOwogCiAgIHZhX3N0YXJ0IChhcCwgZ21zZ2lkKTsK LSAgZGlhZ25vc3RpY19zZXRfaW5mbyAoJmRpYWdub3N0aWMsIGdtc2dpZCwg JmFwLCBsb2NhdGlvbiwgREtfTk9URSk7Ci0gIHJlcG9ydF9kaWFnbm9zdGlj ICgmZGlhZ25vc3RpYyk7CisgIHZfZW1pdF9kaWFnbm9zdGljIChES19OT1RF LCBsb2NhdGlvbiwgMCwgZ21zZ2lkLCAmYXApOwogICB2YV9lbmQgKGFwKTsK IH0KIApAQCAtOTQ4LDIxICs5NTUsMjMgQEAgaW5mb3JtX24gKGxvY2F0aW9u X3QgbG9jYXRpb24sIGludCBuLCBjbwogICB2YV9lbmQgKGFwKTsKIH0KIAor dm9pZAoraW5mb3JtX25vX2FyZ3MgKGxvY2F0aW9uX3QgbG9jYXRpb24sIGNv bnN0IGNoYXIgKmdtc2dpZCkKK3sKKyAgdl9lbWl0X2RpYWdub3N0aWMgKERL X05PVEUsIGxvY2F0aW9uLCAwLCBnbXNnaWQsIE5VTEwpOworfQorCiAvKiBB IHdhcm5pbmcgYXQgSU5QVVRfTE9DQVRJT04uICBVc2UgdGhpcyBmb3IgY29k ZSB3aGljaCBpcyBjb3JyZWN0IGFjY29yZGluZwogICAgdG8gdGhlIHJlbGV2 YW50IGxhbmd1YWdlIHNwZWNpZmljYXRpb24gYnV0IGlzIGxpa2VseSB0byBi ZSBidWdneSBhbnl3YXkuCiAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcm5p bmcgd2FzIHByaW50ZWQsIGZhbHNlIGlmIGl0IHdhcyBpbmhpYml0ZWQuICAq LwogYm9vbAogd2FybmluZyAoaW50IG9wdCwgY29uc3QgY2hhciAqZ21zZ2lk LCAuLi4pCiB7Ci0gIGRpYWdub3N0aWNfaW5mbyBkaWFnbm9zdGljOwogICB2 YV9saXN0IGFwOwogICBib29sIHJldDsKIAogICB2YV9zdGFydCAoYXAsIGdt c2dpZCk7Ci0gIGRpYWdub3N0aWNfc2V0X2luZm8gKCZkaWFnbm9zdGljLCBn bXNnaWQsICZhcCwgaW5wdXRfbG9jYXRpb24sIERLX1dBUk5JTkcpOwotICBk aWFnbm9zdGljLm9wdGlvbl9pbmRleCA9IG9wdDsKLQotICByZXQgPSByZXBv cnRfZGlhZ25vc3RpYyAoJmRpYWdub3N0aWMpOworICByZXQgPSB2X2VtaXRf ZGlhZ25vc3RpYyAoREtfV0FSTklORywgaW5wdXRfbG9jYXRpb24sIG9wdCwg Z21zZ2lkLCAmYXApOwogICB2YV9lbmQgKGFwKTsKICAgcmV0dXJuIHJldDsK IH0KQEAgLTk3NCwxOCArOTgzLDI3IEBAIHdhcm5pbmcgKGludCBvcHQsIGNv bnN0IGNoYXIgKmdtc2dpZCwgLi4KIGJvb2wKIHdhcm5pbmdfYXQgKGxvY2F0 aW9uX3QgbG9jYXRpb24sIGludCBvcHQsIGNvbnN0IGNoYXIgKmdtc2dpZCwg Li4uKQogewotICBkaWFnbm9zdGljX2luZm8gZGlhZ25vc3RpYzsKICAgdmFf bGlzdCBhcDsKICAgYm9vbCByZXQ7CiAKICAgdmFfc3RhcnQgKGFwLCBnbXNn aWQpOwotICBkaWFnbm9zdGljX3NldF9pbmZvICgmZGlhZ25vc3RpYywgZ21z Z2lkLCAmYXAsIGxvY2F0aW9uLCBES19XQVJOSU5HKTsKLSAgZGlhZ25vc3Rp Yy5vcHRpb25faW5kZXggPSBvcHQ7Ci0gIHJldCA9IHJlcG9ydF9kaWFnbm9z dGljICgmZGlhZ25vc3RpYyk7CisgIHJldCA9IHZfZW1pdF9kaWFnbm9zdGlj IChES19XQVJOSU5HLCBsb2NhdGlvbiwgb3B0LCBnbXNnaWQsICZhcCk7CiAg IHZhX2VuZCAoYXApOwogICByZXR1cm4gcmV0OwogfQogCitib29sCit3YXJu aW5nX2F0X25vX2FyZ3MgKGxvY2F0aW9uX3QgbG9jYXRpb24sIGludCBvcHQs IGNvbnN0IGNoYXIgKmdtc2dpZCkKK3sKKyAgcmV0dXJuIHZfZW1pdF9kaWFn bm9zdGljIChES19XQVJOSU5HLCBsb2NhdGlvbiwgb3B0LCBnbXNnaWQsIE5V TEwpOworfQorCitib29sCit3YXJuaW5nX25vX2FyZ3MgKGludCBvcHQsIGNv bnN0IGNoYXIgKmdtc2dpZCkKK3sKKyAgcmV0dXJuIHdhcm5pbmdfYXRfbm9f YXJncyAoaW5wdXRfbG9jYXRpb24sIG9wdCwgZ21zZ2lkKTsKK30KKwogLyog QSAicGVkYW50aWMiIHdhcm5pbmcgYXQgTE9DQVRJT046IGlzc3VlcyBhIHdh cm5pbmcgdW5sZXNzCiAgICAtcGVkYW50aWMtZXJyb3JzIHdhcyBnaXZlbiBv biB0aGUgY29tbWFuZCBsaW5lLCBpbiB3aGljaCBjYXNlIGl0CiAgICBpc3N1 ZXMgYW4gZXJyb3IuICBVc2UgdGhpcyBmb3IgZGlhZ25vc3RpY3MgcmVxdWly ZWQgYnkgdGhlIHJlbGV2YW50CkBAIC0xMDAyLDE4ICsxMDIwLDIxIEBAIHdh cm5pbmdfYXQgKGxvY2F0aW9uX3QgbG9jYXRpb24sIGludCBvcHQKIGJvb2wK IHBlZHdhcm4gKGxvY2F0aW9uX3QgbG9jYXRpb24sIGludCBvcHQsIGNvbnN0 IGNoYXIgKmdtc2dpZCwgLi4uKQogewotICBkaWFnbm9zdGljX2luZm8gZGlh Z25vc3RpYzsKICAgdmFfbGlzdCBhcDsKICAgYm9vbCByZXQ7CiAKICAgdmFf c3RhcnQgKGFwLCBnbXNnaWQpOwotICBkaWFnbm9zdGljX3NldF9pbmZvICgm ZGlhZ25vc3RpYywgZ21zZ2lkLCAmYXAsIGxvY2F0aW9uLCAgREtfUEVEV0FS Tik7Ci0gIGRpYWdub3N0aWMub3B0aW9uX2luZGV4ID0gb3B0OwotICByZXQg PSByZXBvcnRfZGlhZ25vc3RpYyAoJmRpYWdub3N0aWMpOworICByZXQgPSB2 X2VtaXRfZGlhZ25vc3RpYyAoREtfUEVEV0FSTiwgbG9jYXRpb24sIG9wdCwg Z21zZ2lkLCAmYXApOwogICB2YV9lbmQgKGFwKTsKICAgcmV0dXJuIHJldDsK IH0KIAorYm9vbAorcGVkd2Fybl9ub19hcmdzIChsb2NhdGlvbl90IGxvY2F0 aW9uLCBpbnQgb3B0LCBjb25zdCBjaGFyICpnbXNnaWQpCit7CisgIHJldHVy biB2X2VtaXRfZGlhZ25vc3RpYyAoREtfUEVEV0FSTiwgbG9jYXRpb24sIG9w dCwgZ21zZ2lkLCBOVUxMKTsKK30KKwogLyogQSAicGVybWlzc2l2ZSIgZXJy b3IgYXQgTE9DQVRJT046IGlzc3VlcyBhbiBlcnJvciB1bmxlc3MKICAgIC1m cGVybWlzc2l2ZSB3YXMgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSwgaW4g d2hpY2ggY2FzZSBpdCBpc3N1ZXMKICAgIGEgd2FybmluZy4gIFVzZSB0aGlz IGZvciB0aGluZ3MgdGhhdCByZWFsbHkgc2hvdWxkIGJlIGVycm9ycyBidXQg d2UKQEAgLTEwMjQsMzAgKzEwNDUsMzAgQEAgcGVkd2FybiAobG9jYXRpb25f dCBsb2NhdGlvbiwgaW50IG9wdCwgYwogYm9vbAogcGVybWVycm9yIChsb2Nh dGlvbl90IGxvY2F0aW9uLCBjb25zdCBjaGFyICpnbXNnaWQsIC4uLikKIHsK LSAgZGlhZ25vc3RpY19pbmZvIGRpYWdub3N0aWM7CiAgIHZhX2xpc3QgYXA7 CiAgIGJvb2wgcmV0OwogCiAgIHZhX3N0YXJ0IChhcCwgZ21zZ2lkKTsKLSAg ZGlhZ25vc3RpY19zZXRfaW5mbyAoJmRpYWdub3N0aWMsIGdtc2dpZCwgJmFw LCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2l2 ZV9lcnJvcl9raW5kIChnbG9iYWxfZGMpKTsKLSAgZGlhZ25vc3RpYy5vcHRp b25faW5kZXggPSBwZXJtaXNzaXZlX2Vycm9yX29wdGlvbiAoZ2xvYmFsX2Rj KTsKLSAgcmV0ID0gcmVwb3J0X2RpYWdub3N0aWMgKCZkaWFnbm9zdGljKTsK KyAgcmV0ID0gdl9lbWl0X2RpYWdub3N0aWMgKERLX1BFUk1FUlJPUiwgbG9j YXRpb24sIDAsIGdtc2dpZCwgJmFwKTsKICAgdmFfZW5kIChhcCk7CiAgIHJl dHVybiByZXQ7CiB9CiAKK2Jvb2wKK3Blcm1lcnJvcl9ub19hcmdzIChsb2Nh dGlvbl90IGxvY2F0aW9uLCBjb25zdCBjaGFyICpnbXNnaWQpCit7CisgIHJl dHVybiB2X2VtaXRfZGlhZ25vc3RpYyAoREtfUEVSTUVSUk9SLCBsb2NhdGlv biwgMCwgZ21zZ2lkLCBOVUxMKTsKK30KKwogLyogQSBoYXJkIGVycm9yOiB0 aGUgY29kZSBpcyBkZWZpbml0ZWx5IGlsbC1mb3JtZWQsIGFuZCBhbiBvYmpl Y3QgZmlsZQogICAgd2lsbCBub3QgYmUgcHJvZHVjZWQuICAqLwogdm9pZAog ZXJyb3IgKGNvbnN0IGNoYXIgKmdtc2dpZCwgLi4uKQogewotICBkaWFnbm9z dGljX2luZm8gZGlhZ25vc3RpYzsKICAgdmFfbGlzdCBhcDsKIAogICB2YV9z dGFydCAoYXAsIGdtc2dpZCk7Ci0gIGRpYWdub3N0aWNfc2V0X2luZm8gKCZk aWFnbm9zdGljLCBnbXNnaWQsICZhcCwgaW5wdXRfbG9jYXRpb24sIERLX0VS Uk9SKTsKLSAgcmVwb3J0X2RpYWdub3N0aWMgKCZkaWFnbm9zdGljKTsKKyAg dl9lbWl0X2RpYWdub3N0aWMgKERLX0VSUk9SLCBpbnB1dF9sb2NhdGlvbiwg MCwgZ21zZ2lkLCAmYXApOwogICB2YV9lbmQgKGFwKTsKIH0KIApAQCAtMTA3 MiwzMCArMTA5Myw0NCBAQCBlcnJvcl9uIChsb2NhdGlvbl90IGxvY2F0aW9u LCBpbnQgbiwgY29uCiB2b2lkCiBlcnJvcl9hdCAobG9jYXRpb25fdCBsb2Ms IGNvbnN0IGNoYXIgKmdtc2dpZCwgLi4uKQogewotICBkaWFnbm9zdGljX2lu Zm8gZGlhZ25vc3RpYzsKICAgdmFfbGlzdCBhcDsKIAogICB2YV9zdGFydCAo YXAsIGdtc2dpZCk7Ci0gIGRpYWdub3N0aWNfc2V0X2luZm8gKCZkaWFnbm9z dGljLCBnbXNnaWQsICZhcCwgbG9jLCBES19FUlJPUik7Ci0gIHJlcG9ydF9k aWFnbm9zdGljICgmZGlhZ25vc3RpYyk7CisgIHZfZW1pdF9kaWFnbm9zdGlj IChES19FUlJPUiwgbG9jLCAwLCBnbXNnaWQsICZhcCk7IAogICB2YV9lbmQg KGFwKTsKIH0KIAordm9pZAorZXJyb3JfYXRfbm9fYXJncyAobG9jYXRpb25f dCBsb2MsIGNvbnN0IGNoYXIgKmdtc2dpZCkKK3sKKyAgdl9lbWl0X2RpYWdu b3N0aWMgKERLX0VSUk9SLCBsb2MsIDAsIGdtc2dpZCwgTlVMTCk7Cit9CisK K3ZvaWQKK2Vycm9yX25vX2FyZ3MgKGNvbnN0IGNoYXIgKmdtc2dpZCkKK3sK KyAgZXJyb3JfYXRfbm9fYXJncyAoaW5wdXRfbG9jYXRpb24sIGdtc2dpZCk7 Cit9CisKIC8qICJTb3JyeSwgbm90IGltcGxlbWVudGVkLiIgIFVzZSBmb3Ig YSBsYW5ndWFnZSBmZWF0dXJlIHdoaWNoIGlzCiAgICByZXF1aXJlZCBieSB0 aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbiBidXQgbm90IGltcGxlbWVudGVk IGJ5IEdDQy4KICAgIEFuIG9iamVjdCBmaWxlIHdpbGwgbm90IGJlIHByb2R1 Y2VkLiAgKi8KIHZvaWQKIHNvcnJ5IChjb25zdCBjaGFyICpnbXNnaWQsIC4u LikKIHsKLSAgZGlhZ25vc3RpY19pbmZvIGRpYWdub3N0aWM7CiAgIHZhX2xp c3QgYXA7CiAKICAgdmFfc3RhcnQgKGFwLCBnbXNnaWQpOwotICBkaWFnbm9z dGljX3NldF9pbmZvICgmZGlhZ25vc3RpYywgZ21zZ2lkLCAmYXAsIGlucHV0 X2xvY2F0aW9uLCBES19TT1JSWSk7Ci0gIHJlcG9ydF9kaWFnbm9zdGljICgm ZGlhZ25vc3RpYyk7CisgIHZfZW1pdF9kaWFnbm9zdGljIChES19TT1JSWSwg aW5wdXRfbG9jYXRpb24sIDAsIGdtc2dpZCwgJmFwKTsKICAgdmFfZW5kIChh cCk7CiB9CiAKK3ZvaWQKK3NvcnJ5X25vX2FyZ3MgKGNvbnN0IGNoYXIgKmdt c2dpZCkKK3sKKyAgdl9lbWl0X2RpYWdub3N0aWMgKERLX1NPUlJZLCBpbnB1 dF9sb2NhdGlvbiwgMCwgZ21zZ2lkLCBOVUxMKTsKK30KKwogLyogUmV0dXJu IHRydWUgaWYgYW4gZXJyb3Igb3IgYSAic29ycnkiIGhhcyBiZWVuIHNlZW4u ICBWYXJpb3VzCiAgICBwcm9jZXNzaW5nIGlzIGRpc2FibGVkIGFmdGVyIGVy cm9ycy4gICovCiBib29sCkBAIC0xMTEwLDE3ICsxMTQ1LDIyIEBAIHNlZW5f ZXJyb3IgKHZvaWQpCiB2b2lkCiBmYXRhbF9lcnJvciAoY29uc3QgY2hhciAq Z21zZ2lkLCAuLi4pCiB7Ci0gIGRpYWdub3N0aWNfaW5mbyBkaWFnbm9zdGlj OwogICB2YV9saXN0IGFwOwogCiAgIHZhX3N0YXJ0IChhcCwgZ21zZ2lkKTsK LSAgZGlhZ25vc3RpY19zZXRfaW5mbyAoJmRpYWdub3N0aWMsIGdtc2dpZCwg JmFwLCBpbnB1dF9sb2NhdGlvbiwgREtfRkFUQUwpOwotICByZXBvcnRfZGlh Z25vc3RpYyAoJmRpYWdub3N0aWMpOworICB2X2VtaXRfZGlhZ25vc3RpYyAo REtfRkFUQUwsIGlucHV0X2xvY2F0aW9uLCAwLCBnbXNnaWQsICZhcCk7CiAg IHZhX2VuZCAoYXApOwogCiAgIGdjY191bnJlYWNoYWJsZSAoKTsKIH0KIAor dm9pZAorZmF0YWxfZXJyb3Jfbm9fYXJncyAoY29uc3QgY2hhciAqZ21zZ2lk KQoreworICB2X2VtaXRfZGlhZ25vc3RpYyAoREtfRkFUQUwsIGlucHV0X2xv Y2F0aW9uLCAwLCBnbXNnaWQsIE5VTEwpOworICBnY2NfdW5yZWFjaGFibGUg KCk7Cit9CisKIC8qIEFuIGludGVybmFsIGNvbnNpc3RlbmN5IGNoZWNrIGhh cyBmYWlsZWQuICBXZSBtYWtlIG5vIGF0dGVtcHQgdG8KICAgIGNvbnRpbnVl LiAgTm90ZSB0aGF0IHVubGVzcyB0aGVyZSBpcyBkZWJ1Z2dpbmcgdmFsdWUg dG8gYmUgaGFkIGZyb20KICAgIGEgbW9yZSBzcGVjaWZpYyBtZXNzYWdlLCBv ciBzb21lIG90aGVyIGdvb2QgcmVhc29uLCB5b3Ugc2hvdWxkIHVzZQpAQCAt MTEyOCwxNiArMTE2OCwyMyBAQCBmYXRhbF9lcnJvciAoY29uc3QgY2hhciAq Z21zZ2lkLCAuLi4pCiB2b2lkCiBpbnRlcm5hbF9lcnJvciAoY29uc3QgY2hh ciAqZ21zZ2lkLCAuLi4pCiB7Ci0gIGRpYWdub3N0aWNfaW5mbyBkaWFnbm9z dGljOwogICB2YV9saXN0IGFwOwogCiAgIHZhX3N0YXJ0IChhcCwgZ21zZ2lk KTsKLSAgZGlhZ25vc3RpY19zZXRfaW5mbyAoJmRpYWdub3N0aWMsIGdtc2dp ZCwgJmFwLCBpbnB1dF9sb2NhdGlvbiwgREtfSUNFKTsKLSAgcmVwb3J0X2Rp YWdub3N0aWMgKCZkaWFnbm9zdGljKTsKKyAgdl9lbWl0X2RpYWdub3N0aWMg KERLX0lDRSwgaW5wdXRfbG9jYXRpb24sIDAsIGdtc2dpZCwgJmFwKTsKICAg dmFfZW5kIChhcCk7CiAKICAgZ2NjX3VucmVhY2hhYmxlICgpOwogfQorCit2 b2lkCitpbnRlcm5hbF9lcnJvcl9ub19hcmdzIChjb25zdCBjaGFyICpnbXNn aWQpCit7CisgIHZfZW1pdF9kaWFnbm9zdGljIChES19JQ0UsIGlucHV0X2xv Y2F0aW9uLCAwLCBnbXNnaWQsIE5VTEwpOworICBnY2NfdW5yZWFjaGFibGUg KCk7Cit9CisKKwogDAogLyogU3BlY2lhbCBjYXNlIGVycm9yIGZ1bmN0aW9u cy4gIE1vc3QgYXJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQogICAg YWJvdmUsIG9yIHNob3VsZCBiZS4gICovCkluZGV4OiBnY2MvZHdhcmYyYXNt LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2R3YXJmMmFzbS5j CShyZXZpc2lvbiAyMDcwNzQpCisrKyBnY2MvZHdhcmYyYXNtLmMJKHdvcmtp bmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBkdzJfYXNtX291dHB1dF92 bXNfZGVsdGEgKGludCBzaXplIEFUVFJJCiAjaWZuZGVmIEFTTV9PVVRQVVRf RFdBUkZfVk1TX0RFTFRBCiAgIC8qIFZNUyBEZWx0YSBpcyBvbmx5IHNwZWNp YWwgb24gaWE2NC12bXMsIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsc28gZ2V0cwog ICAgICBjYWxsZWQgb24gYWxwaGEtdm1zIHNvIGl0IGhhcyB0byBkbyBzb21l dGhpbmcgc2FuZS4gICovCi0gIGR3Ml9hc21fb3V0cHV0X2RlbHRhIChzaXpl LCBsYWIxLCBsYWIyLCBjb21tZW50KTsKKyAgZHcyX2FzbV9vdXRwdXRfZGVs dGEgKHNpemUsIGxhYjEsIGxhYjIsICIlcyIsIGNvbW1lbnQpOwogI2Vsc2UK ICAgQVNNX09VVFBVVF9EV0FSRl9WTVNfREVMVEEgKGFzbV9vdXRfZmlsZSwg c2l6ZSwgbGFiMSwgbGFiMik7CiAgIGlmIChmbGFnX2RlYnVnX2FzbSAmJiBj b21tZW50KQpJbmRleDogZ2NjL2ZvbGQtY29uc3QuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9sZC1jb25zdC5jCShyZXZpc2lvbiAyMDcw NzQpCisrKyBnY2MvZm9sZC1jb25zdC5jCSh3b3JraW5nIGNvcHkpCkBAIC0z MTIsNyArMzEyLDcgQEAgZm9sZF9vdmVyZmxvd193YXJuaW5nIChjb25zdCBj aGFyKiBnbXNnaQogCX0KICAgICB9CiAgIGVsc2UgaWYgKGlzc3VlX3N0cmlj dF9vdmVyZmxvd193YXJuaW5nICh3YykpCi0gICAgd2FybmluZyAoT1BUX1dz dHJpY3Rfb3ZlcmZsb3csIGdtc2dpZCk7CisgICAgd2FybmluZ19ub19hcmdz IChPUFRfV3N0cmljdF9vdmVyZmxvdywgZ21zZ2lkKTsKIH0KIAwKIC8qIFJl dHVybiB0cnVlIGlmIHRoZSBidWlsdC1pbiBtYXRoZW1hdGljYWwgZnVuY3Rp b24gc3BlY2lmaWVkIGJ5IENPREUKSW5kZXg6IGdjYy9nY2MuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvZ2NjLmMJKHJldmlzaW9uIDIwNzA3 NCkKKysrIGdjYy9nY2MuYwkod29ya2luZyBjb3B5KQpAQCAtMjc4Miw3ICsy NzgyLDcgQEAgZXhlY3V0ZSAodm9pZCkKICAgICAgIGlmIChlcnJtc2cgIT0g TlVMTCkKIAl7CiAJICBpZiAoZXJyID09IDApCi0JICAgIGZhdGFsX2Vycm9y IChlcnJtc2cpOworCSAgICBmYXRhbF9lcnJvcl9ub19hcmdzIChlcnJtc2cp OwogCSAgZWxzZQogCSAgICB7CiAJICAgICAgZXJybm8gPSBlcnI7CkluZGV4 OiBnY2MvbHRvLXdyYXBwZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvbHRvLXdyYXBwZXIuYwkocmV2aXNpb24gMjA3MDc0KQorKysgZ2Nj L2x0by13cmFwcGVyLmMJKHdvcmtpbmcgY29weSkKQEAgLTE5MiwxMCArMTky LDEwIEBAIGNvbGxlY3RfZXhlY3V0ZSAoY2hhciAqKmFyZ3YpCiAgICAgICBp ZiAoZXJyICE9IDApCiAJewogCSAgZXJybm8gPSBlcnI7Ci0JICBmYXRhbF9w ZXJyb3IgKGVycm1zZyk7CisJICBmYXRhbF9wZXJyb3IgKCIlcyIsIGVycm1z Zyk7CiAJfQogICAgICAgZWxzZQotCWZhdGFsIChlcnJtc2cpOworCWZhdGFs ICgiJXMiLCBlcnJtc2cpOwogICAgIH0KIAogICByZXR1cm4gcGV4OwpJbmRl eDogZ2NjL29wdHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mv b3B0cy5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBnY2Mvb3B0cy5jCSh3b3Jr aW5nIGNvcHkpCkBAIC0xMDM5LDcgKzEwMzksNyBAQCBwcmludF9maWx0ZXJl ZF9oZWxwICh1bnNpZ25lZCBpbnQgaW5jbHVkCiAJCSAgICAgIGlmICgqIChj b25zdCBjaGFyICoqKSBmbGFnX3ZhciAhPSBOVUxMKQogCQkJc25wcmludGYg KG5ld19oZWxwICsgc3RybGVuIChuZXdfaGVscCksCiAJCQkJICBzaXplb2Yg KG5ld19oZWxwKSAtIHN0cmxlbiAobmV3X2hlbHApLAotCQkJCSAgKiAoY29u c3QgY2hhciAqKikgZmxhZ192YXIpOworCQkJCSAgIiVzIiwgKiAoY29uc3Qg Y2hhciAqKikgZmxhZ192YXIpOwogCQkgICAgfQogCQkgIGVsc2UgaWYgKG9w dGlvbi0+dmFyX3R5cGUgPT0gQ0xWQ19FTlVNKQogCQkgICAgewpAQCAtMTA1 Myw3ICsxMDUzLDcgQEAgcHJpbnRfZmlsdGVyZWRfaGVscCAodW5zaWduZWQg aW50IGluY2x1ZAogCQkJYXJnID0gXygiW2RlZmF1bHRdIik7CiAJCSAgICAg IHNucHJpbnRmIChuZXdfaGVscCArIHN0cmxlbiAobmV3X2hlbHApLAogCQkJ CXNpemVvZiAobmV3X2hlbHApIC0gc3RybGVuIChuZXdfaGVscCksCi0JCQkJ YXJnKTsKKwkJCQkiJXMiLCBhcmcpOwogCQkgICAgfQogCQkgIGVsc2UKIAkJ ICAgIHNwcmludGYgKG5ld19oZWxwICsgc3RybGVuIChuZXdfaGVscCksCklu ZGV4OiBnY2MvdHJlZS1zcmEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvdHJlZS1zcmEuYwkocmV2aXNpb24gMjA3MDc0KQorKysgZ2NjL3Ry ZWUtc3JhLmMJKHdvcmtpbmcgY29weSkKQEAgLTM4NjEsNyArMzg2MSw3IEBA IGR1bXBfZGVyZWZlcmVuY2VzX3RhYmxlIChGSUxFICpmLCBjb25zdAogewog ICBiYXNpY19ibG9jayBiYjsKIAotICBmcHJpbnRmIChkdW1wX2ZpbGUsIHN0 cik7CisgIGZwcmludGYgKGR1bXBfZmlsZSwgIiVzIiwgc3RyKTsKICAgRk9S X0JCX0JFVFdFRU4gKGJiLCBFTlRSWV9CTE9DS19QVFJfRk9SX0ZOIChjZnVu KSwKIAkJICBFWElUX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pLCBuZXh0X2Ji KQogICAgIHsKSW5kZXg6IGdjYy90cmVlLXNzYS11bmluaXQuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvdHJlZS1zc2EtdW5pbml0LmMJKHJl dmlzaW9uIDIwNzA3NCkKKysrIGdjYy90cmVlLXNzYS11bmluaXQuYwkod29y a2luZyBjb3B5KQpAQCAtNzY0LDcgKzc2NCw3IEBAIGR1bXBfcHJlZGljYXRl cyAoZ2ltcGxlIHVzZXN0bXQsIHByZWRfY2gKIHsKICAgc2l6ZV90IGksIGo7 CiAgIHByZWRfY2hhaW4gb25lX3ByZWRfY2hhaW4gPSB2TlVMTDsKLSAgZnBy aW50ZiAoZHVtcF9maWxlLCBtc2cpOworICBmcHJpbnRmIChkdW1wX2ZpbGUs ICIlcyIsIG1zZyk7CiAgIHByaW50X2dpbXBsZV9zdG10IChkdW1wX2ZpbGUs IHVzZXN0bXQsIDAsIDApOwogICBmcHJpbnRmIChkdW1wX2ZpbGUsICJpcyBn dWFyZGVkIGJ5IDpcblxuIik7CiAgIHNpemVfdCBudW1fcHJlZHMgPSBwcmVk cy5sZW5ndGggKCk7CkluZGV4OiBpbmNsdWRlL2Fuc2lkZWNsLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS9hbnNpZGVjbC5oCShyZXZp c2lvbiAyMDcwNzQpCisrKyBpbmNsdWRlL2Fuc2lkZWNsLmgJKHdvcmtpbmcg Y29weSkKQEAgLTIwNSw2ICsyMDUsMTIgQEAgU28gaW5zdGVhZCB3ZSB1c2Ug dGhlIG1hY3JvIGJlbG93IGFuZCB0ZQogI2RlZmluZSBBVFRSSUJVVEVfUFJJ TlRGXzUgQVRUUklCVVRFX1BSSU5URig1LCA2KQogI2VuZGlmIC8qIEFUVFJJ QlVURV9QUklOVEYgKi8KIAorI2lmbmRlZiBBVFRSSUJVVEVfR05VX1BSSU5U RgorI2RlZmluZSBBVFRSSUJVVEVfR05VX1BSSU5URihtLCBuKSBfX2F0dHJp YnV0ZV9fICgoX19mb3JtYXRfXyAoX19nbnVfcHJpbnRmX18sIG0sIG4pKSkg QVRUUklCVVRFX05PTk5VTEwobSkKKyNkZWZpbmUgQVRUUklCVVRFX0dOVV9Q UklOVEZfM18wIEFUVFJJQlVURV9HTlVfUFJJTlRGKDMsIDApCisjZGVmaW5l IEFUVFJJQlVURV9HTlVfUFJJTlRGXzVfMCBBVFRSSUJVVEVfR05VX1BSSU5U Rig1LCAwKQorI2VuZGlmIC8qIEFUVFJJQlVURV9HTlVfUFJJTlRGICovCisK IC8qIFVzZSBBVFRSSUJVVEVfRlBUUl9QUklOVEYgd2hlbiB0aGUgZm9ybWF0 IGF0dHJpYnV0ZSBpcyB0byBiZSBzZXQgb24KICAgIGEgZnVuY3Rpb24gcG9p bnRlci4gIEZvcm1hdCBhdHRyaWJ1dGVzIHdlcmUgYWxsb3dlZCBvbiBmdW5j dGlvbgogICAgcG9pbnRlcnMgYXMgb2YgZ2NjIDMuMS4gICovCkluZGV4OiBs aWJjcHAvZXJyb3JzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGli Y3BwL2Vycm9ycy5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBsaWJjcHAvZXJy b3JzLmMJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDEyIEBAIGNwcF9l cnJvciAoY3BwX3JlYWRlciAqIHBmaWxlLCBpbnQgbGV2ZWwKICAgcmV0dXJu IHJldDsKIH0KIAorYm9vbAorY3BwX2Vycm9yX25vX2FyZ3MgKGNwcF9yZWFk ZXIgKnBmaWxlLCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKm1zZ2lkKQorewor ICByZXR1cm4gY3BwX2RpYWdub3N0aWMgKHBmaWxlLCBsZXZlbCwgQ1BQX1df Tk9ORSwgbXNnaWQsIE5VTEwpOworfQorCiAvKiBQcmludCBhIHdhcm5pbmcu ICBUaGUgd2FybmluZyByZWFzb24gbWF5IGJlIGdpdmVuIGluIFJFQVNPTi4g ICovCiAKIGJvb2wKQEAgLTk3LDYgKzEwMywxMiBAQCBjcHBfd2FybmluZyAo Y3BwX3JlYWRlciAqIHBmaWxlLCBpbnQgcmVhCiAgIHJldHVybiByZXQ7CiB9 CiAKK2Jvb2wKK2NwcF93YXJuaW5nX25vX2FyZ3MgKGNwcF9yZWFkZXIgKnBm aWxlLCBpbnQgcmVhc29uLCBjb25zdCBjaGFyICptc2dpZCkKK3sKKyAgcmV0 dXJuIGNwcF9kaWFnbm9zdGljIChwZmlsZSwgQ1BQX0RMX1dBUk5JTkcsIHJl YXNvbiwgbXNnaWQsIE5VTEwpOworfQorCiAvKiBQcmludCBhIHBlZGFudGlj IHdhcm5pbmcuICBUaGUgd2FybmluZyByZWFzb24gbWF5IGJlIGdpdmVuIGlu IFJFQVNPTi4gICovCiAKIGJvb2wKQEAgLTExMyw2ICsxMjUsMTIgQEAgY3Bw X3BlZHdhcm5pbmcgKGNwcF9yZWFkZXIgKiBwZmlsZSwgaW50CiAgIHJldHVy biByZXQ7CiB9CiAKK2Jvb2wKK2NwcF9wZWR3YXJuaW5nX25vX2FyZ3MgKGNw cF9yZWFkZXIgKnBmaWxlLCBpbnQgcmVhc29uLCBjb25zdCBjaGFyICptc2dp ZCkKK3sKKyAgcmV0dXJuIGNwcF9kaWFnbm9zdGljIChwZmlsZSwgQ1BQX0RM X1BFRFdBUk4sIHJlYXNvbiwgbXNnaWQsIE5VTEwpOworfQorCiAvKiBQcmlu dCBhIHdhcm5pbmcsIGluY2x1ZGluZyBzeXN0ZW0gaGVhZGVycy4gIFRoZSB3 YXJuaW5nIHJlYXNvbiBtYXkgYmUKICAgIGdpdmVuIGluIFJFQVNPTi4gICov CiAKQEAgLTEzMCw2ICsxNDgsMTIgQEAgY3BwX3dhcm5pbmdfc3lzaGRyIChj cHBfcmVhZGVyICogcGZpbGUsCiAgIHJldHVybiByZXQ7CiB9CiAKK2Jvb2wK K2NwcF93YXJuaW5nX3N5c2hkcl9ub19hcmdzIChjcHBfcmVhZGVyICpwZmls ZSwgaW50IHJlYXNvbiwgY29uc3QgY2hhciAqbXNnaWQpCit7CisgIHJldHVy biBjcHBfZGlhZ25vc3RpYyAocGZpbGUsIENQUF9ETF9XQVJOSU5HX1NZU0hE UiwgcmVhc29uLCBtc2dpZCwgTlVMTCk7Cit9CisKIC8qIFByaW50IGEgZGlh Z25vc3RpYyBhdCBhIHNwZWNpZmljIGxvY2F0aW9uLiAgKi8KIAogQVRUUklC VVRFX0ZQVFJfUFJJTlRGKDYsMCkKQEAgLTE2Niw2ICsxOTAsMTUgQEAgY3Bw X2Vycm9yX3dpdGhfbGluZSAoY3BwX3JlYWRlciAqcGZpbGUsCiAgIHJldHVy biByZXQ7CiB9CiAKK2Jvb2wKK2NwcF9lcnJvcl93aXRoX2xpbmVfbm9fYXJn cyAoY3BwX3JlYWRlciAqcGZpbGUsIGludCBsZXZlbCwKKyAgICAgICAgIHNv dXJjZV9sb2NhdGlvbiBzcmNfbG9jLCB1bnNpZ25lZCBpbnQgY29sdW1uLAor ICAgICAgICAgY29uc3QgY2hhciAqbXNnaWQpCit7CisgIHJldHVybiBjcHBf ZGlhZ25vc3RpY193aXRoX2xpbmUgKHBmaWxlLCBsZXZlbCwgQ1BQX1dfTk9O RSwgc3JjX2xvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29sdW1uLCBtc2dpZCwgTlVMTCk7Cit9CisKIC8qIFByaW50IGEgd2Fy bmluZy4gIFRoZSB3YXJuaW5nIHJlYXNvbiBtYXkgYmUgZ2l2ZW4gaW4gUkVB U09OLiAgKi8KIAogYm9vbApAQCAtMTg1LDYgKzIxOCwxNSBAQCBjcHBfd2Fy bmluZ193aXRoX2xpbmUgKGNwcF9yZWFkZXIgKnBmaWxlCiAgIHJldHVybiBy ZXQ7CiB9CiAKK2Jvb2wKK2NwcF93YXJuaW5nX3dpdGhfbGluZV9ub19hcmdz IChjcHBfcmVhZGVyICpwZmlsZSwgaW50IHJlYXNvbiwKKyAgICAgICAgICAg c291cmNlX2xvY2F0aW9uIHNyY19sb2MsIHVuc2lnbmVkIGludCBjb2x1bW4s CisgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4g Y3BwX2RpYWdub3N0aWNfd2l0aF9saW5lIChwZmlsZSwgQ1BQX0RMX1dBUk5J TkcsIHJlYXNvbiwgc3JjX2xvYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29sdW1uLCBtc2dpZCwgTlVMTCk7Cit9CisKIC8qIFBy aW50IGEgcGVkYW50aWMgd2FybmluZy4gIFRoZSB3YXJuaW5nIHJlYXNvbiBt YXkgYmUgZ2l2ZW4gaW4gUkVBU09OLiAgKi8KIAogYm9vbApAQCAtMjA0LDYg KzI0NiwxNSBAQCBjcHBfcGVkd2FybmluZ193aXRoX2xpbmUgKGNwcF9yZWFk ZXIgKnBmCiAgIHJldHVybiByZXQ7CiB9CiAKK2Jvb2wKK2NwcF9wZWR3YXJu aW5nX3dpdGhfbGluZV9ub19hcmdzIChjcHBfcmVhZGVyICpwZmlsZSwgaW50 IHJlYXNvbiwKKyAgICAgICAgICAgICAgc291cmNlX2xvY2F0aW9uIHNyY19s b2MsIHVuc2lnbmVkIGludCBjb2x1bW4sCisgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4gY3BwX2RpYWdub3N0aWNfd2l0 aF9saW5lIChwZmlsZSwgQ1BQX0RMX1BFRFdBUk4sIHJlYXNvbiwgc3JjX2xv YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1u LCBtc2dpZCwgTlVMTCk7Cit9CisKIC8qIFByaW50IGEgd2FybmluZywgaW5j bHVkaW5nIHN5c3RlbSBoZWFkZXJzLiAgVGhlIHdhcm5pbmcgcmVhc29uIG1h eSBiZQogICAgZ2l2ZW4gaW4gUkVBU09OLiAgKi8KIApAQCAtMjI0LDYgKzI3 NSwxNSBAQCBjcHBfd2FybmluZ193aXRoX2xpbmVfc3lzaGRyIChjcHBfcmVh ZGVyCiAgIHJldHVybiByZXQ7CiB9CiAKK2Jvb2wKK2NwcF93YXJuaW5nX3dp dGhfbGluZV9zeXNoZHJfbm9fYXJncyAoY3BwX3JlYWRlciAqcGZpbGUsIGlu dCByZWFzb24sCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbG9jYXRp b24gc3JjX2xvYywgdW5zaWduZWQgaW50IGNvbHVtbiwKKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4gY3Bw X2RpYWdub3N0aWNfd2l0aF9saW5lIChwZmlsZSwgQ1BQX0RMX1dBUk5JTkdf U1lTSERSLCByZWFzb24sIHNyY19sb2MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbHVtbiwgbXNnaWQsIE5VTEwpOworfQorCiAv KiBQcmludCBhIHdhcm5pbmcgb3IgZXJyb3IsIGRlcGVuZGluZyBvbiB0aGUg dmFsdWUgb2YgTEVWRUwuICBJbmNsdWRlCiAgICBpbmZvcm1hdGlvbiBmcm9t IGVycm5vLiAgKi8KIApJbmRleDogbGliY3BwL2V4cHIuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaWJjcHAvZXhwci5jCShyZXZpc2lvbiAyMDcw NzQpCisrKyBsaWJjcHAvZXhwci5jCSh3b3JraW5nIGNvcHkpCkBAIC02Njgs MTAgKzY2OCwxMCBAQCBjcHBfY2xhc3NpZnlfbnVtYmVyIChjcHBfcmVhZGVy ICpwZmlsZSwKIAkJICAgICAgICAgICAgICAgIDogTl8oInVzZSBvZiBDOTkg bG9uZyBsb25nIGludGVnZXIgY29uc3RhbnQiKTsKIAogCSAgaWYgKENQUF9P UFRJT04gKHBmaWxlLCBjOTkpKQotICAgICAgICAgICAgY3BwX3dhcm5pbmdf d2l0aF9saW5lIChwZmlsZSwgQ1BQX1dfTE9OR19MT05HLCB2aXJ0dWFsX2xv Y2F0aW9uLAorICAgICAgICAgICAgY3BwX3dhcm5pbmdfd2l0aF9saW5lX25v X2FyZ3MgKHBmaWxlLCBDUFBfV19MT05HX0xPTkcsIHZpcnR1YWxfbG9jYXRp b24sCiAJCQkJICAgMCwgbWVzc2FnZSk7CiAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgY3BwX3BlZHdhcm5pbmdfd2l0aF9saW5lIChwZmlsZSwgQ1BQ X1dfTE9OR19MT05HLAorICAgICAgICAgICAgY3BwX3BlZHdhcm5pbmdfd2l0 aF9saW5lX25vX2FyZ3MgKHBmaWxlLCBDUFBfV19MT05HX0xPTkcsCiAJCQkJ ICAgICAgdmlydHVhbF9sb2NhdGlvbiwgMCwgbWVzc2FnZSk7CiAgICAgICAg IH0KIApJbmRleDogbGliY3BwL2luY2x1ZGUvY3BwbGliLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbGliY3BwL2luY2x1ZGUvY3BwbGliLmgJKHJl dmlzaW9uIDIwNzA3NCkKKysrIGxpYmNwcC9pbmNsdWRlL2NwcGxpYi5oCSh3 b3JraW5nIGNvcHkpCkBAIC05MzksMTIgKzkzOSwyMyBAQCBlbnVtIHsKIC8q IE91dHB1dCBhIGRpYWdub3N0aWMgb2Ygc29tZSBraW5kLiAgKi8KIGV4dGVy biBib29sIGNwcF9lcnJvciAoY3BwX3JlYWRlciAqLCBpbnQsIGNvbnN0IGNo YXIgKm1zZ2lkLCAuLi4pCiAgIEFUVFJJQlVURV9QUklOVEZfMzsKK2V4dGVy biBib29sIGNwcF9lcnJvcl9ub19hcmdzIChjcHBfcmVhZGVyICosIGludCwg Y29uc3QgY2hhciAqKQorICBBVFRSSUJVVEVfR05VX1BSSU5URl8zXzA7CisK IGV4dGVybiBib29sIGNwcF93YXJuaW5nIChjcHBfcmVhZGVyICosIGludCwg Y29uc3QgY2hhciAqbXNnaWQsIC4uLikKICAgQVRUUklCVVRFX1BSSU5URl8z OworZXh0ZXJuIGJvb2wgY3BwX3dhcm5pbmdfbm9fYXJncyAoY3BwX3JlYWRl ciAqLCBpbnQsIGNvbnN0IGNoYXIgKikKKyAgQVRUUklCVVRFX0dOVV9QUklO VEZfM18wOworCiBleHRlcm4gYm9vbCBjcHBfcGVkd2FybmluZyAoY3BwX3Jl YWRlciAqLCBpbnQsIGNvbnN0IGNoYXIgKm1zZ2lkLCAuLi4pCiAgIEFUVFJJ QlVURV9QUklOVEZfMzsKK2V4dGVybiBib29sIGNwcF9wZWR3YXJuaW5nX25v X2FyZ3MgKGNwcF9yZWFkZXIgKiwgaW50LCBjb25zdCBjaGFyICopCisgIEFU VFJJQlVURV9HTlVfUFJJTlRGXzNfMDsKKwogZXh0ZXJuIGJvb2wgY3BwX3dh cm5pbmdfc3lzaGRyIChjcHBfcmVhZGVyICosIGludCwgY29uc3QgY2hhciAq bXNnaWQsIC4uLikKICAgQVRUUklCVVRFX1BSSU5URl8zOworZXh0ZXJuIGJv b2wgY3BwX3dhcm5pbmdfc3lzaGRyX25vX2FyZ3MgKGNwcF9yZWFkZXIgKiwg aW50LCBjb25zdCBjaGFyICopCisgIEFUVFJJQlVURV9HTlVfUFJJTlRGXzNf MDsKIAogLyogT3V0cHV0IGEgZGlhZ25vc3RpYyB3aXRoICJNU0dJRDogIiBw cmVjZWRpbmcgdGhlCiAgICBlcnJvciBzdHJpbmcgb2YgZXJybm8uICBObyBs b2NhdGlvbiBpcyBwcmludGVkLiAgKi8KQEAgLTk1NiwxNSArOTY3LDMxIEBA IGV4dGVybiBib29sIGNwcF9lcnJubyAoY3BwX3JlYWRlciAqLCBpbnQKIGV4 dGVybiBib29sIGNwcF9lcnJvcl93aXRoX2xpbmUgKGNwcF9yZWFkZXIgKiwg aW50LCBzb3VyY2VfbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCwgY29uc3QgY2hhciAqbXNnaWQsIC4uLikK ICAgQVRUUklCVVRFX1BSSU5URl81OworZXh0ZXJuIGJvb2wgY3BwX2Vycm9y X3dpdGhfbGluZV9ub19hcmdzIChjcHBfcmVhZGVyICosIGludCwgc291cmNl X2xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCwgY29uc3QgY2hhciAqKQorICBBVFRSSUJVVEVf R05VX1BSSU5URl81XzA7CisKIGV4dGVybiBib29sIGNwcF93YXJuaW5nX3dp dGhfbGluZSAoY3BwX3JlYWRlciAqLCBpbnQsIHNvdXJjZV9sb2NhdGlvbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQs IGNvbnN0IGNoYXIgKm1zZ2lkLCAuLi4pCiAgIEFUVFJJQlVURV9QUklOVEZf NTsKKworZXh0ZXJuIGJvb2wgY3BwX3dhcm5pbmdfd2l0aF9saW5lX25vX2Fy Z3MgKGNwcF9yZWFkZXIgKiwgaW50LCBzb3VyY2VfbG9jYXRpb24sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQsIGNvbnN0IGNoYXIgKikKKyAgQVRUUklCVVRFX0dOVV9QUklOVEZfNV8w OworCiBleHRlcm4gYm9vbCBjcHBfcGVkd2FybmluZ193aXRoX2xpbmUgKGNw cF9yZWFkZXIgKiwgaW50LCBzb3VyY2VfbG9jYXRpb24sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkLCBjb25zdCBj aGFyICptc2dpZCwgLi4uKQogICBBVFRSSUJVVEVfUFJJTlRGXzU7CitleHRl cm4gYm9vbCBjcHBfcGVkd2FybmluZ193aXRoX2xpbmVfbm9fYXJncyAoY3Bw X3JlYWRlciAqLCBpbnQsIHNvdXJjZV9sb2NhdGlvbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCwg Y29uc3QgY2hhciAqKQorICBBVFRSSUJVVEVfR05VX1BSSU5URl81XzA7CisK IGV4dGVybiBib29sIGNwcF93YXJuaW5nX3dpdGhfbGluZV9zeXNoZHIgKGNw cF9yZWFkZXIgKiwgaW50LCBzb3VyY2VfbG9jYXRpb24sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCwgY29u c3QgY2hhciAqbXNnaWQsIC4uLikKICAgQVRUUklCVVRFX1BSSU5URl81Owor ZXh0ZXJuIGJvb2wgY3BwX3dhcm5pbmdfd2l0aF9saW5lX3N5c2hkcl9ub19h cmdzIChjcHBfcmVhZGVyICosIGludCwgc291cmNlX2xvY2F0aW9uLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCwgY29uc3QgY2hhciAqKQorICBBVFRSSUJVVEVfR05VX1BS SU5URl81XzA7CiAKIC8qIEluIGxleC5jICovCiBleHRlcm4gaW50IGNwcF9p ZGVxIChjb25zdCBjcHBfdG9rZW4gKiwgY29uc3QgY2hhciAqKTsKSW5kZXg6 IGxpYmNwcC9tYWNyby5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp YmNwcC9tYWNyby5jCShyZXZpc2lvbiAyMDcwNzQpCisrKyBsaWJjcHAvbWFj cm8uYwkod29ya2luZyBjb3B5KQpAQCAtMjk2OSw3ICsyOTY5LDcgQEAgY3Jl YXRlX2lzb19kZWZpbml0aW9uIChjcHBfcmVhZGVyICpwZmlsZQogCSAgICAg ZnVuY3Rpb24tbGlrZSBtYWNyb3MsIGJ1dCBub3QgYXQgdGhlIGVuZC4gICov CiAJICBpZiAoZm9sbG93aW5nX3Bhc3RlX29wKQogCSAgICB7Ci0JICAgICAg Y3BwX2Vycm9yIChwZmlsZSwgQ1BQX0RMX0VSUk9SLCBwYXN0ZV9vcF9lcnJv cl9tc2cpOworCSAgICAgIGNwcF9lcnJvcl9ub19hcmdzIChwZmlsZSwgQ1BQ X0RMX0VSUk9SLCBwYXN0ZV9vcF9lcnJvcl9tc2cpOwogCSAgICAgIHJldHVy biBmYWxzZTsKIAkgICAgfQogCSAgYnJlYWs7CkBAIC0yOTgyLDcgKzI5ODIs NyBAQCBjcmVhdGVfaXNvX2RlZmluaXRpb24gKGNwcF9yZWFkZXIgKnBmaWxl CiAJICAgICBmdW5jdGlvbi1saWtlIG1hY3JvcywgYnV0IG5vdCBhdCB0aGUg YmVnaW5uaW5nLiAgKi8KIAkgIGlmIChtYWNyby0+Y291bnQgPT0gMSkKIAkg ICAgewotCSAgICAgIGNwcF9lcnJvciAocGZpbGUsIENQUF9ETF9FUlJPUiwg cGFzdGVfb3BfZXJyb3JfbXNnKTsKKwkgICAgICBjcHBfZXJyb3Jfbm9fYXJn cyAocGZpbGUsIENQUF9ETF9FUlJPUiwgcGFzdGVfb3BfZXJyb3JfbXNnKTsK IAkgICAgICByZXR1cm4gZmFsc2U7CiAJICAgIH0KIAo= --089e013a12f874894e04f0dd0666--