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 1vUCUc-001pt1-1H for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 23:24:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vUCUa-009dY1-2u for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 23:24:09 +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 1vUCUa-009dXs-1D for pgsql-hackers@lists.postgresql.org; Fri, 12 Dec 2025 23:24:09 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vUCUY-000R7B-0d for pgsql-hackers@postgresql.org; Fri, 12 Dec 2025 23:24:08 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-29555b384acso17809355ad.1 for ; Fri, 12 Dec 2025 15:24:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1765581843; x=1766186643; darn=postgresql.org; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=FAmUcO/XJuZdOnzdbq6o6GoqQ9r0WN+4FAJE+F3vcrU=; b=vze/nnSU6yc9Q6w6/8hbkbLLiKQtbx6asuBX6jUe4uWxDbhlkJi/R5BjYjMzCZ2kvd NNVdqPAQlMqO67bdcF6LmdiFU9q62xKLmmJJudsj1cQGsgCrMN5MKPIXeqUv9UhCVuDt BhyTy+Zc1KfMDuUtimL1W0WZxV8E4he5fSxK8LeIDo8fCPd51TXenmUVwuyfhwK287DK NUo4qpI66SZj39Aq/nO/taLqF4I2Np+MiMnmhXdFJtPBUzoqV14od1mhKCp50wnscvy4 of6S8UtfDCHMU9bCpUrSGUvhIWOvFTzZPw5Xfutu6npwrQxXWqRIw0gZFJunNLUOTE9/ 9XbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765581843; x=1766186643; h=mime-version:user-agent:date:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=FAmUcO/XJuZdOnzdbq6o6GoqQ9r0WN+4FAJE+F3vcrU=; b=OG1Oi7b3aJvvUmTXTCzyqSH1P5Fd6Hg48gZuLSq5JgS42jGV/Jyc3eKmGUjKZFlRSW zM+oW58gMQJkyrJXY469Sq22vB8QXfASwjhaZAmj3ZQ6VTwT/yedRKZ/aP22u+gM9Fhk a6V0u3xt5GXx5QldHlcN8rD3jNBwVm4lxbNNeDwFpiX+kTKgxh6akTnEs34POB9mVaBQ m71LomnP78HNuoxLKgHA8iyOAM5ZCV4H1K1gtuv1myLXbNo92vs/+C8d3w4gO8Fxp6CC Um5k7dbtaqLLlF09Rh4cpE0QlVHMhOKjQr9X6tcFxhq8WgwV/+FFF/Kukr+E8PHNX9hf yYVw== X-Gm-Message-State: AOJu0YxzmWPXPozhhaV/tUyNVBJW3gqZDASl0Q9w0eJDw2vzXSDqtZW7 /66s/HeN86IYP+z7xy/XL+RP3syvG6/9WsQjFuE7qsgAdlrkUklOfKk/fepYXp577ikzw7GrMt9 HNSY= X-Gm-Gg: AY/fxX7q+x4reRL5nLOjg/V5Ku/9n6YE5e+h9BtwdIGQu6Nl7g9qTtLQzqNbBumeDh5 COV5MbYhpmMDBDICEsj5zfJ4E2hJavF7UjrNiu6bmw+UcnLt9an+GVhKsesZiepeBitooFKFMB5 Ye3Fpo0WLpkFqRZomwHvFqVrxgEa4Xzyhb7L4fcy5RFebLjz3eHTFc5+q1Bq+rFp6iefECVfojL a9XgbLqmJKCFbwnB3okxE4OsD7tbswHTjThjcJ8uPPR9ruiMRdOHdx3+H/+GhjV2SEr+s8AFEyE UFYFDAWPGeBA8HMP1+235MscDpb55LgWWXW6gBdtFkenQC+bdShPaRg81UtSIVuU0d2Vb9ecNn4 V6fGTvZC/9/+g8ObgCi4Ag25BJskGZvNxAF9PARfiJYw+BoEZ+E4YcHT7ugjvgt8jZr0+fMeHf9 +3ziPZt4uNdoT7jYJSE0Q5MnouMWU1RhnMr3tlD1HWq6Y= X-Google-Smtp-Source: AGHT+IEMKO2y2ZINFqEA5pZu6686CymeDID6rw4e/uup/Ev8AYXSfK57z0YPqwqsc1wLjJsGWC7Htw== X-Received: by 2002:a05:701a:ca85:b0:11b:9386:8258 with SMTP id a92af1059eb24-11f34c262eamr2561855c88.45.1765581843339; Fri, 12 Dec 2025 15:24:03 -0800 (PST) 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 a92af1059eb24-11f2e2b51b2sm19865147c88.8.2025.12.12.15.24.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Dec 2025 15:24:02 -0800 (PST) Message-ID: Subject: Small patch to improve safety of utf8_to_unicode(). From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Fri, 12 Dec 2025 15:24:02 -0800 Content-Type: multipart/mixed; boundary="=-JE4+arYwbM3tVQ315FOs" 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 --=-JE4+arYwbM3tVQ315FOs Content-Type: text/plain Content-Transfer-Encoding: 7bit Attached. --=-JE4+arYwbM3tVQ315FOs Content-Disposition: attachment; filename="v1-0001-Make-utf8_to_unicode-safer.patch" Content-Type: text/x-patch; name="v1-0001-Make-utf8_to_unicode-safer.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0Nzc3ZDFhZjc1YmM5ZTU3MGU3ZGI5NTRiNjY0MjkxNmZhMTQyMGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDQgRGVjIDIwMjUgMTk6Mzc6MzIgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxXSBNYWtlIHV0 ZjhfdG9fdW5pY29kZSgpIHNhZmVyLgoKLS0tCiBjb250cmliL2Z1enp5c3RybWF0Y2gvZGFpdGNo X21va290b2ZmLmMgICB8ICAzICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZV9i dWlsdGluLmMgfCAgNSArKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAg ICAgICAgfCAyNiArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2NvbW1vbi9zYXNscHJlcC5j ICAgICAgICAgICAgICAgICAgICAgfCAgNCArKystCiBzcmMvY29tbW9uL3VuaWNvZGUvY2FzZV90 ZXN0LmMgICAgICAgICAgICB8ICA1ICsrKy0tCiBzcmMvY29tbW9uL3VuaWNvZGVfY2FzZS5jICAg ICAgICAgICAgICAgICB8IDEyICsrKysrKystLS0tCiBzcmMvY29tbW9uL3djaGFyLmMgICAgICAg ICAgICAgICAgICAgICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUvbWIvcGdfd2NoYXIuaCAgICAg ICAgICAgICAgICAgfCAxNCArKysrKy0tLS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0 aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9mdXp6eXN0cm1h dGNoL2RhaXRjaF9tb2tvdG9mZi5jIGIvY29udHJpYi9mdXp6eXN0cm1hdGNoL2RhaXRjaF9tb2tv dG9mZi5jCmluZGV4IDA3Zjg5NWFlMmJmLi40N2JkMjgxNDQ2MCAxMDA2NDQKLS0tIGEvY29udHJp Yi9mdXp6eXN0cm1hdGNoL2RhaXRjaF9tb2tvdG9mZi5jCisrKyBiL2NvbnRyaWIvZnV6enlzdHJt YXRjaC9kYWl0Y2hfbW9rb3RvZmYuYwpAQCAtNDAxLDcgKzQwMSw4IEBAIHJlYWRfY2hhcihjb25z dCB1bnNpZ25lZCBjaGFyICpzdHIsIGludCAqaXgpCiAKIAkvKiBEZWNvZGUgVVRGLTggY2hhcmFj dGVyIHRvIElTTyAxMDY0NiBjb2RlIHBvaW50LiAqLwogCXN0ciArPSAqaXg7Ci0JYyA9IHV0Zjhf dG9fdW5pY29kZShzdHIpOworCS8qIEFzc3VtZSBieXRlIHNlcXVlbmNlIGhhcyBub3QgYmVlbiBi cm9rZW4uICovCisJYyA9IHV0ZjhfdG9fdW5pY29kZShzdHIsIE1BWF9NVUxUSUJZVEVfQ0hBUl9M RU4pOwogCiAJLyogQWR2YW5jZSAqaXgsIGJ1dCAoZm9yIHNhZmV0eSkgbm90IGlmIHdlJ3ZlIHJl YWNoZWQgZW5kIG9mIHN0cmluZy4gKi8KIAlpZiAoYykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGVfYnVpbHRpbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn X2xvY2FsZV9idWlsdGluLmMKaW5kZXggMGQ0Yzc1NGEyNjcuLjVjMTM1OGU1MzQ3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlX2J1aWx0aW4uYwpAQCAtNTksMTIgKzU5LDEzIEBA IHN0YXRpYyBzaXplX3QKIGluaXRjYXBfd2JuZXh0KHZvaWQgKnN0YXRlKQogewogCXN0cnVjdCBX b3JkQm91bmRhcnlTdGF0ZSAqd2JzdGF0ZSA9IChzdHJ1Y3QgV29yZEJvdW5kYXJ5U3RhdGUgKikg c3RhdGU7CisJdW5zaWduZWQgY2hhciAqc3RyID0gKHVuc2lnbmVkIGNoYXIgKikgd2JzdGF0ZS0+ c3RyOwogCiAJd2hpbGUgKHdic3RhdGUtPm9mZnNldCA8IHdic3RhdGUtPmxlbiAmJgogCQkgICB3 YnN0YXRlLT5zdHJbd2JzdGF0ZS0+b2Zmc2V0XSAhPSAnXDAnKQogCXsKLQkJY2hhcjMyX3QJdSA9 IHV0ZjhfdG9fdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSB3YnN0YXRlLT5zdHIgKwotCQkJCQkJ CQkJCXdic3RhdGUtPm9mZnNldCk7CisJCWNoYXIzMl90CXUgPSB1dGY4X3RvX3VuaWNvZGUoc3Ry ICsgd2JzdGF0ZS0+b2Zmc2V0LAorCQkJCQkJCQkJCXdic3RhdGUtPmxlbiAtIHdic3RhdGUtPm9m ZnNldCk7CiAJCWJvb2wJCWN1cnJfYWxudW0gPSBwZ191X2lzYWxudW0odSwgd2JzdGF0ZS0+cG9z aXgpOwogCiAJCWlmICghd2JzdGF0ZS0+aW5pdCB8fCBjdXJyX2FsbnVtICE9IHdic3RhdGUtPnBy ZXZfYWxudW0pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwppbmRleCBiYWE1YjQ0ZWE4ZC4uZDY4NDM3 MDkwMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYwpAQCAtNTQyMywxOSArNTQyMywxNyBAQCBE YXR1bQogdW5pY29kZV9hc3NpZ25lZChQR19GVU5DVElPTl9BUkdTKQogewogCXRleHQJICAgKmlu cHV0ID0gUEdfR0VUQVJHX1RFWFRfUFAoMCk7Ci0JdW5zaWduZWQgY2hhciAqcDsKLQlpbnQJCQlz aXplOworCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciAqKSBWQVJEQVRBX0FOWShp bnB1dCk7CisJdW5zaWduZWQgY2hhciAqcF9lbmQgPSBwICsgVkFSU0laRV9BTllfRVhIRFIoaW5w dXQpOwogCiAJaWYgKEdldERhdGFiYXNlRW5jb2RpbmcoKSAhPSBQR19VVEY4KQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJtc2coIlVuaWNvZGUgY2F0ZWdvcml6YXRpb24gY2FuIG9ubHkgYmUg cGVyZm9ybWVkIGlmIHNlcnZlciBlbmNvZGluZyBpcyBVVEY4IikpKTsKIAogCS8qIGNvbnZlcnQg dG8gY2hhcjMyX3QgKi8KLQlzaXplID0gcGdfbWJzdHJsZW5fd2l0aF9sZW4oVkFSREFUQV9BTlko aW5wdXQpLCBWQVJTSVpFX0FOWV9FWEhEUihpbnB1dCkpOwotCXAgPSAodW5zaWduZWQgY2hhciAq KSBWQVJEQVRBX0FOWShpbnB1dCk7Ci0JZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisJ d2hpbGUgKHAgPCBwX2VuZCkKIAl7Ci0JCWNoYXIzMl90CXVjaGFyID0gdXRmOF90b191bmljb2Rl KHApOworCQljaGFyMzJfdAl1Y2hhciA9IHV0ZjhfdG9fdW5pY29kZShwLCBwX2VuZCAtIHApOwog CQlpbnQJCQljYXRlZ29yeSA9IHVuaWNvZGVfY2F0ZWdvcnkodWNoYXIpOwogCiAJCWlmIChjYXRl Z29yeSA9PSBQR19VX1VOQVNTSUdORUQpCkBAIC01NDU2LDcgKzU0NTQsOCBAQCB1bmljb2RlX25v cm1hbGl6ZV9mdW5jKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaW50CQkJc2l6ZTsKIAljaGFyMzJfdCAg ICppbnB1dF9jaGFyczsKIAljaGFyMzJfdCAgICpvdXRwdXRfY2hhcnM7Ci0JdW5zaWduZWQgY2hh ciAqcDsKKwl1bnNpZ25lZCBjaGFyICpwID0gKHVuc2lnbmVkIGNoYXIgKikgVkFSREFUQV9BTlko aW5wdXQpOworCXVuc2lnbmVkIGNoYXIgKnBfZW5kID0gcCArIFZBUlNJWkVfQU5ZX0VYSERSKGlu cHV0KTsKIAl0ZXh0CSAgICpyZXN1bHQ7CiAJaW50CQkJaTsKIApAQCAtNTQ2NSwxNCArNTQ2NCwx MyBAQCB1bmljb2RlX25vcm1hbGl6ZV9mdW5jKFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogY29udmVy dCB0byBjaGFyMzJfdCAqLwogCXNpemUgPSBwZ19tYnN0cmxlbl93aXRoX2xlbihWQVJEQVRBX0FO WShpbnB1dCksIFZBUlNJWkVfQU5ZX0VYSERSKGlucHV0KSk7CiAJaW5wdXRfY2hhcnMgPSBwYWxs b2MoKHNpemUgKyAxKSAqIHNpemVvZihjaGFyMzJfdCkpOwotCXAgPSAodW5zaWduZWQgY2hhciAq KSBWQVJEQVRBX0FOWShpbnB1dCk7CiAJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKIAl7Ci0J CWlucHV0X2NoYXJzW2ldID0gdXRmOF90b191bmljb2RlKHApOworCQlpbnB1dF9jaGFyc1tpXSA9 IHV0ZjhfdG9fdW5pY29kZShwLCBwX2VuZCAtIHApOwogCQlwICs9IHBnX3V0Zl9tYmxlbihwKTsK IAl9CiAJaW5wdXRfY2hhcnNbaV0gPSAoY2hhcjMyX3QpICdcMCc7Ci0JQXNzZXJ0KChjaGFyICop IHAgPT0gVkFSREFUQV9BTlkoaW5wdXQpICsgVkFSU0laRV9BTllfRVhIRFIoaW5wdXQpKTsKKwlB c3NlcnQocCA9PSBwX2VuZCk7CiAKIAkvKiBhY3Rpb24gKi8KIAlvdXRwdXRfY2hhcnMgPSB1bmlj b2RlX25vcm1hbGl6ZShmb3JtLCBpbnB1dF9jaGFycyk7CkBAIC01NTIyLDcgKzU1MjAsOCBAQCB1 bmljb2RlX2lzX25vcm1hbGl6ZWQoUEdfRlVOQ1RJT05fQVJHUykKIAlpbnQJCQlzaXplOwogCWNo YXIzMl90ICAgKmlucHV0X2NoYXJzOwogCWNoYXIzMl90ICAgKm91dHB1dF9jaGFyczsKLQl1bnNp Z25lZCBjaGFyICpwOworCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciAqKSBWQVJE QVRBX0FOWShpbnB1dCk7CisJdW5zaWduZWQgY2hhciAqcF9lbmQgPSBwICsgVkFSU0laRV9BTllf RVhIRFIoaW5wdXQpOwogCWludAkJCWk7CiAJVW5pY29kZU5vcm1hbGl6YXRpb25RQyBxdWlja2No ZWNrOwogCWludAkJCW91dHB1dF9zaXplOwpAQCAtNTUzMywxNCArNTUzMiwxMyBAQCB1bmljb2Rl X2lzX25vcm1hbGl6ZWQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBjb252ZXJ0IHRvIGNoYXIzMl90 ICovCiAJc2l6ZSA9IHBnX21ic3RybGVuX3dpdGhfbGVuKFZBUkRBVEFfQU5ZKGlucHV0KSwgVkFS U0laRV9BTllfRVhIRFIoaW5wdXQpKTsKIAlpbnB1dF9jaGFycyA9IHBhbGxvYygoc2l6ZSArIDEp ICogc2l6ZW9mKGNoYXIzMl90KSk7Ci0JcCA9ICh1bnNpZ25lZCBjaGFyICopIFZBUkRBVEFfQU5Z KGlucHV0KTsKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogCXsKLQkJaW5wdXRfY2hhcnNb aV0gPSB1dGY4X3RvX3VuaWNvZGUocCk7CisJCWlucHV0X2NoYXJzW2ldID0gdXRmOF90b191bmlj b2RlKHAsIHBfZW5kIC0gcCk7CiAJCXAgKz0gcGdfdXRmX21ibGVuKHApOwogCX0KIAlpbnB1dF9j aGFyc1tpXSA9IChjaGFyMzJfdCkgJ1wwJzsKLQlBc3NlcnQoKGNoYXIgKikgcCA9PSBWQVJEQVRB X0FOWShpbnB1dCkgKyBWQVJTSVpFX0FOWV9FWEhEUihpbnB1dCkpOworCUFzc2VydChwID09IHBf ZW5kKTsKIAogCS8qIHF1aWNrIGNoZWNrIChzZWUgVUFYICMxNSkgKi8KIAlxdWlja2NoZWNrID0g dW5pY29kZV9pc19ub3JtYWxpemVkX3F1aWNrY2hlY2soZm9ybSwgaW5wdXRfY2hhcnMpOwpkaWZm IC0tZ2l0IGEvc3JjL2NvbW1vbi9zYXNscHJlcC5jIGIvc3JjL2NvbW1vbi9zYXNscHJlcC5jCmlu ZGV4IDEwMWU4ZDY1YTRkLi4wODM3MDI2NTRiMCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9zYXNs cHJlcC5jCisrKyBiL3NyYy9jb21tb24vc2FzbHByZXAuYwpAQCAtMTA1NSw2ICsxMDU1LDcgQEAg cGdfc2FzbHByZXAoY29uc3QgY2hhciAqaW5wdXQsIGNoYXIgKipvdXRwdXQpCiAJaW50CQkJaTsK IAlib29sCQljb250YWluc19SYW5kQUxDYXQ7CiAJdW5zaWduZWQgY2hhciAqcDsKKwl1bnNpZ25l ZCBjaGFyICpwX2VuZDsKIAljaGFyMzJfdCAgICp3cDsKIAogCS8qIEVuc3VyZSB3ZSByZXR1cm4g Km91dHB1dCBhcyBOVUxMIG9uIGZhaWx1cmUgKi8KQEAgLTEwODgsOSArMTA4OSwxMCBAQCBwZ19z YXNscHJlcChjb25zdCBjaGFyICppbnB1dCwgY2hhciAqKm91dHB1dCkKIAkJZ290byBvb207CiAK IAlwID0gKHVuc2lnbmVkIGNoYXIgKikgaW5wdXQ7CisJcF9lbmQgPSBwICsgc3RybGVuKGlucHV0 KTsKIAlmb3IgKGkgPSAwOyBpIDwgaW5wdXRfc2l6ZTsgaSsrKQogCXsKLQkJaW5wdXRfY2hhcnNb aV0gPSB1dGY4X3RvX3VuaWNvZGUocCk7CisJCWlucHV0X2NoYXJzW2ldID0gdXRmOF90b191bmlj b2RlKHAsIHBfZW5kIC0gcCk7CiAJCXAgKz0gcGdfdXRmX21ibGVuKHApOwogCX0KIAlpbnB1dF9j aGFyc1tpXSA9IChjaGFyMzJfdCkgJ1wwJzsKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdW5pY29k ZS9jYXNlX3Rlc3QuYyBiL3NyYy9jb21tb24vdW5pY29kZS9jYXNlX3Rlc3QuYwppbmRleCAwMGQ0 Zjg1ZTVhNS4uZTYzY2UyZmJlYjkgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vdW5pY29kZS9jYXNl X3Rlc3QuYworKysgYi9zcmMvY29tbW9uL3VuaWNvZGUvY2FzZV90ZXN0LmMKQEAgLTUxLDEyICs1 MSwxMyBAQCBzdGF0aWMgc2l6ZV90CiBpbml0Y2FwX3dibmV4dCh2b2lkICpzdGF0ZSkKIHsKIAlz dHJ1Y3QgV29yZEJvdW5kYXJ5U3RhdGUgKndic3RhdGUgPSAoc3RydWN0IFdvcmRCb3VuZGFyeVN0 YXRlICopIHN0YXRlOworCXVuc2lnbmVkIGNoYXIgKnN0ciA9ICh1bnNpZ25lZCBjaGFyICopIHdi c3RhdGUtPnN0cjsKIAogCXdoaWxlICh3YnN0YXRlLT5vZmZzZXQgPCB3YnN0YXRlLT5sZW4gJiYK IAkJICAgd2JzdGF0ZS0+c3RyW3dic3RhdGUtPm9mZnNldF0gIT0gJ1wwJykKIAl7Ci0JCWNoYXIz Ml90CXUgPSB1dGY4X3RvX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgd2JzdGF0ZS0+c3RyICsK LQkJCQkJCQkJCQl3YnN0YXRlLT5vZmZzZXQpOworCQljaGFyMzJfdAl1ID0gdXRmOF90b191bmlj b2RlKHN0ciArIHdic3RhdGUtPm9mZnNldCwKKwkJCQkJCQkJCQl3YnN0YXRlLT5sZW4gLSB3YnN0 YXRlLT5vZmZzZXQpOwogCQlib29sCQljdXJyX2FsbnVtID0gcGdfdV9pc2FsbnVtKHUsIHdic3Rh dGUtPnBvc2l4KTsKIAogCQlpZiAoIXdic3RhdGUtPmluaXQgfHwgY3Vycl9hbG51bSAhPSB3YnN0 YXRlLT5wcmV2X2FsbnVtKQpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi91bmljb2RlX2Nhc2UuYyBi L3NyYy9jb21tb24vdW5pY29kZV9jYXNlLmMKaW5kZXggZTVlNDk0ZGI0M2MuLmE3NjAwOTQxMDRj IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3VuaWNvZGVfY2FzZS5jCisrKyBiL3NyYy9jb21tb24v dW5pY29kZV9jYXNlLmMKQEAgLTIyMywxNSArMjIzLDE5IEBAIGNvbnZlcnRfY2FzZShjaGFyICpk c3QsIHNpemVfdCBkc3RzaXplLCBjb25zdCBjaGFyICpzcmMsIHNzaXplX3Qgc3JjbGVuLAogCUFz c2VydCgoc3RyX2Nhc2VraW5kID09IENhc2VUaXRsZSAmJiB3Ym5leHQgJiYgd2JzdGF0ZSkgfHwK IAkJICAgKHN0cl9jYXNla2luZCAhPSBDYXNlVGl0bGUgJiYgIXdibmV4dCAmJiAhd2JzdGF0ZSkp OwogCisJaWYgKHNyY2xlbiA8IDApCisJCXNyY2xlbiA9IHN0cmxlbihzcmMpOworCiAJaWYgKHN0 cl9jYXNla2luZCA9PSBDYXNlVGl0bGUpCiAJewogCQlib3VuZGFyeSA9IHdibmV4dCh3YnN0YXRl KTsKIAkJQXNzZXJ0KGJvdW5kYXJ5ID09IDApOwkvKiBzdGFydCBvZiB0ZXh0IGlzIGFsd2F5cyBh IGJvdW5kYXJ5ICovCiAJfQogCi0Jd2hpbGUgKChzcmNsZW4gPCAwIHx8IHNyY29mZiA8IHNyY2xl bikgJiYgc3JjW3NyY29mZl0gIT0gJ1wwJykKKwl3aGlsZSAoc3Jjb2ZmIDwgc3JjbGVuKQogCXsK LQkJY2hhcjMyX3QJdTEgPSB1dGY4X3RvX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgc3JjICsg c3Jjb2ZmKTsKKwkJY2hhcjMyX3QJdTEgPSB1dGY4X3RvX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIg Kikgc3JjICsgc3Jjb2ZmLAorCQkJCQkJCQkJCSBzcmNsZW4gLSBzcmNvZmYpOwogCQlpbnQJCQl1 MWxlbiA9IHVuaWNvZGVfdXRmOGxlbih1MSk7CiAJCWNoYXIzMl90CXNpbXBsZSA9IDA7CiAJCWNv bnN0IGNoYXIzMl90ICpzcGVjaWFsID0gTlVMTDsKQEAgLTMyMCw3ICszMjQsNyBAQCBjaGVja19m aW5hbF9zaWdtYShjb25zdCB1bnNpZ25lZCBjaGFyICpzdHIsIHNpemVfdCBsZW4sIHNpemVfdCBv ZmZzZXQpCiAJewogCQlpZiAoKHN0cltpXSAmIDB4ODApID09IDAgfHwgKHN0cltpXSAmIDB4QzAp ID09IDB4QzApCiAJCXsKLQkJCWNoYXIzMl90CWN1cnIgPSB1dGY4X3RvX3VuaWNvZGUoc3RyICsg aSk7CisJCQljaGFyMzJfdAljdXJyID0gdXRmOF90b191bmljb2RlKHN0ciArIGksIGxlbiAtIGkp OwogCiAJCQlpZiAocGdfdV9wcm9wX2Nhc2VfaWdub3JhYmxlKGN1cnIpKQogCQkJCWNvbnRpbnVl OwpAQCAtMzQ0LDcgKzM0OCw3IEBAIGNoZWNrX2ZpbmFsX3NpZ21hKGNvbnN0IHVuc2lnbmVkIGNo YXIgKnN0ciwgc2l6ZV90IGxlbiwgc2l6ZV90IG9mZnNldCkKIAl7CiAJCWlmICgoc3RyW2ldICYg MHg4MCkgPT0gMCB8fCAoc3RyW2ldICYgMHhDMCkgPT0gMHhDMCkKIAkJewotCQkJY2hhcjMyX3QJ Y3VyciA9IHV0ZjhfdG9fdW5pY29kZShzdHIgKyBpKTsKKwkJCWNoYXIzMl90CWN1cnIgPSB1dGY4 X3RvX3VuaWNvZGUoc3RyICsgaSwgbGVuIC0gaSk7CiAKIAkJCWlmIChwZ191X3Byb3BfY2FzZV9p Z25vcmFibGUoY3VycikpCiAJCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3dj aGFyLmMgYi9zcmMvY29tbW9uL3djaGFyLmMKaW5kZXggYTRiYzI5OTIxZGUuLmMxMTNjYWRmODE1 IDEwMDY0NAotLS0gYS9zcmMvY29tbW9uL3djaGFyLmMKKysrIGIvc3JjL2NvbW1vbi93Y2hhci5j CkBAIC02NjEsNyArNjYxLDggQEAgdWNzX3djd2lkdGgocGdfd2NoYXIgdWNzKQogc3RhdGljIGlu dAogcGdfdXRmX2RzcGxlbihjb25zdCB1bnNpZ25lZCBjaGFyICpzKQogewotCXJldHVybiB1Y3Nf d2N3aWR0aCh1dGY4X3RvX3VuaWNvZGUocykpOworCS8qIHRydXN0IHRoYXQgaW5wdXQgaXMgbm90 IGEgdHJ1bmNhdGVkIGJ5dGUgc2VxdWVuY2UgKi8KKwlyZXR1cm4gdWNzX3djd2lkdGgodXRmOF90 b191bmljb2RlKHMsIE1BWF9NVUxUSUJZVEVfQ0hBUl9MRU4pKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL21iL3BnX3djaGFyLmggYi9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5o CmluZGV4IDRkODRiZGM4MWU0Li42ZGMwZmZmMzMyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bWIvcGdfd2NoYXIuaAorKysgYi9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oCkBAIC01NTgsMjIg KzU1OCwyMCBAQCBzdXJyb2dhdGVfcGFpcl90b19jb2RlcG9pbnQoY2hhcjE2X3QgZmlyc3QsIGNo YXIxNl90IHNlY29uZCkKIC8qCiAgKiBDb252ZXJ0IGEgVVRGLTggY2hhcmFjdGVyIHRvIGEgVW5p Y29kZSBjb2RlIHBvaW50LgogICogVGhpcyBpcyBhIG9uZS1jaGFyYWN0ZXIgdmVyc2lvbiBvZiBw Z191dGYyd2NoYXJfd2l0aF9sZW4uCi0gKgotICogTm8gZXJyb3IgY2hlY2tzIGhlcmUsIGMgbXVz dCBwb2ludCB0byBhIGxvbmctZW5vdWdoIHN0cmluZy4KICAqLwogc3RhdGljIGlubGluZSBjaGFy MzJfdAotdXRmOF90b191bmljb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmMpCit1dGY4X3RvX3Vu aWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciAqYywgc2l6ZV90IGxlbikKIHsKLQlpZiAoKCpjICYg MHg4MCkgPT0gMCkKKwlpZiAoKCpjICYgMHg4MCkgPT0gMCAmJiBsZW4gPj0gMSkKIAkJcmV0dXJu IChjaGFyMzJfdCkgY1swXTsKLQllbHNlIGlmICgoKmMgJiAweGUwKSA9PSAweGMwKQorCWVsc2Ug aWYgKCgqYyAmIDB4ZTApID09IDB4YzAgJiYgbGVuID49IDIpCiAJCXJldHVybiAoY2hhcjMyX3Qp ICgoKGNbMF0gJiAweDFmKSA8PCA2KSB8CiAJCQkJCQkgICAoY1sxXSAmIDB4M2YpKTsKLQllbHNl IGlmICgoKmMgJiAweGYwKSA9PSAweGUwKQorCWVsc2UgaWYgKCgqYyAmIDB4ZjApID09IDB4ZTAg JiYgbGVuID49IDMpCiAJCXJldHVybiAoY2hhcjMyX3QpICgoKGNbMF0gJiAweDBmKSA8PCAxMikg fAogCQkJCQkJICAgKChjWzFdICYgMHgzZikgPDwgNikgfAogCQkJCQkJICAgKGNbMl0gJiAweDNm KSk7Ci0JZWxzZSBpZiAoKCpjICYgMHhmOCkgPT0gMHhmMCkKKwllbHNlIGlmICgoKmMgJiAweGY4 KSA9PSAweGYwICYmIGxlbiA+PSA0KQogCQlyZXR1cm4gKGNoYXIzMl90KSAoKChjWzBdICYgMHgw NykgPDwgMTgpIHwKIAkJCQkJCSAgICgoY1sxXSAmIDB4M2YpIDw8IDEyKSB8CiAJCQkJCQkgICAo KGNbMl0gJiAweDNmKSA8PCA2KSB8CkBAIC02NzYsOCArNjc0LDYgQEAgZXh0ZXJuIGludAlwZ192 YWxpZF9zZXJ2ZXJfZW5jb2RpbmcoY29uc3QgY2hhciAqbmFtZSk7CiBleHRlcm4gYm9vbCBpc19l bmNvZGluZ19zdXBwb3J0ZWRfYnlfaWN1KGludCBlbmNvZGluZyk7CiBleHRlcm4gY29uc3QgY2hh ciAqZ2V0X2VuY29kaW5nX25hbWVfZm9yX2ljdShpbnQgZW5jb2RpbmcpOwogCi1leHRlcm4gdW5z aWduZWQgY2hhciAqdW5pY29kZV90b191dGY4KGNoYXIzMl90IGMsIHVuc2lnbmVkIGNoYXIgKnV0 ZjhzdHJpbmcpOwotZXh0ZXJuIGNoYXIzMl90IHV0ZjhfdG9fdW5pY29kZShjb25zdCB1bnNpZ25l ZCBjaGFyICpjKTsKIGV4dGVybiBib29sIHBnX3V0ZjhfaXNsZWdhbChjb25zdCB1bnNpZ25lZCBj aGFyICpzb3VyY2UsIGludCBsZW5ndGgpOwogZXh0ZXJuIGludAlwZ191dGZfbWJsZW4oY29uc3Qg dW5zaWduZWQgY2hhciAqcyk7CiBleHRlcm4gaW50CXBnX211bGVfbWJsZW4oY29uc3QgdW5zaWdu ZWQgY2hhciAqcyk7Ci0tIAoyLjQzLjAKCg== --=-JE4+arYwbM3tVQ315FOs--