From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Philipp Stephani Newsgroups: gmane.emacs.devel Subject: Re: emacs-module.c, eassert, and nonnull args Date: Sun, 11 Jun 2017 13:50:03 +0000 Message-ID: References: <5a128432-e087-ad45-a15c-c2b0ebb8f28d@cs.ucla.edu> <83inkaa1pc.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1136f5c8566b8f0551af7b59" X-Trace: blaine.gmane.org 1497189040 14587 195.159.176.226 (11 Jun 2017 13:50:40 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 11 Jun 2017 13:50:40 +0000 (UTC) Cc: phst@google.com, eggert@cs.ucla.edu, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jun 11 15:50:33 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dK3GC-00037W-Ex for ged-emacs-devel@m.gmane.org; Sun, 11 Jun 2017 15:50:32 +0200 Original-Received: from localhost ([::1]:34139 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dK3GE-0002Is-Me for ged-emacs-devel@m.gmane.org; Sun, 11 Jun 2017 09:50:34 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47928) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dK3G3-0002Ia-8h for emacs-devel@gnu.org; Sun, 11 Jun 2017 09:50:27 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dK3Fz-0007M5-KK for emacs-devel@gnu.org; Sun, 11 Jun 2017 09:50:23 -0400 Original-Received: from mail-ot0-x22f.google.com ([2607:f8b0:4003:c0f::22f]:32770) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dK3Fv-0007Jf-5T; Sun, 11 Jun 2017 09:50:15 -0400 Original-Received: by mail-ot0-x22f.google.com with SMTP id k4so56150948otd.0; Sun, 11 Jun 2017 06:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=fm1WNMZ/FJ7Xu20tPE1K/LwS+rOonvhZ+NM4E/1fLb8=; b=Zk2YkHHnoYdAVmO9VXVddAEBETkY//kbDXUxo6cGDoOVvmBrJ6fBNVgpKGBDKOaRJU rRzhDOsl4Mq+oUPVy8dvGns3wn2I/RVoDyCTyeGbYWkq/jwS8LPw4ccSrJs7/XCo7oNu jJXDgD1UPTsMpwD7zSWPmRxmfbTXcSQ2dxFXMbB7g0HGYIrxBRI++QUB6wexOi4M2K/F MPA7RRJy5W+CN/tBjT6393vlyGJoK8b7n66hLHUiPg94ae09JWCxHd5bWG7yJsZpa5wy qj4pKC9CLLG/hJhNAkydadBMJCY73DMG6mytMZ/S2XUUt1CFnYfDvgkMswc46jkVN4IP +NDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fm1WNMZ/FJ7Xu20tPE1K/LwS+rOonvhZ+NM4E/1fLb8=; b=dvPEpq87GJCUjLGuRWswg64Jq7piMFpM1bQJLs8iCIGaYZMGnNNef9wmZZSwdXhISX THWVbTELtp+so5vmsa3g73xezqocAvLsQn81NFvj/ZdpG1abn3g6fFzlHK8qGSi2WqYR 2MSReB/iqZ2C0D6tAnFm0OgVvkPsQpyQxxhT7g1+KgmtbObqpPJhj05Lzd4KTL6GdzIV Udw9jb9B7YjjXodnEvvwPXlsgNSwLORWfmoRkGv9KJlfNUqskk9c3gpUozEpI009/nJE BLMJ2FmRTs5cBxSWNzQmAyIHHLsTkzcwvXbwda9F2pTLnsVsgYQZfCm/1KNobr8ZqLCe Ef1g== X-Gm-Message-State: AODbwcBB35hCc7u6klp2doOAwY86op4u2JAjRfGuLBWETuCqAbTA8hHp FLTjWHZR707T48F50JoUylX7Eo0WyuhP X-Received: by 10.157.30.129 with SMTP id n1mr23645454otn.243.1497189013929; Sun, 11 Jun 2017 06:50:13 -0700 (PDT) In-Reply-To: <83inkaa1pc.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4003:c0f::22f X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:215576 Archived-At: --001a1136f5c8566b8f0551af7b59 Content-Type: multipart/alternative; boundary="001a1136f5c8566b8a0551af7b57" --001a1136f5c8566b8a0551af7b57 Content-Type: text/plain; charset="UTF-8" Eli Zaretskii schrieb am Mo., 5. Juni 2017 um 17:34 Uhr: > > From: Philipp Stephani > > Date: Mon, 05 Jun 2017 13:56:57 +0000 > > Cc: Emacs Development > > > > * src/emacs-module.c (assert_main_thread, assert_runtime, assert_env) > > (assert_value): New functions to assert module requirements. > > I'd prefer to have these functions called module_assert_SOMETHING. > > Here's a new patch. It makes this change, and also changes the allocation slightly so that objects have unique addresses (useful for checking). --001a1136f5c8566b8a0551af7b57 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Eli Za= retskii <eliz@gnu.org> schrieb am= Mo., 5. Juni 2017 um 17:34=C2=A0Uhr:
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Mon, 05 Jun 2017 13:56:57 +0000
> Cc: Emacs Development <emacs-devel@gnu.org>
>
> * src/emacs-module.c (assert_main_thread, assert_runtime, assert_env)<= br> > (assert_value): New functions to assert module requirements.

I'd prefer to have these functions called module_assert_SOMETHING.


Here's a new patch. It makes this = change, and also changes the allocation slightly so that objects have uniqu= e addresses (useful for checking).=C2=A0
--001a1136f5c8566b8a0551af7b57-- --001a1136f5c8566b8f0551af7b59 Content-Type: text/plain; charset="UTF-8"; name="0001-Implement-module-assertions-for-users.txt" Content-Disposition: attachment; filename="0001-Implement-module-assertions-for-users.txt" Content-Transfer-Encoding: base64 Content-ID: <15c976b217d200f8f151> X-Attachment-Id: 15c976b217d200f8f151 RnJvbSA3MDYzNjk0MDUyNDgxYWJlZWIzYmI0MjZiYWU0ZTg4NTNlMDIzYWM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh dGU6IE1vbiwgNSBKdW4gMjAxNyAxMzoyOToxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxl bWVudCBtb2R1bGUgYXNzZXJ0aW9ucyBmb3IgdXNlcnMKCkFkZCBhIG5ldyBjb21tYW5kLWxpbmUg b3B0aW9uICctbW9kdWxlLWFzc2VydGlvbnMnIHRoYXQgdXNlcnMgY2FuCmVuYWJsZSBkZXZlbG9w aW5nIG9yIGRlYnVnZ2luZyBhIG1vZHVsZS4gIElmIHRoaXMgb3B0aW9uIGlzIHByZXNlbnQsCkVt YWNzIHBlcmZvcm1zIGFkZGl0aW9uYWwgY2hlY2tzIHRvIHZlcmlmeSB0aGF0IG1vZHVsZXMgZnVs ZmlsbCB0aGVpcgpyZXF1aXJlbWVudHMuICBUaGVzZSBjaGVja3MgYXJlIGV4cGVuc2l2ZSBhbmQg Y3Jhc2ggRW1hY3MgaWYgbW9kdWxlcwphcmUgaW52YWxpZCwgc28gZGlzYWJsZSB0aGVtIGJ5IGRl ZmF1bHQuCgpUaGlzIGlzIGEgY29tbWFuZC1saW5lIG9wdGlvbiBpbnN0ZWFkIG9mIGFuIG9yZGlu YXJ5IHZhcmlhYmxlIGJlY2F1c2UKY2hhbmdpbmcgaXQgd2hpbGUgRW1hY3MgaXMgcnVubmluZyB3 b3VsZCBjYXVzZSBkYXRhIHN0cnVjdHVyZQppbWJhbGFuY2VzLgoKKiBzcmMvZW1hY3MuYyAobWFp bik6IE5ldyBjb21tYW5kIGxpbmUgb3B0aW9uICctbW9kdWxlLWFzc2VydGlvbnMnLgoKKiBzcmMv ZW1hY3MtbW9kdWxlLmMgKG1vZHVsZV9hc3NlcnRfbWFpbl90aHJlYWQpCihtb2R1bGVfYXNzZXJ0 X3J1bnRpbWUsIG1vZHVsZV9hc3NlcnRfZW52LCBtb2R1bGVfYXNzZXJ0X3ZhbHVlKToKTmV3IGZ1 bmN0aW9ucyB0byBhc3NlcnQgbW9kdWxlIHJlcXVpcmVtZW50cy4KKHN5bXNfb2ZfbW9kdWxlKTog TmV3IHVuaW50ZXJuZWQgdmFyaWFibGUgJ21vZHVsZS1ydW50aW1lcycuCihpbml0X21vZHVsZV9h c3NlcnRpb25zLCBpbl9tYWluX3RocmVhZCk6IE5ldyBoZWxwZXIgZnVuY3Rpb25zLgooaW5pdGlh bGl6ZV9lbnZpcm9ubWVudCk6IEluaXRpYWxpemUgdmFsdWUgbGlzdC4gIElmIGFzc2VydGlvbnMg YXJlCmVuYWJsZWQsIHVzZSBhIGhlYXAtYWxsb2NhdGVkIGVudmlyb25tZW50IG9iamVjdC4KKGZp bmFsaXplX2Vudmlyb25tZW50KTogQWRkIGFzc2VydGlvbiB0aGF0IGVudmlyb25tZW50IGxpc3Qg aXMgbmV2ZXIKZW1wdHkuCihmaW5hbGl6ZV9ydW50aW1lX3Vud2luZCk6IFBvcCBtb2R1bGUgcnVu dGltZSBvYmplY3Qgc3RhY2suCih2YWx1ZV90b19saXNwKTogQXNzZXJ0IHRoYXQgdGhlIHZhbHVl IGlzIHZhbGlkLgoobGlzcF90b192YWx1ZSk6IFJlY29yZCBuZXcgdmFsdWUgaWYgYXNzZXJ0aW9u cyBhcmUgZW5hYmxlZC4KKG1hcmtfbW9kdWxlcyk6IE1hcmsgYWxsb2NhdGVkIG9iamVjdCBsaXN0 LgooTU9EVUxFX0ZVTkNUSU9OX0JFR0lOX05PX0NBVENIKQoobW9kdWxlX25vbl9sb2NhbF9leGl0 X2NoZWNrLCBtb2R1bGVfbm9uX2xvY2FsX2V4aXRfY2xlYXIpCihtb2R1bGVfbm9uX2xvY2FsX2V4 aXRfZ2V0LCBtb2R1bGVfbm9uX2xvY2FsX2V4aXRfc2lnbmFsKQoobW9kdWxlX25vbl9sb2NhbF9l eGl0X3Rocm93KTogQXNzZXJ0IHRocmVhZCBhbmQgZW52aXJvbm1lbnQuCihtb2R1bGVfZ2V0X2Vu dmlyb25tZW50KTogQXNzZXJ0IHRocmVhZCBhbmQgcnVudGltZS4KKG1vZHVsZV9tYWtlX2Z1bmN0 aW9uLCBtb2R1bGVfZnVuY2FsbCwgbW9kdWxlX2ludGVybikKKG1vZHVsZV9mdW5jYWxsLCBtb2R1 bGVfbWFrZV9pbnRlZ2VyLCBtb2R1bGVfbWFrZV9mbG9hdCkKKG1vZHVsZV9tYWtlX3N0cmluZywg bW9kdWxlX21ha2VfdXNlcl9wdHIsIG1vZHVsZV92ZWNfZ2V0KQooZnVuY2FsbF9tb2R1bGUsIEZt b2R1bGVfbG9hZCk6IEFkYXB0IGNhbGxlcnMuCihtb2R1bGVfbWFrZV9nbG9iYWxfcmVmKTogSWYg YXNzZXJ0aW9ucyBhcmUgZW5hYmxlZCwgdXNlIHRoZSBnbG9iYWwKZW52aXJvbm1lbnQgdG8gc3Rv cmUgZ2xvYmFsIHZhbHVlcy4KKG1vZHVsZV9mcmVlX2dsb2JhbF9yZWYpOiBSZW1vdmUgdmFsdWUg ZnJvbSBnbG9iYWwgdmFsdWUgbGlzdC4KCiogdGVzdC9NYWtlZmlsZS5pbiAoRU1BQ1NPUFQpOiBF bmFibGUgbW9kdWxlIGFzc2VydGlvbnMgd2hlbiB0ZXN0aW5nCm1vZHVsZXMuCgoqIHRlc3QvZGF0 YS9lbWFjcy1tb2R1bGUvbW9kLXRlc3QuYyAoRm1vZF90ZXN0X2ludmFsaWRfc3RvcmUpCihGbW9k X3Rlc3RfaW52YWxpZF9sb2FkKTogTmV3IGZ1bmN0aW9ucyB0byB0ZXN0IG1vZHVsZSBhc3NlcnRp b25zLgooZW1hY3NfbW9kdWxlX2luaXQpOiBCaW5kIHRoZSBuZXcgZnVuY3Rpb25zLgoKKiB0ZXN0 L3NyYy9lbWFjcy1tb2R1bGUtdGVzdHMuZWwgKG1vZC10ZXN0LWVtYWNzKTogTmV3IGNvbnN0YW50 IGZvcgp0aGUgRW1hY3MgYmluYXJ5IGZpbGUuCihtb2QtdGVzdC1maWxlKTogTmV3IGNvbnN0YW50 IGZvciB0aGUgdGVzdCBtb2R1bGUgZmlsZSBuYW1lLgoobW9kdWxlLS10ZXN0LWFzc2VydGlvbnMp OiBOZXcgdW5pdCB0ZXN0LgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvZW1hY3MtbW9kdWxlLmMgICAgICAgICAgICAgICAgfCAyNzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9lbWFjcy5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAgOCArKwogc3JjL2xpc3AuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHRlc3QvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICB8ICAgMiArLQogdGVzdC9kYXRh L2VtYWNzLW1vZHVsZS9tb2QtdGVzdC5jIHwgIDI0ICsrKysKIHRlc3Qvc3JjL2VtYWNzLW1vZHVs ZS10ZXN0cy5lbCAgICB8ICAzOSArKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgMzAzIGluc2VydGlv bnMoKyksIDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MK aW5kZXggNzk3MjUxMWY3YS4uZmVlZDYyYzFjYSAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIv ZXRjL05FV1MKQEAgLTg1LDYgKzg1LDEyIEBAIG1vZGVybiBpbml0IHN5c3RlbXMgc3VjaCBhcyBz eXN0ZW1kLCB3aGljaCBtYW5hZ2UgbWFueSBvZiB0aGUgdHJhZGl0aW9uYWwKIGFzcGVjdHMgb2Yg ZGFlbW9uIGJlaGF2aW9yIHRoZW1zZWx2ZXMuICAnLS1iZy1kYWVtb24nIGlzIG5vdyBhbiBhbGlh cwogZm9yICctLWRhZW1vbicuCiAKKyoqIE5ldyBvcHRpb24gJy0tbW9kdWxlLWFzc2VydGlvbnMn LiAgSWYgdGhlIHVzZXIgc3VwcGxpZXMgdGhpcworb3B0aW9uLCBFbWFjcyB3aWxsIHBlcmZvcm0g ZXhwZW5zaXZlIGNvcnJlY3RuZXNzIGNoZWNrcyB3aGVuIGRlYWxpbmcKK3dpdGggZHluYW1pYyBt b2R1bGVzLiAgVGhpcyBpcyBpbnRlbmRlZCBmb3IgbW9kdWxlIGF1dGhvcnMgdGhhdCB3aXNoCit0 byB2ZXJpZnkgdGhhdCB0aGVpciBtb2R1bGUgY29uZm9ybXMgdG8gdGhlIG1vZHVsZSByZXF1aXJl bWVudHMuICBUaGUKK29wdGlvbiBtYWtlcyBFbWFjcyBhYm9ydCBpZiBhIG1vZHVsZS1yZWxhdGVk IGFzc2VydGlvbiB0cmlnZ2Vycy4KKwogKysrCiAqKiBFbWFjcyBub3cgc3VwcG9ydHMgMjQtYml0 IGNvbG9ycyBvbiBjYXBhYmxlIHRleHQgdGVybWluYWxzCiBUZXJtaW5hbCBpcyBhdXRvbWF0aWNh bGx5IGluaXRpYWxpemVkIHRvIHVzZSAyNC1iaXQgY29sb3JzIGlmIHRoZQpkaWZmIC0tZ2l0IGEv c3JjL2VtYWNzLW1vZHVsZS5jIGIvc3JjL2VtYWNzLW1vZHVsZS5jCmluZGV4IGMwZjJjM2ZjZDAu LjZhYzZmODkyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9lbWFjcy1tb2R1bGUuYworKysgYi9zcmMvZW1h Y3MtbW9kdWxlLmMKQEAgLTM0LDYgKzM0LDE3IEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlIDxp bnRwcm9wcy5oPgogI2luY2x1ZGUgPHZlcmlmeS5oPgogCisvKiBXZSB1c2UgZGlmZmVyZW50IHN0 cmF0ZWdpZXMgZm9yIGFsbG9jYXRpbmcgdGhlIHVzZXItdmlzaWJsZSBvYmplY3RzCisgICAoc3Ry dWN0IGVtYWNzX3J1bnRpbWUsIGVtYWNzX2VudiwgZW1hY3NfdmFsdWUpLCBkZXBlbmRpbmcgb24K KyAgIHdoZXRoZXIgdGhlIHVzZXIgc3VwcGxpZWQgdGhlIC1tb2R1bGUtYXNzZXJ0aW9ucyBmbGFn LiAgSWYKKyAgIGFzc2VydGlvbnMgYXJlIGRpc2FibGVkLCBhbGwgb2JqZWN0cyBhcmUgYWxsb2Nh dGVkIGZyb20gdGhlIHN0YWNrLgorICAgSWYgYXNzZXJ0aW9ucyBhcmUgZW5hYmxlZCwgYWxsIG9i amVjdHMgYXJlIGFsbG9jYXRlZCBmcm9tIHRoZSBmcmVlCisgICBzdG9yZSwgYW5kIG9iamVjdHMg YXJlIG5ldmVyIGZyZWVkOyB0aGlzIGd1YXJhbnRlZXMgdGhhdCB0aGV5IGFsbAorICAgaGF2ZSBk aWZmZXJlbnQgYWRkcmVzc2VzLiAgV2UgdXNlIHRoYXQgZm9yIGNoZWNraW5nIHdoaWNoIG9iamVj dHMKKyAgIGFyZSBsaXZlLiAgV2l0aG91dCB1bmlxdWUgYWRkcmVzc2VzLCB3ZSBtaWdodCBjb25z aWRlciBzb21lIGRlYWQKKyAgIG9iamVjdHMgbGl2ZSBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyB3 b3VsZCBoYXZlIGJlZW4gcmV1c2VkIGluIHRoZQorICAgbWVhbnRpbWUuICAqLworCiAMCiAvKiBG ZWF0dXJlIHRlc3RzLiAgKi8KIApAQCAtNzcsMjUgKzg4LDMwIEBAIHN0cnVjdCBlbWFjc19lbnZf cHJpdmF0ZQogICAgICBzdG9yYWdlIGlzIGFsd2F5cyBhdmFpbGFibGUgZm9yIHRoZW0sIGV2ZW4g aW4gYW4gb3V0LW9mLW1lbW9yeQogICAgICBzaXR1YXRpb24uICAqLwogICBMaXNwX09iamVjdCBu b25fbG9jYWxfZXhpdF9zeW1ib2wsIG5vbl9sb2NhbF9leGl0X2RhdGE7CisKKyAgLyogTGlzdCBv ZiB2YWx1ZXMgYWxsb2NhdGVkIGZyb20gdGhpcyBlbnZpcm9ubWVudC4gIFRoZSBjb2RlIHVzZXMK KyAgICAgdGhpcyBvbmx5IGlmIHRoZSB1c2VyIGdhdmUgdGhlIC1tb2R1bGUtYXNzZXJ0aW9ucyBj b21tYW5kLWxpbmUKKyAgICAgb3B0aW9uLiAgKi8KKyAgTGlzcF9PYmplY3QgdmFsdWVzOwogfTsK IAogLyogVGhlIHByaXZhdGUgcGFydHMgb2YgYW4gYGVtYWNzX3J1bnRpbWUnIG9iamVjdCBjb250 YWluIHRoZSBpbml0aWFsCiAgICBlbnZpcm9ubWVudC4gICovCiBzdHJ1Y3QgZW1hY3NfcnVudGlt ZV9wcml2YXRlCiB7Ci0gIGVtYWNzX2VudiBwdWI7CisgIGVtYWNzX2VudiAqZW52OwogfTsKIAwK IAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMuICAqLwogCi1zdHJ1Y3QgbW9kdWxlX2Z1bl9lbnY7 Ci0KIHN0YXRpYyBMaXNwX09iamVjdCB2YWx1ZV90b19saXNwIChlbWFjc192YWx1ZSk7Ci1zdGF0 aWMgZW1hY3NfdmFsdWUgbGlzcF90b192YWx1ZSAoTGlzcF9PYmplY3QpOworc3RhdGljIGVtYWNz X3ZhbHVlIGxpc3BfdG9fdmFsdWUgKGVtYWNzX2VudiAqLCBMaXNwX09iamVjdCk7CiBzdGF0aWMg ZW51bSBlbWFjc19mdW5jYWxsX2V4aXQgbW9kdWxlX25vbl9sb2NhbF9leGl0X2NoZWNrIChlbWFj c19lbnYgKik7Ci1zdGF0aWMgdm9pZCBjaGVja19tYWluX3RocmVhZCAodm9pZCk7Ci1zdGF0aWMg dm9pZCBpbml0aWFsaXplX2Vudmlyb25tZW50IChlbWFjc19lbnYgKiwgc3RydWN0IGVtYWNzX2Vu dl9wcml2YXRlICopOworc3RhdGljIHZvaWQgbW9kdWxlX2Fzc2VydF9tYWluX3RocmVhZCAodm9p ZCk7CitzdGF0aWMgdm9pZCBtb2R1bGVfYXNzZXJ0X3J1bnRpbWUgKHN0cnVjdCBlbWFjc19ydW50 aW1lICopOworc3RhdGljIHZvaWQgbW9kdWxlX2Fzc2VydF9lbnYgKGVtYWNzX2VudiAqKTsKK3N0 YXRpYyBlbWFjc19lbnYgKmluaXRpYWxpemVfZW52aXJvbm1lbnQgKGVtYWNzX2VudiAqLCBzdHJ1 Y3QgZW1hY3NfZW52X3ByaXZhdGUgKik7CiBzdGF0aWMgdm9pZCBmaW5hbGl6ZV9lbnZpcm9ubWVu dCAoZW1hY3NfZW52ICopOwogc3RhdGljIHZvaWQgZmluYWxpemVfZW52aXJvbm1lbnRfdW53aW5k ICh2b2lkICopOwogc3RhdGljIHZvaWQgZmluYWxpemVfcnVudGltZV91bndpbmQgKHZvaWQgKik7 CkBAIC0xMTIsNiArMTI4LDEwIEBAIHN0YXRpYyB2b2lkIG1vZHVsZV9yZXNldF9oYW5kbGVybGlz dCAoc3RydWN0IGhhbmRsZXIgKmNvbnN0ICopOwogICAgY29kZSBzaG91bGQgbm90IGFzc3VtZSB0 aGlzLiAgKi8KIHZlcmlmeSAoTklMX0lTX1pFUk8pOwogc3RhdGljIGVtYWNzX3ZhbHVlIGNvbnN0 IG1vZHVsZV9uaWwgPSAwOworCitzdGF0aWMgYm9vbCBtb2R1bGVfYXNzZXJ0aW9ucyA9IGZhbHNl Oworc3RhdGljIGVtYWNzX2VudiAqZ2xvYmFsX2VudjsKK3N0YXRpYyBzdHJ1Y3QgZW1hY3NfZW52 X3ByaXZhdGUgZ2xvYmFsX2Vudl9wcml2YXRlOwogDAogLyogQ29udmVuaWVuY2UgbWFjcm9zIGZv ciBub24tbG9jYWwgZXhpdCBoYW5kbGluZy4gICovCiAKQEAgLTIxNSw3ICsyMzUsOCBAQCBzdGF0 aWMgZW1hY3NfdmFsdWUgY29uc3QgbW9kdWxlX25pbCA9IDA7CiAKICNkZWZpbmUgTU9EVUxFX0ZV TkNUSU9OX0JFR0lOX05PX0NBVENIKGVycm9yX3JldHZhbCkgICAgICAgICAgICAgICAgICAgIFwK ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICBjaGVja19tYWluX3RocmVhZCAoKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBtb2R1bGVfYXNzZXJ0X21h aW5fdGhyZWFkICgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICBtb2R1bGVfYXNzZXJ0X2VudiAoZW52KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICBpZiAobW9kdWxlX25vbl9sb2NhbF9leGl0X2NoZWNrIChlbnYp ICE9IGVtYWNzX2Z1bmNhbGxfZXhpdF9yZXR1cm4pIFwKICAgICAgIHJldHVybiBlcnJvcl9yZXR2 YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfSB3 aGlsZSAoZmFsc2UpCkBAIC0yNDEsOCArMjYyLDkgQEAgQ0hFQ0tfVVNFUl9QVFIgKExpc3BfT2Jq ZWN0IG9iaikKIHN0YXRpYyBlbWFjc19lbnYgKgogbW9kdWxlX2dldF9lbnZpcm9ubWVudCAoc3Ry dWN0IGVtYWNzX3J1bnRpbWUgKmVydCkKIHsKLSAgY2hlY2tfbWFpbl90aHJlYWQgKCk7Ci0gIHJl dHVybiAmZXJ0LT5wcml2YXRlX21lbWJlcnMtPnB1YjsKKyAgbW9kdWxlX2Fzc2VydF9tYWluX3Ro cmVhZCAoKTsKKyAgbW9kdWxlX2Fzc2VydF9ydW50aW1lIChlcnQpOworICByZXR1cm4gZXJ0LT5w cml2YXRlX21lbWJlcnMtPmVudjsKIH0KIAogLyogVG8gbWFrZSBnbG9iYWwgcmVmcyAoR0MtcHJv dGVjdGVkIGdsb2JhbCB2YWx1ZXMpIGtlZXAgYSBoYXNoIHRoYXQKQEAgLTI3MSw3ICsyOTMsNyBA QCBtb2R1bGVfbWFrZV9nbG9iYWxfcmVmIChlbWFjc19lbnYgKmVudiwgZW1hY3NfdmFsdWUgcmVm KQogICAgICAgaGFzaF9wdXQgKGgsIG5ld19vYmosIG1ha2VfbmF0bnVtICgxKSwgaGFzaGNvZGUp OwogICAgIH0KIAotICByZXR1cm4gbGlzcF90b192YWx1ZSAobmV3X29iaik7CisgIHJldHVybiBs aXNwX3RvX3ZhbHVlIChtb2R1bGVfYXNzZXJ0aW9ucyA/IGdsb2JhbF9lbnYgOiBlbnYsIG5ld19v YmopOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjk4LDMyICszMjAsNTUgQEAgbW9kdWxlX2ZyZWVf Z2xvYmFsX3JlZiAoZW1hY3NfZW52ICplbnYsIGVtYWNzX3ZhbHVlIHJlZikKICAgICAgIGVsc2UK IAloYXNoX3JlbW92ZV9mcm9tX3RhYmxlIChoLCB2YWx1ZSk7CiAgICAgfQorCisgIGlmIChtb2R1 bGVfYXNzZXJ0aW9ucykKKyAgICB7CisgICAgICBMaXNwX09iamVjdCBnbG9iYWxzID0gZ2xvYmFs X2Vudl9wcml2YXRlLnZhbHVlczsKKyAgICAgIExpc3BfT2JqZWN0IHByZXYgPSBRbmlsOworICAg ICAgRk9SX0VBQ0hfVEFJTF9TQUZFIChnbG9iYWxzKQorICAgICAgeworICAgICAgICBlbWFjc192 YWx1ZSBnbG9iYWwgPSBYU0FWRV9QT0lOVEVSIChYQ0FSIChnbG9iYWxzKSwgMCk7CisgICAgICAg IGlmIChnbG9iYWwgPT0gcmVmKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChOSUxQIChw cmV2KSkKKyAgICAgICAgICAgICAgZ2xvYmFsX2Vudl9wcml2YXRlLnZhbHVlcyA9IFhDRFIgKGds b2JhbHMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBYU0VUQ0RSIChwcmV2LCBY Q0RSIChnbG9iYWxzKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAg ICBwcmV2ID0gZ2xvYmFsczsKKyAgICAgIH0KKyAgICAgIGRpZSAoIkdsb2JhbCB2YWx1ZSB3YXMg bm90IGFsbG9jYXRlZCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgfQogfQogCiBzdGF0aWMg ZW51bSBlbWFjc19mdW5jYWxsX2V4aXQKIG1vZHVsZV9ub25fbG9jYWxfZXhpdF9jaGVjayAoZW1h Y3NfZW52ICplbnYpCiB7Ci0gIGNoZWNrX21haW5fdGhyZWFkICgpOworICBtb2R1bGVfYXNzZXJ0 X21haW5fdGhyZWFkICgpOworICBtb2R1bGVfYXNzZXJ0X2VudiAoZW52KTsKICAgcmV0dXJuIGVu di0+cHJpdmF0ZV9tZW1iZXJzLT5wZW5kaW5nX25vbl9sb2NhbF9leGl0OwogfQogCiBzdGF0aWMg dm9pZAogbW9kdWxlX25vbl9sb2NhbF9leGl0X2NsZWFyIChlbWFjc19lbnYgKmVudikKIHsKLSAg Y2hlY2tfbWFpbl90aHJlYWQgKCk7CisgIG1vZHVsZV9hc3NlcnRfbWFpbl90aHJlYWQgKCk7Cisg IG1vZHVsZV9hc3NlcnRfZW52IChlbnYpOwogICBlbnYtPnByaXZhdGVfbWVtYmVycy0+cGVuZGlu Z19ub25fbG9jYWxfZXhpdCA9IGVtYWNzX2Z1bmNhbGxfZXhpdF9yZXR1cm47CiB9CiAKIHN0YXRp YyBlbnVtIGVtYWNzX2Z1bmNhbGxfZXhpdAogbW9kdWxlX25vbl9sb2NhbF9leGl0X2dldCAoZW1h Y3NfZW52ICplbnYsIGVtYWNzX3ZhbHVlICpzeW0sIGVtYWNzX3ZhbHVlICpkYXRhKQogewotICBj aGVja19tYWluX3RocmVhZCAoKTsKKyAgbW9kdWxlX2Fzc2VydF9tYWluX3RocmVhZCAoKTsKKyAg bW9kdWxlX2Fzc2VydF9lbnYgKGVudik7CiAgIHN0cnVjdCBlbWFjc19lbnZfcHJpdmF0ZSAqcCA9 IGVudi0+cHJpdmF0ZV9tZW1iZXJzOwogICBpZiAocC0+cGVuZGluZ19ub25fbG9jYWxfZXhpdCAh PSBlbWFjc19mdW5jYWxsX2V4aXRfcmV0dXJuKQogICAgIHsKICAgICAgIC8qIEZJWE1FOiBsaXNw X3RvX3ZhbHVlIGNhbiBleGl0IG5vbi1sb2NhbGx5LiAgKi8KLSAgICAgICpzeW0gPSBsaXNwX3Rv X3ZhbHVlIChwLT5ub25fbG9jYWxfZXhpdF9zeW1ib2wpOwotICAgICAgKmRhdGEgPSBsaXNwX3Rv X3ZhbHVlIChwLT5ub25fbG9jYWxfZXhpdF9kYXRhKTsKKyAgICAgICpzeW0gPSBsaXNwX3RvX3Zh bHVlIChlbnYsIHAtPm5vbl9sb2NhbF9leGl0X3N5bWJvbCk7CisgICAgICAqZGF0YSA9IGxpc3Bf dG9fdmFsdWUgKGVudiwgcC0+bm9uX2xvY2FsX2V4aXRfZGF0YSk7CiAgICAgfQogICByZXR1cm4g cC0+cGVuZGluZ19ub25fbG9jYWxfZXhpdDsKIH0KQEAgLTMzMiw3ICszNzcsOCBAQCBtb2R1bGVf bm9uX2xvY2FsX2V4aXRfZ2V0IChlbWFjc19lbnYgKmVudiwgZW1hY3NfdmFsdWUgKnN5bSwgZW1h Y3NfdmFsdWUgKmRhdGEpCiBzdGF0aWMgdm9pZAogbW9kdWxlX25vbl9sb2NhbF9leGl0X3NpZ25h bCAoZW1hY3NfZW52ICplbnYsIGVtYWNzX3ZhbHVlIHN5bSwgZW1hY3NfdmFsdWUgZGF0YSkKIHsK LSAgY2hlY2tfbWFpbl90aHJlYWQgKCk7CisgIG1vZHVsZV9hc3NlcnRfbWFpbl90aHJlYWQgKCk7 CisgIG1vZHVsZV9hc3NlcnRfZW52IChlbnYpOwogICBpZiAobW9kdWxlX25vbl9sb2NhbF9leGl0 X2NoZWNrIChlbnYpID09IGVtYWNzX2Z1bmNhbGxfZXhpdF9yZXR1cm4pCiAgICAgbW9kdWxlX25v bl9sb2NhbF9leGl0X3NpZ25hbF8xIChlbnYsIHZhbHVlX3RvX2xpc3AgKHN5bSksCiAJCQkJICAg IHZhbHVlX3RvX2xpc3AgKGRhdGEpKTsKQEAgLTM0MSw3ICszODcsOCBAQCBtb2R1bGVfbm9uX2xv Y2FsX2V4aXRfc2lnbmFsIChlbWFjc19lbnYgKmVudiwgZW1hY3NfdmFsdWUgc3ltLCBlbWFjc192 YWx1ZSBkYXRhKQogc3RhdGljIHZvaWQKIG1vZHVsZV9ub25fbG9jYWxfZXhpdF90aHJvdyAoZW1h Y3NfZW52ICplbnYsIGVtYWNzX3ZhbHVlIHRhZywgZW1hY3NfdmFsdWUgdmFsdWUpCiB7Ci0gIGNo ZWNrX21haW5fdGhyZWFkICgpOworICBtb2R1bGVfYXNzZXJ0X21haW5fdGhyZWFkICgpOworICBt b2R1bGVfYXNzZXJ0X2VudiAoZW52KTsKICAgaWYgKG1vZHVsZV9ub25fbG9jYWxfZXhpdF9jaGVj ayAoZW52KSA9PSBlbWFjc19mdW5jYWxsX2V4aXRfcmV0dXJuKQogICAgIG1vZHVsZV9ub25fbG9j YWxfZXhpdF90aHJvd18xIChlbnYsIHZhbHVlX3RvX2xpc3AgKHRhZyksCiAJCQkJICAgdmFsdWVf dG9fbGlzcCAodmFsdWUpKTsKQEAgLTM4MSw3ICs0MjgsNyBAQCBtb2R1bGVfbWFrZV9mdW5jdGlv biAoZW1hY3NfZW52ICplbnYsIHB0cmRpZmZfdCBtaW5fYXJpdHksIHB0cmRpZmZfdCBtYXhfYXJp dHksCiAgIFhTRVRfTU9EVUxFX0ZVTkNUSU9OIChyZXN1bHQsIGZ1bmN0aW9uKTsKICAgZWFzc2Vy dCAoTU9EVUxFX0ZVTkNUSU9OUCAocmVzdWx0KSk7CiAKLSAgcmV0dXJuIGxpc3BfdG9fdmFsdWUg KHJlc3VsdCk7CisgIHJldHVybiBsaXNwX3RvX3ZhbHVlIChlbnYsIHJlc3VsdCk7CiB9CiAKIHN0 YXRpYyBlbWFjc192YWx1ZQpAQCAtNDAxLDcgKzQ0OCw3IEBAIG1vZHVsZV9mdW5jYWxsIChlbWFj c19lbnYgKmVudiwgZW1hY3NfdmFsdWUgZnVuLCBwdHJkaWZmX3QgbmFyZ3MsCiAgIG5ld2FyZ3Nb MF0gPSB2YWx1ZV90b19saXNwIChmdW4pOwogICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IG5h cmdzOyBpKyspCiAgICAgbmV3YXJnc1sxICsgaV0gPSB2YWx1ZV90b19saXNwIChhcmdzW2ldKTsK LSAgZW1hY3NfdmFsdWUgcmVzdWx0ID0gbGlzcF90b192YWx1ZSAoRmZ1bmNhbGwgKG5hcmdzMSwg bmV3YXJncykpOworICBlbWFjc192YWx1ZSByZXN1bHQgPSBsaXNwX3RvX3ZhbHVlIChlbnYsIEZm dW5jYWxsIChuYXJnczEsIG5ld2FyZ3MpKTsKICAgU0FGRV9GUkVFICgpOwogICByZXR1cm4gcmVz dWx0OwogfQpAQCAtNDEwLDE0ICs0NTcsMTQgQEAgc3RhdGljIGVtYWNzX3ZhbHVlCiBtb2R1bGVf aW50ZXJuIChlbWFjc19lbnYgKmVudiwgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgTU9EVUxFX0ZV TkNUSU9OX0JFR0lOIChtb2R1bGVfbmlsKTsKLSAgcmV0dXJuIGxpc3BfdG9fdmFsdWUgKGludGVy biAobmFtZSkpOworICByZXR1cm4gbGlzcF90b192YWx1ZSAoZW52LCBpbnRlcm4gKG5hbWUpKTsK IH0KIAogc3RhdGljIGVtYWNzX3ZhbHVlCiBtb2R1bGVfdHlwZV9vZiAoZW1hY3NfZW52ICplbnYs IGVtYWNzX3ZhbHVlIHZhbHVlKQogewogICBNT0RVTEVfRlVOQ1RJT05fQkVHSU4gKG1vZHVsZV9u aWwpOwotICByZXR1cm4gbGlzcF90b192YWx1ZSAoRnR5cGVfb2YgKHZhbHVlX3RvX2xpc3AgKHZh bHVlKSkpOworICByZXR1cm4gbGlzcF90b192YWx1ZSAoZW52LCBGdHlwZV9vZiAodmFsdWVfdG9f bGlzcCAodmFsdWUpKSk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC00NDksNyArNDk2LDcgQEAgbW9k dWxlX21ha2VfaW50ZWdlciAoZW1hY3NfZW52ICplbnYsIGludG1heF90IG4pCiAgIE1PRFVMRV9G VU5DVElPTl9CRUdJTiAobW9kdWxlX25pbCk7CiAgIGlmIChGSVhOVU1fT1ZFUkZMT1dfUCAobikp CiAgICAgeHNpZ25hbDAgKFFvdmVyZmxvd19lcnJvcik7Ci0gIHJldHVybiBsaXNwX3RvX3ZhbHVl IChtYWtlX251bWJlciAobikpOworICByZXR1cm4gbGlzcF90b192YWx1ZSAoZW52LCBtYWtlX251 bWJlciAobikpOwogfQogCiBzdGF0aWMgZG91YmxlCkBAIC00NjUsNyArNTEyLDcgQEAgc3RhdGlj IGVtYWNzX3ZhbHVlCiBtb2R1bGVfbWFrZV9mbG9hdCAoZW1hY3NfZW52ICplbnYsIGRvdWJsZSBk KQogewogICBNT0RVTEVfRlVOQ1RJT05fQkVHSU4gKG1vZHVsZV9uaWwpOwotICByZXR1cm4gbGlz cF90b192YWx1ZSAobWFrZV9mbG9hdCAoZCkpOworICByZXR1cm4gbGlzcF90b192YWx1ZSAoZW52 LCBtYWtlX2Zsb2F0IChkKSk7CiB9CiAKIHN0YXRpYyBib29sCkBAIC01MDcsMTQgKzU1NCwxNSBA QCBtb2R1bGVfbWFrZV9zdHJpbmcgKGVtYWNzX2VudiAqZW52LCBjb25zdCBjaGFyICpzdHIsIHB0 cmRpZmZfdCBsZW5ndGgpCiAgIGlmICghICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gU1RSSU5H X0JZVEVTX0JPVU5EKSkKICAgICB4c2lnbmFsMCAoUW92ZXJmbG93X2Vycm9yKTsKICAgQVVUT19T VFJJTkdfV0lUSF9MRU4gKGxzdHIsIHN0ciwgbGVuZ3RoKTsKLSAgcmV0dXJuIGxpc3BfdG9fdmFs dWUgKGNvZGVfY29udmVydF9zdHJpbmdfbm9yZWNvcmQgKGxzdHIsIFF1dGZfOCwgZmFsc2UpKTsK KyAgcmV0dXJuIGxpc3BfdG9fdmFsdWUgKGVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv ZGVfY29udmVydF9zdHJpbmdfbm9yZWNvcmQgKGxzdHIsIFF1dGZfOCwgZmFsc2UpKTsKIH0KIAog c3RhdGljIGVtYWNzX3ZhbHVlCiBtb2R1bGVfbWFrZV91c2VyX3B0ciAoZW1hY3NfZW52ICplbnYs IGVtYWNzX2ZpbmFsaXplcl9mdW5jdGlvbiBmaW4sIHZvaWQgKnB0cikKIHsKICAgTU9EVUxFX0ZV TkNUSU9OX0JFR0lOIChtb2R1bGVfbmlsKTsKLSAgcmV0dXJuIGxpc3BfdG9fdmFsdWUgKG1ha2Vf dXNlcl9wdHIgKGZpbiwgcHRyKSk7CisgIHJldHVybiBsaXNwX3RvX3ZhbHVlIChlbnYsIG1ha2Vf dXNlcl9wdHIgKGZpbiwgcHRyKSk7CiB9CiAKIHN0YXRpYyB2b2lkICoKQEAgLTU4MSw3ICs2Mjks NyBAQCBtb2R1bGVfdmVjX2dldCAoZW1hY3NfZW52ICplbnYsIGVtYWNzX3ZhbHVlIHZlYywgcHRy ZGlmZl90IGkpCiAgIE1PRFVMRV9GVU5DVElPTl9CRUdJTiAobW9kdWxlX25pbCk7CiAgIExpc3Bf T2JqZWN0IGx2ZWMgPSB2YWx1ZV90b19saXNwICh2ZWMpOwogICBjaGVja192ZWNfaW5kZXggKGx2 ZWMsIGkpOwotICByZXR1cm4gbGlzcF90b192YWx1ZSAoQVJFRiAobHZlYywgaSkpOworICByZXR1 cm4gbGlzcF90b192YWx1ZSAoZW52LCBBUkVGIChsdmVjLCBpKSk7CiB9CiAKIHN0YXRpYyBwdHJk aWZmX3QKQEAgLTY0MywxOSArNjkxLDI3IEBAIERFRlVOICgibW9kdWxlLWxvYWQiLCBGbW9kdWxl X2xvYWQsIFNtb2R1bGVfbG9hZCwgMSwgMSwgMCwKICAgaWYgKCFtb2R1bGVfaW5pdCkKICAgICB4 c2lnbmFsMSAoUW1pc3NpbmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIGZpbGUpOwogCi0gIHN0cnVj dCBlbWFjc19ydW50aW1lX3ByaXZhdGUgcnQ7IC8qIEluY2x1ZGVzIHRoZSBwdWJsaWMgZW1hY3Nf ZW52LiAgKi8KLSAgc3RydWN0IGVtYWNzX2Vudl9wcml2YXRlIHByaXY7Ci0gIGluaXRpYWxpemVf ZW52aXJvbm1lbnQgKCZydC5wdWIsICZwcml2KTsKLSAgc3RydWN0IGVtYWNzX3J1bnRpbWUgcHVi ID0KLSAgICB7Ci0gICAgICAuc2l6ZSA9IHNpemVvZiBwdWIsCi0gICAgICAucHJpdmF0ZV9tZW1i ZXJzID0gJnJ0LAotICAgICAgLmdldF9lbnZpcm9ubWVudCA9IG1vZHVsZV9nZXRfZW52aXJvbm1l bnQKLSAgICB9OworICBzdHJ1Y3QgZW1hY3NfcnVudGltZSBydF9wdWI7CisgIHN0cnVjdCBlbWFj c19ydW50aW1lX3ByaXZhdGUgcnRfcHJpdjsKKyAgZW1hY3NfZW52IGVudl9wdWI7CisgIHN0cnVj dCBlbWFjc19lbnZfcHJpdmF0ZSBlbnZfcHJpdjsKKyAgcnRfcHJpdi5lbnYgPSBpbml0aWFsaXpl X2Vudmlyb25tZW50ICgmZW52X3B1YiwgJmVudl9wcml2KTsKKworICAvKiBJZiB3ZSBzaG91bGQg dXNlIG1vZHVsZSBhc3NlcnRpb25zLCByZWFsbG9jYXRlIHRoZSBydW50aW1lIG9iamVjdAorICAg ICBmcm9tIHRoZSBmcmVlIHN0b3JlLCBidXQgbmV2ZXIgZnJlZSBpdC4gIFRoYXQgd2F5IHRoZSBh ZGRyZXNzZXMKKyAgICAgZm9yIHR3byBkaWZmZXJlbnQgcnVudGltZSBvYmplY3RzIGFyZSBndWFy YW50ZWVkIHRvIGJlIGRpc3RpbmN0LAorICAgICB3aGljaCB3ZSBjYW4gdXNlIGZvciBjaGVja2lu ZyB0aGUgbGl2ZW5lc3Mgb2YgcnVudGltZQorICAgICBwb2ludGVycy4gICovCisgIHN0cnVjdCBl bWFjc19ydW50aW1lICpydCA9IG1vZHVsZV9hc3NlcnRpb25zID8geG1hbGxvYyAoc2l6ZW9mICpy dCkgOiAmcnRfcHViOworICBydC0+c2l6ZSA9IHNpemVvZiAqcnQ7CisgIHJ0LT5wcml2YXRlX21l bWJlcnMgPSAmcnRfcHJpdjsKKyAgcnQtPmdldF9lbnZpcm9ubWVudCA9IG1vZHVsZV9nZXRfZW52 aXJvbm1lbnQ7CisKKyAgVm1vZHVsZV9ydW50aW1lcyA9IEZjb25zIChtYWtlX3NhdmVfcHRyIChy dCksIFZtb2R1bGVfcnVudGltZXMpOwogICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVY ICgpOwotICByZWNvcmRfdW53aW5kX3Byb3RlY3RfcHRyIChmaW5hbGl6ZV9ydW50aW1lX3Vud2lu ZCwgJnB1Yik7CisgIHJlY29yZF91bndpbmRfcHJvdGVjdF9wdHIgKGZpbmFsaXplX3J1bnRpbWVf dW53aW5kLCBydCk7CiAKLSAgaW50IHIgPSBtb2R1bGVfaW5pdCAoJnB1Yik7CisgIGludCByID0g bW9kdWxlX2luaXQgKHJ0KTsKIAogICAvKiBQcm9jZXNzIHRoZSBxdWl0IGZsYWcgZmlyc3QsIHNv IHRoYXQgcXVpdHRpbmcgZG9lc24ndCBnZXQKICAgICAgb3ZlcnJpZGRlbiBieSBvdGhlciBub24t bG9jYWwgZXhpdHMuICAqLwpAQCAtNjgzLDI1ICs3MzksMjUgQEAgZnVuY2FsbF9tb2R1bGUgKExp c3BfT2JqZWN0IGZ1bmN0aW9uLCBwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdsaXN0 KQogCiAgIGVtYWNzX2VudiBwdWI7CiAgIHN0cnVjdCBlbWFjc19lbnZfcHJpdmF0ZSBwcml2Owot ICBpbml0aWFsaXplX2Vudmlyb25tZW50ICgmcHViLCAmcHJpdik7CisgIGVtYWNzX2VudiAqZW52 ID0gaW5pdGlhbGl6ZV9lbnZpcm9ubWVudCAoJnB1YiwgJnByaXYpOwogICBwdHJkaWZmX3QgY291 bnQgPSBTUEVDUERMX0lOREVYICgpOwotICByZWNvcmRfdW53aW5kX3Byb3RlY3RfcHRyIChmaW5h bGl6ZV9lbnZpcm9ubWVudF91bndpbmQsICZwdWIpOworICByZWNvcmRfdW53aW5kX3Byb3RlY3Rf cHRyIChmaW5hbGl6ZV9lbnZpcm9ubWVudF91bndpbmQsIGVudik7CiAKICAgVVNFX1NBRkVfQUxM T0NBOwogICBBVFRSSUJVVEVfTUFZX0FMSUFTIGVtYWNzX3ZhbHVlICphcmdzOwotICBpZiAocGxh aW5fdmFsdWVzKQorICBpZiAocGxhaW5fdmFsdWVzICYmICEgbW9kdWxlX2Fzc2VydGlvbnMpCiAg ICAgYXJncyA9IChlbWFjc192YWx1ZSAqKSBhcmdsaXN0OwogICBlbHNlCiAgICAgewogICAgICAg YXJncyA9IFNBRkVfQUxMT0NBIChuYXJncyAqIHNpemVvZiAqYXJncyk7CiAgICAgICBmb3IgKHB0 cmRpZmZfdCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCi0JYXJnc1tpXSA9IGxpc3BfdG9fdmFsdWUg KGFyZ2xpc3RbaV0pOworCWFyZ3NbaV0gPSBsaXNwX3RvX3ZhbHVlIChlbnYsIGFyZ2xpc3RbaV0p OwogICAgIH0KIAotICBlbWFjc192YWx1ZSByZXQgPSBmdW5jLT5zdWJyICgmcHViLCBuYXJncywg YXJncywgZnVuYy0+ZGF0YSk7CisgIGVtYWNzX3ZhbHVlIHJldCA9IGZ1bmMtPnN1YnIgKGVudiwg bmFyZ3MsIGFyZ3MsIGZ1bmMtPmRhdGEpOwogICBTQUZFX0ZSRUUgKCk7CiAKLSAgZWFzc2VydCAo JnByaXYgPT0gcHViLnByaXZhdGVfbWVtYmVycyk7CisgIGVhc3NlcnQgKCZwcml2ID09IGVudi0+ cHJpdmF0ZV9tZW1iZXJzKTsKIAogICAvKiBQcm9jZXNzIHRoZSBxdWl0IGZsYWcgZmlyc3QsIHNv IHRoYXQgcXVpdHRpbmcgZG9lc24ndCBnZXQKICAgICAgb3ZlcnJpZGRlbiBieSBvdGhlciBub24t bG9jYWwgZXhpdHMuICAqLwpAQCAtNzIzLDE3ICs3NzksNTMgQEAgbW9kdWxlX2Z1bmN0aW9uX2Fy aXR5IChjb25zdCBzdHJ1Y3QgTGlzcF9Nb2R1bGVfRnVuY3Rpb24gKmNvbnN0IGZ1bmN0aW9uKQog DAogLyogSGVscGVyIGZ1bmN0aW9ucy4gICovCiAKLXN0YXRpYyB2b2lkCi1jaGVja19tYWluX3Ro cmVhZCAodm9pZCkKK3N0YXRpYyBib29sCitpbl9tYWluX3RocmVhZCAodm9pZCkKIHsKICNpZmRl ZiBIQVZFX1BUSFJFQUQKLSAgZWFzc2VydCAocHRocmVhZF9lcXVhbCAocHRocmVhZF9zZWxmICgp LCBtYWluX3RocmVhZF9pZCkpOworICByZXR1cm4gcHRocmVhZF9lcXVhbCAocHRocmVhZF9zZWxm ICgpLCBtYWluX3RocmVhZF9pZCk7CiAjZWxpZiBkZWZpbmVkIFdJTkRPV1NOVAotICBlYXNzZXJ0 IChHZXRDdXJyZW50VGhyZWFkSWQgKCkgPT0gZHdNYWluVGhyZWFkSWQpOworICByZXR1cm4gR2V0 Q3VycmVudFRocmVhZElkICgpID09IGR3TWFpblRocmVhZElkOwogI2VuZGlmCiB9CiAKIHN0YXRp YyB2b2lkCittb2R1bGVfYXNzZXJ0X21haW5fdGhyZWFkICh2b2lkKQoreworICBpZiAoISBtb2R1 bGVfYXNzZXJ0aW9ucyB8fCBpbl9tYWluX3RocmVhZCAoKSkKKyAgICByZXR1cm47CisgIGRpZSAo Ik1vZHVsZSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBtYWluIHRocmVhZCIsCisg ICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKK30KKworc3RhdGljIHZvaWQKK21vZHVsZV9hc3Nl cnRfcnVudGltZSAoc3RydWN0IGVtYWNzX3J1bnRpbWUgKmVydCkKK3sKKyAgaWYgKCEgbW9kdWxl X2Fzc2VydGlvbnMpCisgICAgcmV0dXJuOworICBMaXNwX09iamVjdCB0YWlsID0gVm1vZHVsZV9y dW50aW1lczsKKyAgRk9SX0VBQ0hfVEFJTF9TQUZFICh0YWlsKQorICB7CisgICAgaWYgKFhTQVZF X1BPSU5URVIgKFhDQVIgKHRhaWwpLCAwKSA9PSBlcnQpCisgICAgICByZXR1cm47CisgIH0KKyAg ZGllICgiSW52YWxpZCBydW50aW1lIHBvaW50ZXIgcGFzc2VkIHRvIG1vZHVsZSBmdW5jdGlvbiIs IF9fRklMRV9fLCBfX0xJTkVfXyk7Cit9CisKK3N0YXRpYyB2b2lkCittb2R1bGVfYXNzZXJ0X2Vu diAoZW1hY3NfZW52ICplbnYpCit7CisgIGlmICghIG1vZHVsZV9hc3NlcnRpb25zKQorICAgIHJl dHVybjsKKyAgTGlzcF9PYmplY3QgdGFpbCA9IFZtb2R1bGVfZW52aXJvbm1lbnRzOworICBGT1Jf RUFDSF9UQUlMX1NBRkUgKHRhaWwpCisgICAgaWYgKFhTQVZFX1BPSU5URVIgKFhDQVIgKHRhaWwp LCAwKSA9PSBlbnYpCisgICAgICByZXR1cm47CisgIGRpZSAoIkludmFsaWQgZW52aXJvbm1lbnQg cG9pbnRlciBwYXNzZWQgdG8gbW9kdWxlIGZ1bmN0aW9uIiwKKyAgICAgICBfX0ZJTEVfXywgX19M SU5FX18pOworfQorCitzdGF0aWMgdm9pZAogbW9kdWxlX25vbl9sb2NhbF9leGl0X3NpZ25hbF8x IChlbWFjc19lbnYgKmVudiwgTGlzcF9PYmplY3Qgc3ltLAogCQkJCUxpc3BfT2JqZWN0IGRhdGEp CiB7CkBAIC03NzIsNiArODY0LDE0IEBAIG1vZHVsZV9vdXRfb2ZfbWVtb3J5IChlbWFjc19lbnYg KmVudikKIAwKIC8qIFZhbHVlIGNvbnZlcnNpb24uICAqLwogCisvKiBXZSByZXByZXNlbnQgTGlz cCBvYmplY3RzIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyCisgICBn YXZlIC1tb2R1bGUtYXNzZXJ0aW9ucy4gIElmIGFzc2VydGlvbnMgYXJlIGRpc2FibGVkLCBlbWFj c192YWx1ZQorICAgb2JqZWN0cyBhcmUgTGlzcF9PYmplY3RzIGNhc3QgdG8gZW1hY3NfdmFsdWUu ICBJZiBhc3NlcnRpb25zIGFyZQorICAgZW5hYmxlZCwgZW1hY3NfdmFsdWUgb2JqZWN0cyBhcmUg cG9pbnRlcnMgdG8gTGlzcF9PYmplY3Qgb2JqZWN0cworICAgYWxsb2NhdGVkIGZyb20gdGhlIGZy ZWUgc3RvcmU7IHRoZXkgYXJlIG5ldmVyIGZyZWVkLCB3aGljaCBlbnN1cmVzCisgICB0aGF0IHRo ZWlyIGFkZHJlc3NlcyBhcmUgdW5pcXVlIGFuZCBjYW4gYmUgdXNlZCBmb3IgbGl2ZW5lc3MKKyAg IGNoZWNraW5nLiAgKi8KKwogLyogVW5pcXVlIExpc3BfT2JqZWN0IHVzZWQgdG8gbWFyayB0aG9z ZSBlbWFjc192YWx1ZXMgd2hpY2ggYXJlIHJlYWxseQogICAganVzdCBjb250YWluZXJzIGhvbGRp bmcgYSBMaXNwX09iamVjdCB0aGF0IGRvZXMgbm90IGZpdCBhcyBhbiBlbWFjc192YWx1ZSwKICAg IGVpdGhlciBiZWNhdXNlIGl0IGlzIGFuIGludGVnZXIgb3V0IG9mIHJhbmdlLCBvciBpcyBub3Qg cHJvcGVybHkgYWxpZ25lZC4KQEAgLTgxOCw2ICs5MTgsMjcgQEAgdmFsdWVfdG9fbGlzcF9iaXRz IChlbWFjc192YWx1ZSB2KQogc3RhdGljIExpc3BfT2JqZWN0CiB2YWx1ZV90b19saXNwIChlbWFj c192YWx1ZSB2KQogeworICBpZiAobW9kdWxlX2Fzc2VydGlvbnMpCisgICAgeworICAgICAgLyog Q2hlY2sgdGhlIGxpdmVuZXNzIG9mIHRoZSB2YWx1ZSBieSBpdGVyYXRpbmcgb3ZlciBhbGwgbGl2 ZQorICAgICAgICAgZW52aXJvbm1lbnRzLiAgKi8KKyAgICAgIHZvaWQgKnZwdHIgPSB2OworICAg ICAgQVRUUklCVVRFX01BWV9BTElBUyBMaXNwX09iamVjdCAqb3B0ciA9IHZwdHI7CisgICAgICBM aXNwX09iamVjdCBlbnZpcm9ubWVudHMgPSBWbW9kdWxlX2Vudmlyb25tZW50czsKKyAgICAgIEZP Ul9FQUNIX1RBSUxfU0FGRSAoZW52aXJvbm1lbnRzKQorICAgICAgeworICAgICAgICBlbWFjc19l bnYgKmVudiA9IFhTQVZFX1BPSU5URVIgKFhDQVIgKGVudmlyb25tZW50cyksIDApOworICAgICAg ICBMaXNwX09iamVjdCB2YWx1ZXMgPSBlbnYtPnByaXZhdGVfbWVtYmVycy0+dmFsdWVzOworICAg ICAgICBGT1JfRUFDSF9UQUlMX1NBRkUgKHZhbHVlcykKKyAgICAgICAgeworICAgICAgICAgIExp c3BfT2JqZWN0ICpwID0gWFNBVkVfUE9JTlRFUiAoWENBUiAodmFsdWVzKSwgMCk7CisgICAgICAg ICAgaWYgKHAgPT0gb3B0cikKKyAgICAgICAgICAgIHJldHVybiAqcDsKKyAgICAgICAgfQorICAg ICAgfQorICAgICAgZGllICgiRW1hY3MgdmFsdWUgaXMgbm90IGxpdmUiLCBfX0ZJTEVfXywgX19M SU5FX18pOworICAgIH0KKwogICBMaXNwX09iamVjdCBvID0gdmFsdWVfdG9fbGlzcF9iaXRzICh2 KTsKICAgaWYgKCEgcGxhaW5fdmFsdWVzICYmIENPTlNQIChvKSAmJiBFUSAoWENEUiAobyksIGx0 dl9tYXJrKSkKICAgICBvID0gWENBUiAobyk7CkBAIC04NDYsOCArOTY3LDIzIEBAIGVudW0geyBI QVZFX1NUUlVDVF9BVFRSSUJVVEVfQUxJR05FRCA9IDAgfTsKIC8qIENvbnZlcnQgTyB0byBhbiBl bWFjc192YWx1ZS4gIEFsbG9jYXRlIHN0b3JhZ2UgaWYgbmVlZGVkOyB0aGlzIGNhbgogICAgc2ln bmFsIGlmIG1lbW9yeSBpcyBleGhhdXN0ZWQuICBNdXN0IGJlIGFuIGluamVjdGl2ZSBmdW5jdGlv bi4gICovCiBzdGF0aWMgZW1hY3NfdmFsdWUKLWxpc3BfdG9fdmFsdWUgKExpc3BfT2JqZWN0IG8p CitsaXNwX3RvX3ZhbHVlIChlbWFjc19lbnYgKmVudiwgTGlzcF9PYmplY3QgbykKIHsKKyAgaWYg KG1vZHVsZV9hc3NlcnRpb25zKQorICAgIHsKKyAgICAgIC8qIEFkZCB0aGUgbmV3IHZhbHVlIHRv IHRoZSBsaXN0IG9mIHZhbHVlcyBhbGxvY2F0ZWQgZnJvbSB0aGlzCisgICAgICAgICBlbnZpcm9u bWVudC4gIFRoZSB2YWx1ZSBpcyBhY3R1YWxseSBhIHBvaW50ZXIgdG8gdGhlCisgICAgICAgICBM aXNwX09iamVjdCBjYXN0IHRvIGVtYWNzX3ZhbHVlLiAgV2UgbWFrZSBhIGNvcHkgb2YgdGhlCisg ICAgICAgICBvYmplY3Qgb24gdGhlIGZyZWUgc3RvcmUgdG8gZ3VhcmFudGVlIHVuaXF1ZSBhZGRy ZXNzZXMuICAqLworICAgICAgQVRUUklCVVRFX01BWV9BTElBUyBMaXNwX09iamVjdCAqb3B0ciA9 IHhtYWxsb2MgKHNpemVvZiBvKTsKKyAgICAgICpvcHRyID0gbzsKKyAgICAgIHZvaWQgKnZwdHIg PSBvcHRyOworICAgICAgQVRUUklCVVRFX01BWV9BTElBUyBlbWFjc192YWx1ZSByZXQgPSB2cHRy OworICAgICAgc3RydWN0IGVtYWNzX2Vudl9wcml2YXRlICpwcml2ID0gZW52LT5wcml2YXRlX21l bWJlcnM7CisgICAgICBwcml2LT52YWx1ZXMgPSBGY29ucyAobWFrZV9zYXZlX3B0ciAocmV0KSwg cHJpdi0+dmFsdWVzKTsKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCiAgIGVtYWNzX3ZhbHVl IHYgPSBsaXNwX3RvX3ZhbHVlX2JpdHMgKG8pOwogCiAgIGlmICghIEVRIChvLCB2YWx1ZV90b19s aXNwX2JpdHMgKHYpKSkKQEAgLTg3OCwxMiArMTAxNCwyMCBAQCBsaXNwX3RvX3ZhbHVlIChMaXNw X09iamVjdCBvKQogDAogLyogRW52aXJvbm1lbnQgbGlmZXRpbWUgbWFuYWdlbWVudC4gICovCiAK LS8qIE11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZW52aXJvbm1lbnQgY2FuIGJlIHVzZWQuICAq Lwotc3RhdGljIHZvaWQKKy8qIE11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZW52aXJvbm1lbnQg Y2FuIGJlIHVzZWQuICBSZXR1cm5zIGFub3RoZXIKKyAgIHBvaW50ZXIgdGhhdCBjYWxsZXJzIHNo b3VsZCB1c2UgaW5zdGVhZCBvZiB0aGUgRU5WIGFyZ3VtZW50LiAgSWYKKyAgIG1vZHVsZSBhc3Nl cnRpb25zIGFyZSBkaXNhYmxlZCwgdGhlIHJldHVybiB2YWx1ZSBpcyBFTlYuICBJZiBtb2R1bGUK KyAgIGFzc2VydGlvbnMgYXJlIGVuYWJsZWQsIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRzIHRvIGEg aGVhcC1hbGxvY2F0ZWQKKyAgIG9iamVjdC4gIFRoYXQgb2JqZWN0IGlzIG5ldmVyIGZyZWVkIHRv IGd1YXJhbnRlZSB1bmlxdWUKKyAgIGFkZHJlc3Nlcy4gICovCitzdGF0aWMgZW1hY3NfZW52ICoK IGluaXRpYWxpemVfZW52aXJvbm1lbnQgKGVtYWNzX2VudiAqZW52LCBzdHJ1Y3QgZW1hY3NfZW52 X3ByaXZhdGUgKnByaXYpCiB7CisgIGlmIChtb2R1bGVfYXNzZXJ0aW9ucykKKyAgICAgIGVudiA9 IHhtYWxsb2MgKHNpemVvZiAqZW52KTsKKwogICBwcml2LT5wZW5kaW5nX25vbl9sb2NhbF9leGl0 ID0gZW1hY3NfZnVuY2FsbF9leGl0X3JldHVybjsKLSAgcHJpdi0+bm9uX2xvY2FsX2V4aXRfc3lt Ym9sID0gcHJpdi0+bm9uX2xvY2FsX2V4aXRfZGF0YSA9IFFuaWw7CisgIHByaXYtPnZhbHVlcyA9 IHByaXYtPm5vbl9sb2NhbF9leGl0X3N5bWJvbCA9IHByaXYtPm5vbl9sb2NhbF9leGl0X2RhdGEg PSBRbmlsOwogICBlbnYtPnNpemUgPSBzaXplb2YgKmVudjsKICAgZW52LT5wcml2YXRlX21lbWJl cnMgPSBwcml2OwogICBlbnYtPm1ha2VfZ2xvYmFsX3JlZiA9IG1vZHVsZV9tYWtlX2dsb2JhbF9y ZWY7CkBAIC05MTUsNiArMTA1OSw3IEBAIGluaXRpYWxpemVfZW52aXJvbm1lbnQgKGVtYWNzX2Vu diAqZW52LCBzdHJ1Y3QgZW1hY3NfZW52X3ByaXZhdGUgKnByaXYpCiAgIGVudi0+dmVjX3NpemUg PSBtb2R1bGVfdmVjX3NpemU7CiAgIGVudi0+c2hvdWxkX3F1aXQgPSBtb2R1bGVfc2hvdWxkX3F1 aXQ7CiAgIFZtb2R1bGVfZW52aXJvbm1lbnRzID0gRmNvbnMgKG1ha2Vfc2F2ZV9wdHIgKGVudiks IFZtb2R1bGVfZW52aXJvbm1lbnRzKTsKKyAgcmV0dXJuIGVudjsKIH0KIAogLyogTXVzdCBiZSBj YWxsZWQgYmVmb3JlIHRoZSBsaWZldGltZSBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0CkBAIC05 MjQsNiArMTA2OSw5IEBAIGZpbmFsaXplX2Vudmlyb25tZW50IChlbWFjc19lbnYgKmVudikKIHsK ICAgZWFzc2VydCAoWFNBVkVfUE9JTlRFUiAoWENBUiAoVm1vZHVsZV9lbnZpcm9ubWVudHMpLCAw KSA9PSBlbnYpOwogICBWbW9kdWxlX2Vudmlyb25tZW50cyA9IFhDRFIgKFZtb2R1bGVfZW52aXJv bm1lbnRzKTsKKyAgaWYgKG1vZHVsZV9hc3NlcnRpb25zKQorICAgIC8qIFRoZXJlIGlzIGFsd2F5 cyBhdCBsZWFzdCB0aGUgZ2xvYmFsIGVudmlyb25tZW50LiAgKi8KKyAgICBlYXNzZXJ0IChDT05T UCAoVm1vZHVsZV9lbnZpcm9ubWVudHMpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTkzNiw3ICsx MDg0LDkgQEAgc3RhdGljIHZvaWQKIGZpbmFsaXplX3J1bnRpbWVfdW53aW5kICh2b2lkKiByYXdf ZXJ0KQogewogICBzdHJ1Y3QgZW1hY3NfcnVudGltZSAqZXJ0ID0gcmF3X2VydDsKLSAgZmluYWxp emVfZW52aXJvbm1lbnQgKCZlcnQtPnByaXZhdGVfbWVtYmVycy0+cHViKTsKKyAgZWFzc2VydCAo WFNBVkVfUE9JTlRFUiAoWENBUiAoVm1vZHVsZV9ydW50aW1lcyksIDApID09IGVydCk7CisgIFZt b2R1bGVfcnVudGltZXMgPSBYQ0RSIChWbW9kdWxlX3J1bnRpbWVzKTsKKyAgZmluYWxpemVfZW52 aXJvbm1lbnQgKGVydC0+cHJpdmF0ZV9tZW1iZXJzLT5lbnYpOwogfQogCiB2b2lkCkBAIC05NDks NiArMTA5OSw3IEBAIG1hcmtfbW9kdWxlcyAodm9pZCkKICAgICBzdHJ1Y3QgZW1hY3NfZW52X3By aXZhdGUgKnByaXYgPSBlbnYtPnByaXZhdGVfbWVtYmVyczsKICAgICBtYXJrX29iamVjdCAocHJp di0+bm9uX2xvY2FsX2V4aXRfc3ltYm9sKTsKICAgICBtYXJrX29iamVjdCAocHJpdi0+bm9uX2xv Y2FsX2V4aXRfZGF0YSk7CisgICAgbWFya19vYmplY3QgKHByaXYtPnZhbHVlcyk7CiAgIH0KIH0K IApAQCAtOTg0LDYgKzExMzUsMjIgQEAgbW9kdWxlX2hhbmRsZV90aHJvdyAoZW1hY3NfZW52ICpl bnYsIExpc3BfT2JqZWN0IHRhZ192YWwpCiB9CiAKIAwKKy8qIFN1cHBvcnQgZm9yIGFzc2VydGlv bnMuICAqLwordm9pZAoraW5pdF9tb2R1bGVfYXNzZXJ0aW9ucyAoYm9vbCBlbmFibGUpCit7Cisg IG1vZHVsZV9hc3NlcnRpb25zID0gZW5hYmxlOworICBpZiAoZW5hYmxlKQorICAgIHsKKyAgICAg IC8qIFdlIHVzZSBhIGhpZGRlbiBlbnZpcm9ubWVudCBmb3Igc3RvcmluZyB0aGUgZ2xvYmFscy4g IFRoaXMKKyAgICAgICAgIGVudmlyb25tZW50IGlzIG5ldmVyIGZyZWVkLiAgKi8KKyAgICAgIGVt YWNzX2VudiBlbnY7CisgICAgICBnbG9iYWxfZW52ID0gaW5pdGlhbGl6ZV9lbnZpcm9ubWVudCAo JmVudiwgJmdsb2JhbF9lbnZfcHJpdmF0ZSk7CisgICAgICBlYXNzZXJ0IChnbG9iYWxfZW52ICE9 ICZlbnYpOworICAgIH0KK30KKworDAogLyogU2VnbWVudCBpbml0aWFsaXplci4gICovCiAKIHZv aWQKQEAgLTEwMDMsNiArMTE3MCwxNCBAQCBzeW1zX29mX21vZHVsZSAodm9pZCkKIAkJICAgICAg IFFuaWwsIGZhbHNlKTsKICAgRnVuaW50ZXJuIChRbW9kdWxlX3JlZnNfaGFzaCwgUW5pbCk7CiAK KyAgREVGU1lNIChRbW9kdWxlX3J1bnRpbWVzLCAibW9kdWxlLXJ1bnRpbWVzIik7CisgIERFRlZB Ul9MSVNQICgibW9kdWxlLXJ1bnRpbWVzIiwgVm1vZHVsZV9ydW50aW1lcywKKyAgICAgICAgICAg ICAgIGRvYzogLyogTGlzdCBvZiBhY3RpdmUgbW9kdWxlIHJ1bnRpbWVzLiAgKi8pOworICBWbW9k dWxlX3J1bnRpbWVzID0gUW5pbDsKKyAgLyogVW5pbnRlcm4gYG1vZHVsZS1ydW50aW1lcycgYmVj YXVzZSBpdCBpcyBvbmx5IHVzZWQKKyAgICAgaW50ZXJuYWxseS4gICovCisgIEZ1bmludGVybiAo UW1vZHVsZV9ydW50aW1lcywgUW5pbCk7CisKICAgREVGU1lNIChRbW9kdWxlX2Vudmlyb25tZW50 cywgIm1vZHVsZS1lbnZpcm9ubWVudHMiKTsKICAgREVGVkFSX0xJU1AgKCJtb2R1bGUtZW52aXJv bm1lbnRzIiwgVm1vZHVsZV9lbnZpcm9ubWVudHMsCiAgICAgICAgICAgICAgICBkb2M6IC8qIExp c3Qgb2YgYWN0aXZlIG1vZHVsZSBlbnZpcm9ubWVudHMuICAqLyk7CmRpZmYgLS1naXQgYS9zcmMv ZW1hY3MuYyBiL3NyYy9lbWFjcy5jCmluZGV4IDQ5ZWJiODE3NjcuLmFkZWZiMWFhNzQgMTAwNjQ0 Ci0tLSBhL3NyYy9lbWFjcy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC0yMjMsNiArMjIzLDcgQEAg SW5pdGlhbGl6YXRpb24gb3B0aW9uczpcblwKIC0tZmctZGFlbW9uWz1OQU1FXSAgICAgICAgICBz dGFydCBhIChuYW1lZCkgc2VydmVyIGluIHRoZSBmb3JlZ3JvdW5kXG5cCiAtLWRlYnVnLWluaXQg ICAgICAgICAgICAgICAgZW5hYmxlIEVtYWNzIExpc3AgZGVidWdnZXIgZm9yIGluaXQgZmlsZVxu XAogLS1kaXNwbGF5LCAtZCBESVNQTEFZICAgICAgIHVzZSBYIHNlcnZlciBESVNQTEFZXG5cCist LW1vZHVsZS1hc3NlcnRpb25zICAgICAgICAgYXNzZXJ0IGJlaGF2aW9yIG9mIGR5bmFtaWMgbW9k dWxlc1xuXAogIiwKICAgICAiXAogLS1uby1idWlsZC1kZXRhaWxzICAgICAgICAgIGRvIG5vdCBh ZGQgYnVpbGQgZGV0YWlscyBzdWNoIGFzIHRpbWUgc3RhbXBzXG5cCkBAIC0xMjYzLDYgKzEyNjQs MTIgQEAgVXNpbmcgYW4gRW1hY3MgY29uZmlndXJlZCB3aXRoIC0td2l0aC14LXRvb2xraXQ9bHVj aWQgZG9lcyBub3QgaGF2ZSB0aGlzIHByb2JsZW0KICAgYnVpbGRfZGV0YWlscyA9ICEgYXJnbWF0 Y2ggKGFyZ3YsIGFyZ2MsICItbm8tYnVpbGQtZGV0YWlscyIsCiAJCQkgICAgICAiLS1uby1idWls ZC1kZXRhaWxzIiwgNywgTlVMTCwgJnNraXBfYXJncyk7CiAKKyNpZmRlZiBIQVZFX01PRFVMRVMK KyAgaW5pdF9tb2R1bGVfYXNzZXJ0aW9ucyAoYXJnbWF0Y2ggKGFyZ3YsIGFyZ2MsICItbW9kdWxl LWFzc2VydGlvbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbW9k dWxlLWFzc2VydGlvbnMiLCAxNSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZza2lwX2FyZ3MpKTsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9OUwogICBuc19wb29s ID0gbnNfYWxsb2NfYXV0b3JlbGVhc2VfcG9vbCAoKTsKICNpZmRlZiBOU19JTVBMX0dOVVNURVAK QEAgLTE3MjAsNiArMTcyNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RhbmRhcmRfYXJncyBz dGFuZGFyZF9hcmdzW10gPQogICB7ICItbmwiLCAiLS1uby1sb2FkdXAiLCA3MCwgMCB9LAogICB7 ICItbnNsIiwgIi0tbm8tc2l0ZS1saXNwIiwgNjUsIDAgfSwKICAgeyAiLW5vLWJ1aWxkLWRldGFp bHMiLCAiLS1uby1idWlsZC1kZXRhaWxzIiwgNjMsIDAgfSwKKyAgeyAiLW1vZHVsZS1hc3NlcnRp b25zIiwgIi0tbW9kdWxlLWFzc2VydGlvbnMiLCA2MiwgMCB9LAogICAvKiAtZCBtdXN0IGNvbWUg bGFzdCBiZWZvcmUgdGhlIG9wdGlvbnMgaGFuZGxlZCBpbiBzdGFydHVwLmVsLiAgKi8KICAgeyAi LWQiLCAiLS1kaXNwbGF5IiwgNjAsIDEgfSwKICAgeyAiLWRpc3BsYXkiLCAwLCA2MCwgMSB9LApk aWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggZWU3MDM4OTNlMi4uZTdl OThmYjY2YyAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBAIC0zOTU5 LDYgKzM5NTksNyBAQCBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV91c2VyX3B0ciAodm9pZCAoKmZp bmFsaXplcikgKHZvaWQgKiksIHZvaWQgKnApOwogZXh0ZXJuIExpc3BfT2JqZWN0IGZ1bmNhbGxf bW9kdWxlIChMaXNwX09iamVjdCwgcHRyZGlmZl90LCBMaXNwX09iamVjdCAqKTsKIGV4dGVybiBM aXNwX09iamVjdCBtb2R1bGVfZnVuY3Rpb25fYXJpdHkgKGNvbnN0IHN0cnVjdCBMaXNwX01vZHVs ZV9GdW5jdGlvbiAqKTsKIGV4dGVybiB2b2lkIG1hcmtfbW9kdWxlcyAodm9pZCk7CitleHRlcm4g dm9pZCBpbml0X21vZHVsZV9hc3NlcnRpb25zIChib29sKTsKIGV4dGVybiB2b2lkIHN5bXNfb2Zf bW9kdWxlICh2b2lkKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS90ZXN0L01ha2VmaWxlLmluIGIv dGVzdC9NYWtlZmlsZS5pbgppbmRleCA3YjhjOTY3MTI4Li4wYzI0YzQ4ZTYwIDEwMDY0NAotLS0g YS90ZXN0L01ha2VmaWxlLmluCisrKyBiL3Rlc3QvTWFrZWZpbGUuaW4KQEAgLTY4LDcgKzY4LDcg QEAgRU1BQ1NfRVhUUkFPUFQ9CiAjIENvbW1hbmQgbGluZSBmbGFncyBmb3IgRW1hY3MuCiAjIEFw cGFyZW50bHkgTVNZUyBiYXNoIHdvdWxkIGNvbnZlcnQgIi1MIDoiIHRvICItTCA7IiBhbnl3YXks CiAjIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGJlIGV4cGxpY2l0LgotRU1BQ1NPUFQgPSAtYmF0Y2gg LS1uby1zaXRlLWZpbGUgLS1uby1zaXRlLWxpc3AgLUwgIiQoU0VQQ0hBUikkKHNyY2RpcikiICQo RU1BQ1NfRVhUUkFPUFQpCitFTUFDU09QVCA9IC1iYXRjaCAtLW5vLXNpdGUtZmlsZSAtLW5vLXNp dGUtbGlzcCAtbW9kdWxlLWFzc2VydGlvbnMgLUwgIiQoU0VQQ0hBUikkKHNyY2RpcikiICQoRU1B Q1NfRVhUUkFPUFQpCiAKICMgUHJldmVudCBhbnkgc2V0dGluZ3MgaW4gdGhlIHVzZXIgZW52aXJv bm1lbnQgY2F1c2luZyBwcm9ibGVtcy4KIHVuZXhwb3J0IEVNQUNTREFUQSBFTUFDU0RPQyBFTUFD U1BBVEggR1JFUF9PUFRJT05TCmRpZmYgLS1naXQgYS90ZXN0L2RhdGEvZW1hY3MtbW9kdWxlL21v ZC10ZXN0LmMgYi90ZXN0L2RhdGEvZW1hY3MtbW9kdWxlL21vZC10ZXN0LmMKaW5kZXggMzA5MTc5 ZDE1MC4uZmMyOWEwZDZiOSAxMDA2NDQKLS0tIGEvdGVzdC9kYXRhL2VtYWNzLW1vZHVsZS9tb2Qt dGVzdC5jCisrKyBiL3Rlc3QvZGF0YS9lbWFjcy1tb2R1bGUvbW9kLXRlc3QuYwpAQCAtMjEzLDYg KzIxMywyOCBAQCBGbW9kX3Rlc3RfdmVjdG9yX2VxIChlbWFjc19lbnYgKmVudiwgcHRyZGlmZl90 IG5hcmdzLCBlbWFjc192YWx1ZSBhcmdzW10sCiAgIHJldHVybiBlbnYtPmludGVybiAoZW52LCAi dCIpOwogfQogCitzdGF0aWMgZW1hY3NfdmFsdWUgaW52YWxpZF9zdG9yZWRfdmFsdWU7CisKKy8q IFRoZSBuZXh0IHR3byBmdW5jdGlvbnMgcGVyZm9ybSBhIHBvc3NpYmx5LWludmFsaWQgb3BlcmF0 aW9uOiB0aGV5CisgICBzdG9yZSBhIHZhbHVlIGluIGEgc3RhdGljIHZhcmlhYmxlIGFuZCBsb2Fk IGl0LiAgVGhpcyBjYXVzZXMKKyAgIHVuZGVmaW5lZCBiZWhhdmlvciBpZiB0aGUgZW52aXJvbm1l bnQgdGhhdCB0aGUgdmFsdWUgd2FzIGNyZWF0ZWQKKyAgIGZyb20gaXMgbm8gbG9uZ2VyIGxpdmUu ICBUaGUgbW9kdWxlIGFzc2VydGlvbnMgY2hlY2sgZm9yIHRoaXMKKyAgIGVycm9yLiAgKi8KKwor c3RhdGljIGVtYWNzX3ZhbHVlCitGbW9kX3Rlc3RfaW52YWxpZF9zdG9yZSAoZW1hY3NfZW52ICpl bnYsIHB0cmRpZmZfdCBuYXJncywgZW1hY3NfdmFsdWUgKmFyZ3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqZGF0YSkKK3sKKyAgcmV0dXJuIGludmFsaWRfc3RvcmVkX3ZhbHVlID0g ZW52LT5tYWtlX2ludGVnZXIgKGVudiwgMTIzKTsKK30KKworc3RhdGljIGVtYWNzX3ZhbHVlCitG bW9kX3Rlc3RfaW52YWxpZF9sb2FkIChlbWFjc19lbnYgKmVudiwgcHRyZGlmZl90IG5hcmdzLCBl bWFjc192YWx1ZSAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit7 CisgIHJldHVybiBpbnZhbGlkX3N0b3JlZF92YWx1ZTsKK30KKwogCiAvKiBMaXNwIHV0aWxpdGll cyBmb3IgZWFzaWVyIHJlYWRhYmlsaXR5IChzaW1wbGUgd3JhcHBlcnMpLiAgKi8KIApAQCAtMjYw LDYgKzI4Miw4IEBAIGVtYWNzX21vZHVsZV9pbml0IChzdHJ1Y3QgZW1hY3NfcnVudGltZSAqZXJ0 KQogICBERUZVTiAoIm1vZC10ZXN0LXVzZXJwdHItZ2V0IiwgRm1vZF90ZXN0X3VzZXJwdHJfZ2V0 LCAxLCAxLCBOVUxMLCBOVUxMKTsKICAgREVGVU4gKCJtb2QtdGVzdC12ZWN0b3ItZmlsbCIsIEZt b2RfdGVzdF92ZWN0b3JfZmlsbCwgMiwgMiwgTlVMTCwgTlVMTCk7CiAgIERFRlVOICgibW9kLXRl c3QtdmVjdG9yLWVxIiwgRm1vZF90ZXN0X3ZlY3Rvcl9lcSwgMiwgMiwgTlVMTCwgTlVMTCk7Cisg IERFRlVOICgibW9kLXRlc3QtaW52YWxpZC1zdG9yZSIsIEZtb2RfdGVzdF9pbnZhbGlkX3N0b3Jl LCAwLCAwLCBOVUxMLCBOVUxMKTsKKyAgREVGVU4gKCJtb2QtdGVzdC1pbnZhbGlkLWxvYWQiLCBG bW9kX3Rlc3RfaW52YWxpZF9sb2FkLCAwLCAwLCBOVUxMLCBOVUxMKTsKIAogI3VuZGVmIERFRlVO CiAKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL2VtYWNzLW1vZHVsZS10ZXN0cy5lbCBiL3Rlc3Qvc3Jj L2VtYWNzLW1vZHVsZS10ZXN0cy5lbAppbmRleCA2MjJiYmFkYjNlLi44MzY2ZWIxNjQyIDEwMDY0 NAotLS0gYS90ZXN0L3NyYy9lbWFjcy1tb2R1bGUtdGVzdHMuZWwKKysrIGIvdGVzdC9zcmMvZW1h Y3MtbW9kdWxlLXRlc3RzLmVsCkBAIC0xOSw5ICsxOSwxNyBAQAogCiAocmVxdWlyZSAnZXJ0KQog Ci0ocmVxdWlyZSAnbW9kLXRlc3QKLSAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lICJkYXRhL2Vt YWNzLW1vZHVsZS9tb2QtdGVzdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXRlbnYg IkVNQUNTX1RFU1RfRElSRUNUT1JZIikpKQorKGRlZmNvbnN0IG1vZC10ZXN0LWVtYWNzCisgIChl eHBhbmQtZmlsZS1uYW1lIGludm9jYXRpb24tbmFtZSBpbnZvY2F0aW9uLWRpcmVjdG9yeSkKKyAg IkZpbGUgbmFtZSBvZiB0aGUgRW1hY3MgYmluYXJ5IGN1cnJlbnRseSBydW5uaW5nLiIpCisKKyhl dmFsLWFuZC1jb21waWxlCisgIChkZWZjb25zdCBtb2QtdGVzdC1maWxlCisgICAgKHN1YnN0aXR1 dGUtaW4tZmlsZS1uYW1lCisgICAgICIkRU1BQ1NfVEVTVF9ESVJFQ1RPUlkvZGF0YS9lbWFjcy1t b2R1bGUvbW9kLXRlc3QiKQorICAgICJGaWxlIG5hbWUgb2YgdGhlIG1vZHVsZSB0ZXN0IGZpbGUu IikpCisKKyhyZXF1aXJlICdtb2QtdGVzdCBtb2QtdGVzdC1maWxlKQogCiA7OwogOzsgQmFzaWMg dGVzdHMuCkBAIC0xNzQsNCArMTgyLDI5IEBAIG11bHRpcGx5LXN0cmluZwogICAoc2hvdWxkIChl cXVhbCAoaGVscC1mdW5jdGlvbi1hcmdsaXN0ICMnbW9kLXRlc3Qtc3VtKQogICAgICAgICAgICAg ICAgICAnKGFyZzEgYXJnMikpKSkKIAorKGVydC1kZWZ0ZXN0IG1vZHVsZS0tdGVzdC1hc3NlcnRp b25zICgpCisgICJDaGVjayB0aGF0IC1tb2R1bGUtYXNzZXJ0aW9ucyB3b3JrLiIKKyAgKHNraXAt dW5sZXNzIChmaWxlLWV4ZWN1dGFibGUtcCBtb2QtdGVzdC1lbWFjcykpCisgIDs7IFRoaXMgZG9l c27igJl0IHlldCBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuCisgIChzaG91bGQgKGVxIChtb2Qt dGVzdC1pbnZhbGlkLXN0b3JlKSAxMjMpKQorICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgIChzaG91 bGQgKGVxdWFsIChjYWxsLXByb2Nlc3MgbW9kLXRlc3QtZW1hY3MgbmlsIHQgbmlsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiLWJhdGNoIiAiLVEiICItbW9kdWxlLWFzc2VydGlv bnMiICItZXZhbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmluMS10by1z dHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKHByb2duCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVpcmUgJ21vZC10ZXN0ICxtb2QtdGVz dC1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFN0b3Jpbmcg YW5kIHJlbG9hZGluZyBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgdmFsdWUgY2F1c2VzIHVuZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IGJlaGF2aW9yLCB3aGljaCBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBkZXRlY3RlZCBieSB0aGUgbW9kdWxlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYXNzZXJ0aW9ucy4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobW9kLXRlc3QtaW52YWxpZC1zdG9yZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kLXRlc3QtaW52YWxpZC1sb2FkKSkpKQor ICAgICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBUaGlzIHN0cmluZyBpcyBwcm9iYWJseSBkaWZm ZXJlbnQgb24KKyAgICAgICAgICAgICAgICAgICA7OyBXaW5kb3dzIGFuZCBMaW51eC4KKyAgICAg ICAgICAgICAgICAgICAiQWJvcnQgdHJhcDogNiIpKQorICAgIChyZS1zZWFyY2gtYmFja3dhcmQg KHJ4IGJvbCAiZW1hY3MtbW9kdWxlLmMiID86ICgrIGRpZ2l0KSAiOiAiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkVtYWNzIGZhdGFsIGVycm9yOiBhc3NlcnRpb24gZmFpbGVkOiAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtYWNzIHZhbHVlIGlzIG5vdCBsaXZlIiAoPyA/ XHIpIGVvbCkpKSkKKwogOzs7IGVtYWNzLW1vZHVsZS10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIu MTMuMQoK --001a1136f5c8566b8f0551af7b59--