Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wjTnL-0008BA-0x for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jul 2026 03:26:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wjTnJ-001uBY-0Y for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jul 2026 03:26:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wjTnI-001uBP-2O for pgsql-hackers@lists.postgresql.org; Tue, 14 Jul 2026 03:26:53 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wjTnH-000000006vZ-0VWr for pgsql-hackers@postgresql.org; Tue, 14 Jul 2026 03:26:53 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2cacb8416a1so4503165ad.1 for ; Mon, 13 Jul 2026 20:26:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20251104.gappssmtp.com; s=20251104; t=1783999609; x=1784604409; darn=postgresql.org; h=mime-version:user-agent:content-type:references:in-reply-to:date:cc :to:from:subject:message-id:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Bx+SgRQRGpyoQ8/tu688fCzeFA6dhEuMw2Qe+AVDGFY=; b=qxwCO2qRh9Rp2jWfI9J+29buNGCAeYwp7EJCX2PovRY94LiZTGZ22yCzGh6Hxfn3ZE 7VBjIGa8jlLflr8RVmaRV65S9Ok9+exOkac5ROBtY/YvApXgwRLDvSb6QRtf/QDcdH7l kovnhB09zyBh3LKbF3PU74vrBU9kGt2pacZnlGi6lcuEaYt4ByhPKUs20P9p83WxPfQY ej/BIeyl9D1Vl9OPUgQK6FjPS7bjALDFQ30kGMswoKpx0rFS+aNxa12AV1ygDXck9v6v HxayHkCgwFgHA+ajQdqMzikgItA8QsdvO286Xa92V7NKLwOXlLTLnlhCdZLMI2eF2Ail CqEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783999609; x=1784604409; h=mime-version:user-agent:content-type:references:in-reply-to:date:cc :to:from:subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=Bx+SgRQRGpyoQ8/tu688fCzeFA6dhEuMw2Qe+AVDGFY=; b=SU2XRRzV1EFF2XhQTsBrpEWZll6l7m3euysaXOxF0Asg+IAFYm/GWjUDnThiRfxqbW ypNvVvzNLBH7649A1NgJoI7EBs1tKK4BciZSKc17VvzgZ9FA/HO1mjJ647eHYGEqbNMr HXj+gYDc+C0VccfP83yOXXT0yKkaemFpWVYuSbJMw/aDqnppuNGSOG2eJRLmRQmNfeTz eyf2e982R2ZvR2DvnJpptUyXDPSio6upNFmJgmNTAmB1jFAoVDitW7JB0OhFRl8EcYqE KDPtTSpBOle1ZeAFQJDxJQvAn+ROsIV/DTgQya7YY/BMycxpHpDiz8YtOtuhE+ktbvlj djvA== X-Forwarded-Encrypted: i=1; AHgh+RoYQJsvCZuG92fjpBG85NENLajNZPTt6N8l9hblV8VAEWA67JzbeoxBGE3xj0nziFfAxzzRUiABi9WibCQG@postgresql.org X-Gm-Message-State: AOJu0YxNVIE8HdBel446HHDpBoeRo/1PTj/dJLfY92Ib//oH9iwLiwLs osyWdUNDM0D4jnFZyg0aWiNcYLRgPecG013n2LLQ9Guc2bMVPAzdemUR8T9tdy51UA== X-Gm-Gg: AfdE7cnF0xKV3vEXtDc3uz6ygYp1PyjHfhb9wImBVFdRoXD7GP8HLNO6ZCqTig/ZF6w YXOGnwspSz9dsGGy6QBssvFNGVjMXI2d0UVchaCvS1BPSBRT7sUIXuacQj6yAk17URTXjE4TZJ2 J1uqMy2+qzV8b1foLXaca+sEgCdT6+eAQboXIIkRofHJmMxo24FKWauDk6RJ+3WZ/15MEpelKdD i5+hUQGVWi1m2iaWzetQLb1aGlE7aaQ4sNi4jW7pPAM8/V8dURoxew9L/VZAggc9dP+gg4c1keK K7wRBcGJOCSJmKjjWI+7tgAYNshZ8qrRT+c/EFkRAFWM1GRJIUb2GvLR2GLBwj0KDyZXTWskmmx Yu6GKVKup91IZRx/FMDNs8zz7ZzcGGrlKtxs/6sS/PD0CsU7G25l3h9KV4kky+sboDNNzSu6B1S vrzz48WIkU8DWbxXAQ85vfN/h49d/5beeV7FiJW1VQicWScv8N/MNxQrix X-Received: by 2002:a05:6a21:178a:b0:3bf:82c5:ed0f with SMTP id adf61e73a8af0-3c110a740e3mr11260330637.44.1783999609008; Mon, 13 Jul 2026 20:26:49 -0700 (PDT) Received: from jeff-ws-bridge.lan (c-24-7-19-3.hsd1.ca.comcast.net. [24.7.19.3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174ac14f2sm79826919eec.27.2026.07.13.20.26.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 20:26:48 -0700 (PDT) Message-ID: <765830662fd26e0861189c775443fc76ea8213da.camel@j-davis.com> Subject: Re: Small patch to improve safety of utf8_to_unicode(). From: Jeff Davis To: Tom Lane Cc: Chao Li , pgsql-hackers@postgresql.org Date: Mon, 13 Jul 2026 20:26:47 -0700 In-Reply-To: <3228230.1783963239@sss.pgh.pa.us> References: <541F240E-94AD-4D65-9794-7D6C316BC3FF@gmail.com> <313BCA0E-2E74-4EB6-9AA8-10DB7F439151@gmail.com> <592441c1d871a4ed0ac1708e132f447caa35869c.camel@j-davis.com> <3058CAA1-40E0-4098-893B-615F77CD35E1@gmail.com> <0cedb517aee8b79b8e31a4e42885ed88c2a67c5f.camel@j-davis.com> <16CAD4DB-9D4A-481A-BB4E-78775C4F4B2C@gmail.com> <3213927.1783950167@sss.pgh.pa.us> <3228110.1783963143@sss.pgh.pa.us> <3228230.1783963239@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="=-qbF6kwIHlg25z2e514ot" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-qbF6kwIHlg25z2e514ot Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 2026-07-13 at 13:20 -0400, Tom Lane wrote: > I wrote: > > Well, there aren't going to be any ASCII characters that produce 12 > > bytes, and probably not any LATIN1 characters either, so I think we > > could assume that the shortest input character that could produce > > such a long output would be 3 bytes. >=20 > Ah sorry, I should have written BMP not LATIN1.=C2=A0 Maybe it still hold= s > across that set, but I'm less sure. Attached a patch. I added some perl code to check that the expansion factor of the UTF8 representation doesn't exceed 3, and added a static assert in the C code to compare to MaxAllocSize. Regards, Jeff Davis --=-qbF6kwIHlg25z2e514ot Content-Disposition: attachment; filename="v1-0001-Clarify-use-of-size_t-for-case-mapping.patch" Content-Type: text/x-patch; name="v1-0001-Clarify-use-of-size_t-for-case-mapping.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxZmEwNjVjNTI0NjAwNjA5YTQ5NTQzMzA2OWY0M2JkYmI4OGUyZTA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDEzIEp1bCAyMDI2IDE5OjMxOjU2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MV0gQ2xhcmlm eSB1c2Ugb2Ygc2l6ZV90IGZvciBjYXNlIG1hcHBpbmcuCgpJdCBjYW5ub3Qgb3ZlcmZsb3csIGJ1 dCBhZGQgc29tZSBzdGF0aWMgY2hlY2tpbmcgdG8gYmUgc3VyZS4KClJlcG9ydGVkLWJ5OiBUb20g TGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v MzIxMzkyNy4xNzgzOTUwMTY3QHNzcy5wZ2gucGEudXMKLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcGdfbG9jYWxlX2J1aWx0aW4uYyAgICAgfCAxMCArKysrKysKIC4uLi91bmljb2RlL2dlbmVy YXRlLXVuaWNvZGVfY2FzZV90YWJsZS5wbCAgICB8IDMyICsrKysrKysrKysrKysrKysrKysKIHNy Yy9jb21tb24vdW5pY29kZV9jYXNlLmMgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysKIHNy Yy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2UuaCAgICAgICAgICAgICB8ICA4ICsrKysrCiA0 IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z19sb2NhbGVfYnVpbHRpbi5jCmluZGV4IDU2MTlkYWY0M2MzLi5jMmNmNjhhNTE4YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9idWlsdGluLmMKQEAgLTE3LDkgKzE3LDE5IEBA CiAjaW5jbHVkZSAiY29tbW9uL3VuaWNvZGVfY2F0ZWdvcnkuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbG9jYWxlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKIAorLyoKKyAqIFRoZSBsYXJnZXN0IHRleHQgdmFsdWUgbXVzdCBmaXQgaW4gTWF4 QWxsb2NTaXplLCBidXQgdGhlbiBtYXkgZ3JvdyBkdXJpbmcKKyAqIGNhc2UgbWFwcGluZy4gV2hp bGUgdGhlIHJlc3VsdGluZyBzdHJpbmcgd2lsbCBub3QgYmUgcmVwcmVzZW50YWJsZSBhcyBhIG5l dworICogdGV4dCB2YWx1ZSwgd2UgbXVzdCBhdCBsZWFzdCBiZSBzdXJlIG5vdCB0byBvdmVyZmxv dyBhIHNpemVfdCB3aGlsZQorICogcHJvY2Vzc2luZyBpdC4KKyAqLworU3RhdGljQXNzZXJ0RGVj bChTSVpFX01BWCAvIE1BWF9DQVNFX1VURjhfRVhQQU5TSU9OID4gTWF4QWxsb2NTaXplLAorCQkJ CSAiY2FzZSBtYXBwaW5nIG1heSBvdmVyZmxvdyBzaXplX3QiKTsKKwogZXh0ZXJuIHBnX2xvY2Fs ZV90IGNyZWF0ZV9wZ19sb2NhbGVfYnVpbHRpbihPaWQgY29sbGlkLAogCQkJCQkJCQkJCQlNZW1v cnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fYWN0dWFsX3Zl cnNpb25fYnVpbHRpbihjb25zdCBjaGFyICpjb2xsY29sbGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMv Y29tbW9uL3VuaWNvZGUvZ2VuZXJhdGUtdW5pY29kZV9jYXNlX3RhYmxlLnBsIGIvc3JjL2NvbW1v bi91bmljb2RlL2dlbmVyYXRlLXVuaWNvZGVfY2FzZV90YWJsZS5wbAppbmRleCBjMWI5NGY0N2Y1 Ni4uYjUzYjg0ZWJjODggMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vdW5pY29kZS9nZW5lcmF0ZS11 bmljb2RlX2Nhc2VfdGFibGUucGwKKysrIGIvc3JjL2NvbW1vbi91bmljb2RlL2dlbmVyYXRlLXVu aWNvZGVfY2FzZV90YWJsZS5wbApAQCAtMTEsNiArMTEsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgRW5jb2RlIHF3 KGVuY29kZV91dGY4KTsKIAogdXNlIEZpbmRCaW47CiB1c2UgbGliICIkRmluZEJpbjo6UmVhbEJp bi8uLi8uLi90b29scy8iOwpAQCAtMjUsNiArMjYsMTEgQEAgbXkgJG91dHB1dF90YWJsZV9maWxl ID0gIiRvdXRwdXRfcGF0aC91bmljb2RlX2Nhc2VfdGFibGUuaCI7CiAjIG9mIGEgc2luZ2xlIGNo YXJhY3Rlci4gU2VlIFVuaWNvZGUgc2VjdGlvbiA1LjE4ICJDYXNlIE1hcHBpbmdzIi4KIG15ICRN QVhfQ0FTRV9FWFBBTlNJT04gPSAzOwogCisKKyMgVGhlIG1heGltdW0gZXhwYW5zaW9uIGZhY3Rv ciAoaW4gYnl0ZXMpIHdoZW4gY2FzZSBtYXBwaW5nIGEgVVRGOAorIyBzdHJpbmcuCitteSAkTUFY X0NBU0VfVVRGOF9FWFBBTlNJT04gPSAzOworCiBteSAkRkg7CiAKIG15ICVzaW1wbGUgPSAoKTsK QEAgLTQ0LDYgKzUwLDEwIEBAIHdoaWxlIChteSAkbGluZSA9IDwkRkg+KQogCWRpZSAiU2ltcGxl X1RpdGxlY2FzZSAkY29kZSBvdXQgb2YgcmFuZ2UiIGlmICRzaW1wbGVfdGl0bGVjYXNlID4gMHgx MEZGRkY7CiAJZGllICJTaW1wbGVfVXBwZXJjYXNlICRjb2RlIG91dCBvZiByYW5nZSIgaWYgJHNp bXBsZV91cHBlcmNhc2UgPiAweDEwRkZGRjsKIAorCWNoZWNrX3V0ZjhfZXhwYW5zaW9uKCRjb2Rl LCAoJHNpbXBsZV91cHBlcmNhc2UpKTsKKwljaGVja191dGY4X2V4cGFuc2lvbigkY29kZSwgKCRz aW1wbGVfbG93ZXJjYXNlKSk7CisJY2hlY2tfdXRmOF9leHBhbnNpb24oJGNvZGUsICgkc2ltcGxl X3RpdGxlY2FzZSkpOworCiAJaWYgKCRzaW1wbGVfbG93ZXJjYXNlIHx8ICRzaW1wbGVfdGl0bGVj YXNlIHx8ICRzaW1wbGVfdXBwZXJjYXNlKQogCXsKIAkJJHNpbXBsZXskY29kZX0gPSB7CkBAIC0x MTMsNiArMTIzLDEwIEBAIHdoaWxlIChteSAkbGluZSA9IDwkRkg+KQogCWRpZSAidXBwZXJjYXNl IGV4cGFuc2lvbiBmb3IgMHgkZWx0c1swXSBleGNlZWRzIG1heGltdW06ICckZWx0c1szXSciCiAJ ICBpZiAoc2NhbGFyIEB1cHBlcikgPiAkTUFYX0NBU0VfRVhQQU5TSU9OOwogCisJY2hlY2tfdXRm OF9leHBhbnNpb24oJGNvZGUsIEBsb3dlcik7CisJY2hlY2tfdXRmOF9leHBhbnNpb24oJGNvZGUs IEB0aXRsZSk7CisJY2hlY2tfdXRmOF9leHBhbnNpb24oJGNvZGUsIEB1cHBlcik7CisKIAkjIHBh ZCBhcnJheXMgdG8gYSBmaXhlZCBsZW5ndGggb2YgMwogCXdoaWxlIChzY2FsYXIgQHVwcGVyIDwg JE1BWF9DQVNFX0VYUEFOU0lPTikgeyBwdXNoIEB1cHBlciwgMHgwMDAwMDAgfQogCXdoaWxlIChz Y2FsYXIgQGxvd2VyIDwgJE1BWF9DQVNFX0VYUEFOU0lPTikgeyBwdXNoIEBsb3dlciwgMHgwMDAw MDAgfQpAQCAtMTc0LDYgKzE4OCw4IEBAIHdoaWxlIChteSAkbGluZSA9IDwkRkg+KQogCWRpZSAi dW5zdXBwb3J0ZWQgc3RhdHVzIHR5cGUgJyRzdGF0dXMnIgogCSAgaWYgJHN0YXR1cyBuZSAnUycg JiYgJHN0YXR1cyBuZSAnQycgJiYgJHN0YXR1cyBuZSAnRic7CiAKKwljaGVja191dGY4X2V4cGFu c2lvbigkY29kZSwgQGZvbGQpOworCiAJIyBpbml0aWFsaXplIHNpbXBsZSBjYXNlIG1hcHBpbmdz IGlmIHRoZXkgZG9uJ3QgZXhpc3QKIAkkc2ltcGxleyRjb2RlfSB8fD0gewogCQlTaW1wbGVfTG93 ZXJjYXNlID0+ICRjb2RlLApAQCAtNTIyLDYgKzUzOCwyMiBAQCBFT1MKIAogY2xvc2UgJE9UOwog CisjIGNvbXBhcmUgYnl0ZSBsZW5ndGggb2YgVVRGOCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3Jp Z2luYWwgY29kZXBvaW50CisjIHRvIHRoZSBjb2RlcG9pbnQocykgaXQgbWFwcyB0bywgYW5kIHRy YWNrIHRoZSBsYXJnZXN0IGV4cGFuc2lvbgorc3ViIGNoZWNrX3V0ZjhfZXhwYW5zaW9uCit7CisJ bXkgKCRjLCBAYSkgPSBAXzsKKworCW15ICR1dGY4bGVuMSA9IGxlbmd0aChlbmNvZGVfdXRmOChj aHIgJGMpKTsKKwlteSAkdXRmOGxlbjIgPSBsZW5ndGgoZW5jb2RlX3V0Zjgoam9pbiAnJywgbWFw IHsgY2hyIH0gQGEpKTsKKwlteSAkZmFjdG9yID0gMDsKKwkkZmFjdG9yKysgd2hpbGUgKCRmYWN0 b3IgKiAkdXRmOGxlbjEgPCAkdXRmOGxlbjIpOworCisJbXkgJGNfaGV4ID0gc3ByaW50ZiAiMHgl MDZ4IiwgJGM7CisJZGllICJVVEY4IGV4cGFuc2lvbiBvZiAkY19oZXggZXhjZWVkcyAkTUFYX0NB U0VfVVRGOF9FWFBBTlNJT04iCisJICBpZiAoJGZhY3RvciA+ICRNQVhfQ0FTRV9VVEY4X0VYUEFO U0lPTik7Cit9CisKICMgVGhlIGZ1bmN0aW9uIGdlbmVyYXRlcyBDIGNvZGUgd2l0aCBhIHNlcmll cyBvZiBuZXN0ZWQgaWYtZWxzZSBjb25kaXRpb25zCiAjIHRvIHNlYXJjaCBmb3IgdGhlIG1hdGNo aW5nIGludGVydmFsLgogc3ViIGJyYW5jaApkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi91bmljb2Rl X2Nhc2UuYyBiL3NyYy9jb21tb24vdW5pY29kZV9jYXNlLmMKaW5kZXggMzk5ZjA4MjM1YTkuLjVm NjgxNTRjOGFhIDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3VuaWNvZGVfY2FzZS5jCisrKyBiL3Ny Yy9jb21tb24vdW5pY29kZV9jYXNlLmMKQEAgLTIzNyw2ICsyMzcsMTIgQEAgY29udmVydF9jYXNl KGNoYXIgKmRzdCwgc2l6ZV90IGRzdHNpemUsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xl biwKIAlzaXplX3QJCXJlc3VsdF9sZW4gPSAwOwogCXNpemVfdAkJYm91bmRhcnkgPSAwOwogCisJ LyoKKwkgKiBNdXN0IGJlIGd1YXJhbnRlZWQgYnkgY2FsbGVyIHRvIGF2b2lkIG92ZXJmbG93ICh0 ZXh0IHZhbHVlcyBsaW1pdGVkIHRvCisJICogTWF4QWxsb2NTaXplIGFueXdheSkuCisJICovCisJ QXNzZXJ0KHNyY2xlbiA8IFNJWkVfTUFYIC8gTUFYX0NBU0VfVVRGOF9FWFBBTlNJT04pOworCiAJ QXNzZXJ0KChzdHJfY2FzZWtpbmQgPT0gQ2FzZVRpdGxlICYmIHdibmV4dCAmJiB3YnN0YXRlKSB8 fAogCQkgICAoc3RyX2Nhc2VraW5kICE9IENhc2VUaXRsZSAmJiAhd2JuZXh0ICYmICF3YnN0YXRl KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2UuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2UuaAppbmRleCAxY2JjMGMxNGJjMi4uYTJiNzUy NjY3Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1vbi91bmljb2RlX2Nhc2UuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tb24vdW5pY29kZV9jYXNlLmgKQEAgLTE0LDYgKzE0LDE0IEBACiAj aWZuZGVmIFVOSUNPREVfQ0FTRV9ICiAjZGVmaW5lIFVOSUNPREVfQ0FTRV9ICiAKKy8qCisgKiBU aGUgbWF4aW11bSBleHBhbnNpb24gZmFjdG9yIChpbiBieXRlcykgd2hlbiBjYXNlIG1hcHBpbmcg YSBVVEY4IHN0cmluZy4KKyAqCisgKiBOb3QgZ3VhcmFudGVlZCBieSB0aGUgc3RhbmRhcmQsIGJ1 dCBjaGVja2VkIHdoaWxlIGNvbnN0cnVjdGluZyB0aGUgbWFwcGluZworICogdGFibGVzIGZyb20g VW5pY29kZSBkYXRhLgorICovCisjZGVmaW5lIE1BWF9DQVNFX1VURjhfRVhQQU5TSU9OIDMKKwog dHlwZWRlZiBzaXplX3QgKCpXb3JkQm91bmRhcnlOZXh0KSAodm9pZCAqd2JzdGF0ZSk7CiAKIGNo YXIzMl90CXVuaWNvZGVfbG93ZXJjYXNlX3NpbXBsZShjaGFyMzJfdCBjb2RlKTsKLS0gCjIuNDMu MAoK --=-qbF6kwIHlg25z2e514ot--