Bug#963699: Fwd: PostgreSQL: WolfSSL support
Felix Lechner <[email protected]> Fri, 26 Jun 2020 15:33:47 -0700
| Newsgroups | gmane.linux.debian.devel.bugs.general,gmane.comp.db.postgresql.devel.general |
|---|---|
| Message-ID | <CAFHYt551skdkg+9dze2EGY_-svM_qL+5BaxoK1vwB8D3HmZfGQ@mail.gmail.com> |
--0000000000009e902d05a9044f91
Content-Type: text/plain; charset="UTF-8"
Hi,
Is anyone here interested in helping to evaluate an experimental patch
for wolfSSL support?
Attached please find a WIP patch for wolfSSL support in postgresql-12.
As a shortcut, you may find this merge request helpful:
https://salsa.debian.org/postgresql/postgresql/-/merge_requests/4
I used Debian stable (buster) with backports enabled and preferred.
The wolfssl.patch in d/patches builds and completes all tests, as long
as libwolfssl-dev version 4.4.0+dfsg-2~bpo10+1 is installed and
patched with the included libwolfssl-dev-rename-types.patch.
You can do so as root with:
cd /usr/include/wolfssl
patch -p1 < libwolfssl-dev-rename-types.patch
Patching the library was easier than resolving type conflicts for
twenty-five files. An attempt was made but resulted in failing tests.
The offending types are called 'ValidateDate' and 'Hash'. They do not
seem to be part of the wolfSSL ABI.
The patch operates with the following caveats:
1. DH parameters are not currently loaded from a database-internal PEM
certificate. The function OBJ_find_sigid_algs is not available. The
security implications should be discussed with a cryptographer.
2. The contrib module pgcrypto was not compiled with OpenSSL support
and currently offers only native algorithms. wolfSSL's compatibility
support for OpenSSL's EVP interface is incomplete and offers only a
few algorithms. The module should work directly with wolfCrypt.
3. The error reporting in wolfSSL_set_fd seems to be different from
OpenSSL. I could not locate SSLerr and decided to return BAD_FUNC_ARG.
That is what the routine being mimicked does in wolfSSL. If you see an
SSL connection error, it may be wise to simply remove these two
statements in src/interfaces/libpq/fe-secure-openssl.c:
ret = BAD_FUNC_ARG;
Unsupported functions or features can probably be replaced with
wolfSSL's or wolfCrypt's native interfaces. The company may be happy
to assist.
The patch includes modifications toward missing goals. Some parts
modify code, for example in util/pgpcrypto, that is not actually called.
Please note that the wolfSSL team prefers the styling of their brand
to be capitalized as recorded in this sentence. Thank you!
Kind regards
Felix Lechner
--0000000000009e902d05a9044f91
Content-Type: application/x-patch; name="wolfssl.patch"
Content-Disposition: attachment; filename="wolfssl.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_kbwkivug0>
X-Attachment-Id: f_kbwkivug0
dW5jaGFuZ2VkOgotLS0gYS9jb25maWd1cmUuaW4KKysrIGIvY29uZmlndXJlLmluCkBAIC0xMjEx
LDcgKzEyMTEsNyBAQCBmaQogCiBpZiB0ZXN0ICIkd2l0aF9nc3NhcGkiID0geWVzIDsgdGhlbgog
ICBpZiB0ZXN0ICIkUE9SVE5BTUUiICE9ICJ3aW4zMiI7IHRoZW4KLSAgICBBQ19TRUFSQ0hfTElC
Uyhnc3NfaW5pdF9zZWNfY29udGV4dCwgW2dzc2FwaV9rcmI1IGdzcyAnZ3NzYXBpIC1sa3JiNSAt
bGNyeXB0byddLCBbXSwKKyAgICBBQ19TRUFSQ0hfTElCUyhnc3NfaW5pdF9zZWNfY29udGV4dCwg
W2dzc2FwaV9rcmI1IGdzcyAnZ3NzYXBpIC1sa3JiNSAtbHdvbGZzc2wnXSwgW10sCiAgICAgICAg
ICAgICAgICAgICAgW0FDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgZnVuY3Rpb24gJ2dzc19p
bml0X3NlY19jb250ZXh0JyByZXF1aXJlZCBmb3IgR1NTQVBJXSldKQogICBlbHNlCiAgICAgTElC
Uz0iJExJQlMgLWxnc3NhcGkzMiIKQEAgLTEyMjEsMjkgKzEyMjEsMzUgQEAgZmkKIGlmIHRlc3Qg
IiR3aXRoX29wZW5zc2wiID0geWVzIDsgdGhlbgogICBkbmwgT3JkZXIgbWF0dGVycyEKICAgaWYg
dGVzdCAiJFBPUlROQU1FIiAhPSAid2luMzIiOyB0aGVuCi0gICAgIEFDX0NIRUNLX0xJQihjcnlw
dG8sIENSWVBUT19uZXdfZXhfZGF0YSwgW10sIFtBQ19NU0dfRVJST1IoW2xpYnJhcnkgJ2NyeXB0
bycgaXMgcmVxdWlyZWQgZm9yIE9wZW5TU0xdKV0pCi0gICAgIEFDX0NIRUNLX0xJQihzc2wsICAg
IFNTTF9uZXcsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICdzc2wnIGlzIHJlcXVpcmVkIGZv
ciBPcGVuU1NMXSldKQorICAgICBBQ19DSEVDS19MSUIod29sZnNzbCwgd29sZlNTTF9uZXcsIFtd
LCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICd3b2xmc3NsJyBpcyByZXF1aXJlZCBmb3IgT3BlblNT
TF0pXSkKICAgZWxzZQotICAgICBBQ19TRUFSQ0hfTElCUyhDUllQVE9fbmV3X2V4X2RhdGEsIFtl
YXkzMiBjcnlwdG9dLCBbXSwgW0FDX01TR19FUlJPUihbbGlicmFyeSAnZWF5MzInIG9yICdjcnlw
dG8nIGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQotICAgICBBQ19TRUFSQ0hfTElCUyhTU0xf
bmV3LCBbc3NsZWF5MzIgc3NsXSwgW10sIFtBQ19NU0dfRVJST1IoW2xpYnJhcnkgJ3NzbGVheTMy
JyBvciAnc3NsJyBpcyByZXF1aXJlZCBmb3IgT3BlblNTTF0pXSkKKyAgICAgQUNfU0VBUkNIX0xJ
QlMod29sZlNTTF9uZXcsIFt3b2xmc3NsXSwgW10sIFtBQ19NU0dfRVJST1IoW2xpYnJhcnkgJ3dv
bGZzc2wnIGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQogICBmaQotICBBQ19DSEVDS19GVU5D
UyhbU1NMX2dldF9jdXJyZW50X2NvbXByZXNzaW9uIFg1MDlfZ2V0X3NpZ25hdHVyZV9uaWRdKQor
ICAjIHN1cHBvcnQgZm9yIE5JRHMgaXMgaW5jb21wbGV0ZTsgbGFjayBPQkpfZmluZF9zaWdpZF9h
bGdzCisgICNBQ19ERUZJTkUoSEFWRV9YNTA5X0dFVF9TSUdOQVRVUkVfTklELCAxLCBbRGVmaW5l
IHRvIDEgaWYgeW91IGhhdmUgWDUwOV9nZXRfc2lnbmF0dXJlX25pZCgpXSkKKwogICAjIEZ1bmN0
aW9ucyBpbnRyb2R1Y2VkIGluIE9wZW5TU0wgMS4xLjAuIFdlIHVzZWQgdG8gY2hlY2sgZm9yCiAg
ICMgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgYnV0IHRoYXQgZGlkbid0IHdvcmsgd2l0aCAxLjEu
MCwgYmVjYXVzZSBMaWJyZVNTTAogICAjIGRlZmluZXMgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiB0
byBjbGFpbSB2ZXJzaW9uIDIuMC4wLCBldmVuIHRob3VnaCBpdAogICAjIGRvZXNuJ3QgaGF2ZSB0
aGVzZSBPcGVuU1NMIDEuMS4wIGZ1bmN0aW9ucy4gU28gY2hlY2sgZm9yIGluZGl2aWR1YWwKICAg
IyBmdW5jdGlvbnMuCi0gIEFDX0NIRUNLX0ZVTkNTKFtPUEVOU1NMX2luaXRfc3NsIEJJT19nZXRf
ZGF0YSBCSU9fbWV0aF9uZXcgQVNOMV9TVFJJTkdfZ2V0MF9kYXRhXSkKKyAgQUNfREVGSU5FKEhB
VkVfQklPX0dFVF9EQVRBLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgQklPX2dldF9kYXRh
KCldKQorCisgICMgc3VwcG9ydCBmb3IgQklPX21ldGhfbmV3IGluY29tcGxldGU7IGxhY2sgQklP
X21ldGhfZ2V0XyoKKyAgI0FDX0RFRklORShIQVZFX0JJT19NRVRIX05FVywgMSwgW0RlZmluZSB0
byAxIGlmIHlvdSBoYXZlIEJJT19tZXRoX25ldygpXSkKKyAgQUNfREVGSU5FKEhBVkVfQVNOMV9T
VFJJTkdfR0VUMF9EQVRBLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgQVNOMV9TVFJJTkdf
Z2V0MF9kYXRhKCldKQogICAjIE9wZW5TU0wgdmVyc2lvbnMgYmVmb3JlIDEuMS4wIHJlcXVpcmVk
IHNldHRpbmcgY2FsbGJhY2sgZnVuY3Rpb25zLCBmb3IKICAgIyB0aHJlYWQtc2FmZXR5LiBJbiAx
LjEuMCwgaXQncyBubyBsb25nZXIgcmVxdWlyZWQsIGFuZCBDUllQVE9fbG9jaygpCiAgICMgZnVu
Y3Rpb24gd2FzIHJlbW92ZWQuCi0gIEFDX0NIRUNLX0ZVTkNTKFtDUllQVE9fbG9ja10pCisgICMg
d29sZlNTTCBoYXMgQ1JZUFRPX2xvY2sgYnV0IGRvZXMgbm90IG5lZWQgaXQ7IGxhY2tzIENSWVBU
T19nZXRfbG9ja2luZ19jYWxsYmFjaworICAjIEFDX0RFRklORShIQVZFX0NSWVBUT19MT0NLLCAx
LCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgQ1JZUFRPX2xvY2soKV0pCiAgICMgU1NMX2NsZWFy
X29wdGlvbnMgaXMgYSBtYWNybyBpbiBPcGVuU1NMIGZyb20gMC45LjggdG8gMS4wLjIsIGFuZAog
ICAjIGEgZnVuY3Rpb24gZnJvbSAxLjEuMCBvbndhcmRzIHNvIHdlIGNhbm5vdCB1c2UgQUNfQ0hF
Q0tfRlVOQ1MuCiAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgU1NMX2NsZWFyX29wdGlvbnNdLCBhY19j
dl9mdW5jX3NzbF9jbGVhcl9vcHRpb25zLAogICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJP
R1JBTShbCi0gICNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgotICAjaW5jbHVkZSA8b3BlbnNzbC9i
aW8uaD4KKyAgI2luY2x1ZGUgPHdvbGZzc2wvb3B0aW9ucy5oPgorICAjaW5jbHVkZSA8d29sZnNz
bC9vcGVuc3NsL3NzbC5oPgorICAjaW5jbHVkZSA8d29sZnNzbC9vcGVuc3NsL2Jpby5oPgogICBT
U0wgKnNzbDsKICAgXSwKICAgW3JldHVybiBTU0xfY2xlYXJfb3B0aW9ucyhzc2wsIDApO10pXSwK
QEAgLTE0MjgsOCArMTQzNCw4IEBAIGlmIHRlc3QgIiR3aXRoX2dzc2FwaSIgPSB5ZXMgOyB0aGVu
CiBmaQogCiBpZiB0ZXN0ICIkd2l0aF9vcGVuc3NsIiA9IHllcyA7IHRoZW4KLSAgQUNfQ0hFQ0tf
SEVBREVSKG9wZW5zc2wvc3NsLmgsIFtdLCBbQUNfTVNHX0VSUk9SKFtoZWFkZXIgZmlsZSA8b3Bl
bnNzbC9zc2wuaD4gaXMgcmVxdWlyZWQgZm9yIE9wZW5TU0xdKV0pCi0gIEFDX0NIRUNLX0hFQURF
UihvcGVuc3NsL2Vyci5oLCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUgPG9wZW5zc2wv
ZXJyLmg+IGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQorICBBQ19DSEVDS19IRUFERVIod29s
ZnNzbC9vcGVuc3NsL3NzbC5oLCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUgPG9wZW5z
c2wvc3NsLmg+IGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQorICBBQ19DSEVDS19IRUFERVIo
d29sZnNzbC9vcGVuc3NsL2Vyci5oLCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUgPG9w
ZW5zc2wvZXJyLmg+IGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQogZmkKIAogaWYgdGVzdCAi
JHdpdGhfcGFtIiA9IHllcyA7IHRoZW4KLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL3NoYTIuaAor
KysgYi9zcmMvaW5jbHVkZS9jb21tb24vc2hhMi5oCkBAIC01MSw3ICs1MSw5IEBACiAjZGVmaW5l
IF9QR19TSEEyX0hfCiAKICNpZmRlZiBVU0VfT1BFTlNTTAotI2luY2x1ZGUgPG9wZW5zc2wvc2hh
Lmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcHRpb25zLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcGVu
c3NsL3NzbC5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9zaGEuaD4KICNlbmRpZgogCiAv
KioqIFNIQTIyNC8yNTYvMzg0LzUxMiBWYXJpb3VzIExlbmd0aCBEZWZpbml0aW9ucyAqKioqKioq
KioqKioqKioqKioqKioqKi8KLS0tIGEvc3JjL2NvbW1vbi9zaGEyX29wZW5zc2wuYworKysgYi9z
cmMvY29tbW9uL3NoYTJfb3BlbnNzbC5jCkBAIC0yMCw3ICsyMCw4IEBACiAjaW5jbHVkZSAicG9z
dGdyZXNfZmUuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKyNpbmNsdWRl
IDx3b2xmc3NsL29wdGlvbnMuaD4KKyNpbmNsdWRlIDx3b2xmc3NsL29wZW5zc2wvc2hhLmg+CiAK
ICNpbmNsdWRlICJjb21tb24vc2hhMi5oIgogCi0tLSBhL3NyYy9wb3J0L3BnX3N0cm9uZ19yYW5k
b20uYworKysgYi9zcmMvcG9ydC9wZ19zdHJvbmdfcmFuZG9tLmMKQEAgLTI1LDcgKzI1LDggQEAK
ICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCiAjaWZkZWYgVVNFX09QRU5TU0wKLSNpbmNsdWRlIDxv
cGVuc3NsL3JhbmQuaD4KKyNpbmNsdWRlIDx3b2xmc3NsL29wdGlvbnMuaD4KKyNpbmNsdWRlIDx3
b2xmc3NsL29wZW5zc2wvcmFuZC5oPgogI2VuZGlmCiAjaWZkZWYgV0lOMzIKICNpbmNsdWRlIDx3
aW5jcnlwdC5oPgotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCisrKyBiL3NyYy9p
bmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgKQEAgLTIwLDggKzIwLDkgQEAKIAogI2luY2x1ZGUgPHN5
cy90aW1lLmg+CiAjaWZkZWYgVVNFX09QRU5TU0wKLSNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgot
I2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcHRpb25zLmg+Cisj
aW5jbHVkZSA8d29sZnNzbC9vcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNz
bC9lcnIuaD4KICNlbmRpZgogI2lmZGVmIEhBVkVfTkVUSU5FVF9UQ1BfSAogI2luY2x1ZGUgPG5l
dGluZXQvdGNwLmg+Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMK
KysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYwpAQCAtMjksMTEgKzI5
LDEzIEBACiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG9wZW5z
c2wvc3NsLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgotI2luY2x1ZGUgPG9wZW5zc2wvY29u
Zi5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3B0aW9ucy5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3Bl
bnNzbC9zc2wuaD4KKyNpbmNsdWRlIDx3b2xmc3NsL29wZW5zc2wvZGguaD4KKyNpbmNsdWRlIDx3
b2xmc3NsL29wZW5zc2wvY29uZi5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9iaW8uaD4K
ICNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICi0jaW5jbHVkZSA8b3BlbnNzbC9lYy5oPgorI2luY2x1
ZGUgPHdvbGZzc2wvb3BlbnNzbC9lYy5oPgogI2VuZGlmCiAKICNpbmNsdWRlICJsaWJwcS9saWJw
cS5oIgpAQCAtNTAsNyArNTIsNiBAQCBzdGF0aWMgaW50CW15X3NvY2tfd3JpdGUoQklPICpoLCBj
b25zdCBjCiBzdGF0aWMgQklPX01FVEhPRCAqbXlfQklPX3Nfc29ja2V0KHZvaWQpOwogc3RhdGlj
IGludAlteV9TU0xfc2V0X2ZkKFBvcnQgKnBvcnQsIGludCBmZCk7CiAKLXN0YXRpYyBESCAgKmxv
YWRfZGhfZmlsZShjaGFyICpmaWxlbmFtZSwgYm9vbCBpc1NlcnZlclN0YXJ0KTsKIHN0YXRpYyBE
SCAgKmxvYWRfZGhfYnVmZmVyKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKIHN0YXRpYyBpbnQJc3Ns
X2V4dGVybmFsX3Bhc3N3ZF9jYihjaGFyICpidWYsIGludCBzaXplLCBpbnQgcndmbGFnLCB2b2lk
ICp1c2VyZGF0YSk7CiBzdGF0aWMgaW50CWR1bW15X3NzbF9wYXNzd2RfY2IoY2hhciAqYnVmLCBp
bnQgc2l6ZSwgaW50IHJ3ZmxhZywgdm9pZCAqdXNlcmRhdGEpOwpAQCAtNzQxLDcgKzc0Miw3IEBA
IG15X0JJT19zX3NvY2tldCh2b2lkKQogI2lmZGVmIEhBVkVfQklPX01FVEhfTkVXCiAJCWludAkJ
CW15X2Jpb19pbmRleDsKIAotCQlteV9iaW9faW5kZXggPSBCSU9fZ2V0X25ld19pbmRleCgpOwor
CQlteV9iaW9faW5kZXggPSAtMTsKIAkJaWYgKG15X2Jpb19pbmRleCA9PSAtMSkKIAkJCXJldHVy
biBOVUxMOwogCQlteV9iaW9fbWV0aG9kcyA9IEJJT19tZXRoX25ldyhteV9iaW9faW5kZXgsICJQ
b3N0Z3JlU1FMIGJhY2tlbmQgc29ja2V0Iik7CkBAIC03NjUsOCArNzY2LDggQEAgbXlfQklPX3Nf
c29ja2V0KHZvaWQpCiAJCWlmICghbXlfYmlvX21ldGhvZHMpCiAJCQlyZXR1cm4gTlVMTDsKIAkJ
bWVtY3B5KG15X2Jpb19tZXRob2RzLCBiaW9tLCBzaXplb2YoQklPX01FVEhPRCkpOwotCQlteV9i
aW9fbWV0aG9kcy0+YnJlYWQgPSBteV9zb2NrX3JlYWQ7Ci0JCW15X2Jpb19tZXRob2RzLT5id3Jp
dGUgPSBteV9zb2NrX3dyaXRlOworCQlteV9iaW9fbWV0aG9kcy0+cmVhZENiID0gbXlfc29ja19y
ZWFkOworCQlteV9iaW9fbWV0aG9kcy0+d3JpdGVDYiA9IG15X3NvY2tfd3JpdGU7CiAjZW5kaWYK
IAl9CiAJcmV0dXJuIG15X2Jpb19tZXRob2RzOwpAQCAtNzgzLDE0ICs3ODQsMTIgQEAgbXlfU1NM
X3NldF9mZChQb3J0ICpwb3J0LCBpbnQgZmQpCiAJYmlvX21ldGhvZCA9IG15X0JJT19zX3NvY2tl
dCgpOwogCWlmIChiaW9fbWV0aG9kID09IE5VTEwpCiAJewotCQlTU0xlcnIoU1NMX0ZfU1NMX1NF
VF9GRCwgRVJSX1JfQlVGX0xJQik7CiAJCWdvdG8gZXJyOwogCX0KIAliaW8gPSBCSU9fbmV3KGJp
b19tZXRob2QpOwogCiAJaWYgKGJpbyA9PSBOVUxMKQogCXsKLQkJU1NMZXJyKFNTTF9GX1NTTF9T
RVRfRkQsIEVSUl9SX0JVRl9MSUIpOwogCQlnb3RvIGVycjsKIAl9CiAJQklPX3NldF9kYXRhKGJp
bywgcG9ydCk7CkBAIC04MjYsOCArODI1LDggQEAgbG9hZF9kaF9maWxlKGNoYXIgKmZpbGVuYW1l
LCBib29sIGlzU2VydgogCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlkaCA9IFBFTV9yZWFkX0RIcGFy
YW1zKGZwLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAlGcmVlRmlsZShmcCk7CisJcmV0dXJuIE5VTEw7
CiAKIAlpZiAoZGggPT0gTlVMTCkKIAl7Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZm9y
a19wcm9jZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9mb3JrX3Byb2Nlc3MuYwpA
QCAtMTgsNyArMTgsOCBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjaWZkZWYgVVNFX09QRU5TU0wKLSNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KKyNpbmNs
dWRlIDx3b2xmc3NsL29wdGlvbnMuaD4KKyNpbmNsdWRlIDx3b2xmc3NsL29wZW5zc2wvcmFuZC5o
PgogI2VuZGlmCiAKICNpZm5kZWYgV0lOMzIKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGli
cHEtaW50LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTcyLDgg
KzcyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICNlbmRpZgkJCQkJCQkvKiBFTkFCTEVfU1NQSSAqLwog
CiAjaWZkZWYgVVNFX09QRU5TU0wKLSNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgotI2luY2x1ZGUg
PG9wZW5zc2wvZXJyLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcHRpb25zLmg+CisjaW5jbHVkZSA8
d29sZnNzbC9vcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9lcnIuaD4K
IAogI2lmbmRlZiBPUEVOU1NMX05PX0VOR0lORQogI2RlZmluZSBVU0VfU1NMX0VOR0lORQotLS0g
YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3NyYy9pbnRl
cmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKQEAgLTU0LDEyICs1NCwxMyBAQAogI2Vu
ZGlmCiAjZW5kaWYKIAotI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+Ci0jaW5jbHVkZSA8b3BlbnNz
bC9jb25mLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcHRpb25zLmg+CisjaW5jbHVkZSA8d29sZnNz
bC9vcGVuc3NsL3NzbC5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9jb25mLmg+CiAjaWZk
ZWYgVVNFX1NTTF9FTkdJTkUKLSNpbmNsdWRlIDxvcGVuc3NsL2VuZ2luZS5oPgorI2luY2x1ZGUg
PHdvbGZzc2wvb3BlbnNzbC9lbmdpbmUuaD4KICNlbmRpZgotI2luY2x1ZGUgPG9wZW5zc2wveDUw
OXYzLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcGVuc3NsL3g1MDl2My5oPgogCiBzdGF0aWMgaW50
CXZlcmlmeV9jYihpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpOwogc3RhdGljIGludAlvcGVu
c3NsX3ZlcmlmeV9wZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0ZV9uYW1lKFBHY29ubiAqY29u
biwKQEAgLTE1NTcsOCArMTU1OCw4IEBAIG15X0JJT19zX3NvY2tldCh2b2lkKQogCQlpZiAoIW15
X2Jpb19tZXRob2RzKQogCQkJcmV0dXJuIE5VTEw7CiAJCW1lbWNweShteV9iaW9fbWV0aG9kcywg
YmlvbSwgc2l6ZW9mKEJJT19NRVRIT0QpKTsKLQkJbXlfYmlvX21ldGhvZHMtPmJyZWFkID0gbXlf
c29ja19yZWFkOwotCQlteV9iaW9fbWV0aG9kcy0+YndyaXRlID0gbXlfc29ja193cml0ZTsKKwkJ
bXlfYmlvX21ldGhvZHMtPnJlYWRDYiA9IG15X3NvY2tfcmVhZDsKKwkJbXlfYmlvX21ldGhvZHMt
PndyaXRlQ2IgPSBteV9zb2NrX3dyaXRlOwogI2VuZGlmCiAJfQogCXJldHVybiBteV9iaW9fbWV0
aG9kczsKQEAgLTE1NzUsMTMgKzE1NzYsMTMgQEAgbXlfU1NMX3NldF9mZChQR2Nvbm4gKmNvbm4s
IGludCBmZCkKIAliaW9fbWV0aG9kID0gbXlfQklPX3Nfc29ja2V0KCk7CiAJaWYgKGJpb19tZXRo
b2QgPT0gTlVMTCkKIAl7Ci0JCVNTTGVycihTU0xfRl9TU0xfU0VUX0ZELCBFUlJfUl9CVUZfTElC
KTsKKwkJcmV0ID0gQkFEX0ZVTkNfQVJHOwogCQlnb3RvIGVycjsKIAl9CiAJYmlvID0gQklPX25l
dyhiaW9fbWV0aG9kKTsKIAlpZiAoYmlvID09IE5VTEwpCiAJewotCQlTU0xlcnIoU1NMX0ZfU1NM
X1NFVF9GRCwgRVJSX1JfQlVGX0xJQik7CisJCXJldCA9IEJBRF9GVU5DX0FSRzsKIAkJZ290byBl
cnI7CiAJfQogCUJJT19zZXRfZGF0YShiaW8sIGNvbm4pOwotLS0gYS9jb250cmliL3BnY3J5cHRv
L29wZW5zc2wuYworKysgYi9jb250cmliL3BnY3J5cHRvL29wZW5zc2wuYwpAQCAtMzMsOSArMzMs
MTAgQEAKIAogI2luY2x1ZGUgInB4LmgiCiAKLSNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgotI2lu
Y2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisjaW5jbHVk
ZSA8d29sZnNzbC9vcHRpb25zLmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcGVuc3NsL2V2cC5oPgor
I2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9lcnIuaD4KKyNpbmNsdWRlIDx3b2xmc3NsL29wZW5z
c2wvcmFuZC5oPgogCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls
cy9yZXNvd25lci5oIgpAQCAtNjMzLDE2ICs2MzQsMTAgQEAgb3NzbF9hZXNfY2JjX2luaXQoUFhf
Q2lwaGVyICpjLCBjb25zdCB1aQogICovCiAKIHN0YXRpYyBQWF9BbGlhcyBvc3NsX2FsaWFzZXNb
XSA9IHsKLQl7ImJmIiwgImJmLWNiYyJ9LAotCXsiYmxvd2Zpc2giLCAiYmYtY2JjIn0sCi0JeyJi
bG93ZmlzaC1jYmMiLCAiYmYtY2JjIn0sCi0JeyJibG93ZmlzaC1lY2IiLCAiYmYtZWNiIn0sCi0J
eyJibG93ZmlzaC1jZmIiLCAiYmYtY2ZiIn0sCiAJeyJkZXMiLCAiZGVzLWNiYyJ9LAogCXsiM2Rl
cyIsICJkZXMzLWNiYyJ9LAogCXsiM2Rlcy1lY2IiLCAiZGVzMy1lY2IifSwKIAl7IjNkZXMtY2Jj
IiwgImRlczMtY2JjIn0sCi0JeyJjYXN0NSIsICJjYXN0NS1jYmMifSwKIAl7ImFlcyIsICJhZXMt
Y2JjIn0sCiAJeyJyaWpuZGFlbCIsICJhZXMtY2JjIn0sCiAJeyJyaWpuZGFlbC1jYmMiLCAiYWVz
LWNiYyJ9LApAQCAtNjUwLDI0ICs2NDUsNiBAQCBzdGF0aWMgUFhfQWxpYXMgb3NzbF9hbGlhc2Vz
W10gPSB7CiAJe05VTEx9CiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9zc2xfY2lwaGVyIG9z
c2xfYmZfY2JjID0gewotCWJmX2luaXQsCi0JRVZQX2JmX2NiYywKLQk2NCAvIDgsIDQ0OCAvIDgK
LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3NzbF9jaXBoZXIgb3NzbF9iZl9lY2IgPSB7Ci0J
YmZfaW5pdCwKLQlFVlBfYmZfZWNiLAotCTY0IC8gOCwgNDQ4IC8gOAotfTsKLQotc3RhdGljIGNv
bnN0IHN0cnVjdCBvc3NsX2NpcGhlciBvc3NsX2JmX2NmYiA9IHsKLQliZl9pbml0LAotCUVWUF9i
Zl9jZmIsCi0JNjQgLyA4LCA0NDggLyA4Ci19OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9zc2xf
Y2lwaGVyIG9zc2xfZGVzX2VjYiA9IHsKIAlvc3NsX2Rlc19pbml0LAogCUVWUF9kZXNfZWNiLApA
QCAtNjkyLDE4ICs2NjksNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9zc2xfY2lwaGVyIG9zc2xf
ZGVzCiAJNjQgLyA4LCAxOTIgLyA4CiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IG9zc2xfY2lw
aGVyIG9zc2xfY2FzdF9lY2IgPSB7Ci0Jb3NzbF9jYXN0X2luaXQsCi0JRVZQX2Nhc3Q1X2VjYiwK
LQk2NCAvIDgsIDEyOCAvIDgKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3NzbF9jaXBoZXIg
b3NzbF9jYXN0X2NiYyA9IHsKLQlvc3NsX2Nhc3RfaW5pdCwKLQlFVlBfY2FzdDVfY2JjLAotCTY0
IC8gOCwgMTI4IC8gOAotfTsKLQogc3RhdGljIGNvbnN0IHN0cnVjdCBvc3NsX2NpcGhlciBvc3Ns
X2Flc19lY2IgPSB7CiAJb3NzbF9hZXNfZWNiX2luaXQsCiAJTlVMTCwJCQkJCQkvKiBFVlBfYWVz
X1hYWF9lY2IoKSwgZGV0ZXJtaW5lZCBpbiBpbml0CkBAIC03MjgsMTUgKzY5MywxMCBAQCBzdHJ1
Y3Qgb3NzbF9jaXBoZXJfbG9va3VwCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9zc2xfY2lw
aGVyX2xvb2t1cCBvc3NsX2NpcGhlcl90eXBlc1tdID0gewotCXsiYmYtY2JjIiwgJm9zc2xfYmZf
Y2JjfSwKLQl7ImJmLWVjYiIsICZvc3NsX2JmX2VjYn0sCi0JeyJiZi1jZmIiLCAmb3NzbF9iZl9j
ZmJ9LAogCXsiZGVzLWVjYiIsICZvc3NsX2Rlc19lY2J9LAogCXsiZGVzLWNiYyIsICZvc3NsX2Rl
c19jYmN9LAogCXsiZGVzMy1lY2IiLCAmb3NzbF9kZXMzX2VjYn0sCiAJeyJkZXMzLWNiYyIsICZv
c3NsX2RlczNfY2JjfSwKLQl7ImNhc3Q1LWVjYiIsICZvc3NsX2Nhc3RfZWNifSwKLQl7ImNhc3Q1
LWNiYyIsICZvc3NsX2Nhc3RfY2JjfSwKIAl7ImFlcy1lY2IiLCAmb3NzbF9hZXNfZWNifSwKIAl7
ImFlcy1jYmMiLCAmb3NzbF9hZXNfY2JjfSwKIAl7TlVMTH0KLS0tIGEvY29udHJpYi9wZ2NyeXB0
by9wZ3AtbXBpLW9wZW5zc2wuYworKysgYi9jb250cmliL3BnY3J5cHRvL3BncC1tcGktb3BlbnNz
bC5jCkBAIC0zMCw3ICszMCw4IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCi0jaW5j
bHVkZSA8b3BlbnNzbC9ibi5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3B0aW9ucy5oPgorI2luY2x1
ZGUgPHdvbGZzc2wvb3BlbnNzbC9ibi5oPgogCiAjaW5jbHVkZSAicHguaCIKICNpbmNsdWRlICJw
Z3AuaCIKLS0tIGEvY29udHJpYi9zc2xpbmZvL3NzbGluZm8uYworKysgYi9jb250cmliL3NzbGlu
Zm8vc3NsaW5mby5jCkBAIC05LDkgKzksMTAgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK
LSNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgot
I2luY2x1ZGUgPG9wZW5zc2wvYXNuMS5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3B0aW9ucy5oPgor
I2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC94NTA5Lmg+CisjaW5jbHVkZSA8d29sZnNzbC9vcGVu
c3NsL3g1MDl2My5oPgorI2luY2x1ZGUgPHdvbGZzc2wvb3BlbnNzbC9hc24xLmg+CiAKICNpbmNs
dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgotLS0gYS9j
b250cmliL3BnY3J5cHRvL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUK
QEAgLTEwLDggKzEwLDggQEAgT1NTTF9URVNUUyA9IHNoYTIgZGVzIDNkZXMgY2FzdDUKIFpMSUJf
VFNUID0gcGdwLWNvbXByZXNzaW9uCiBaTElCX09GRl9UU1QgPSBwZ3AtemxpYi1ESVNBQkxFRAog
Ci1DRl9TUkNTID0gJChpZiAkKHN1YnN0IG5vLCwkKHdpdGhfb3BlbnNzbCkpLCAkKE9TU0xfU1JD
UyksICQoSU5UX1NSQ1MpKQotQ0ZfVEVTVFMgPSAkKGlmICQoc3Vic3Qgbm8sLCQod2l0aF9vcGVu
c3NsKSksICQoT1NTTF9URVNUUyksICQoSU5UX1RFU1RTKSkKK0NGX1NSQ1MgPSAkKElOVF9TUkNT
KQorQ0ZfVEVTVFMgPSAkKElOVF9URVNUUykKIENGX1BHUF9URVNUUyA9ICQoaWYgJChzdWJzdCBu
bywsJCh3aXRoX3psaWIpKSwgJChaTElCX1RTVCksICQoWkxJQl9PRkZfVFNUKSkKIAogU1JDUwkJ
PSBwZ2NyeXB0by5jIHB4LmMgcHgtaG1hYy5jIHB4LWNyeXB0LmMgXAo=
--0000000000009e902d05a9044f91
Content-Type: application/octet-stream; name=series
Content-Disposition: attachment; filename=series
Content-Transfer-Encoding: base64
Content-ID: <f_kbwkj0vu1>
X-Attachment-Id: f_kbwkj0vu1
NTAtcGVyLXZlcnNpb24tZGlycy5wYXRjaAo1MS1kZWZhdWx0LXNvY2tldHMtaW4tdmFyLnBhdGNo
CjUyLXR1dG9yaWFsLVJFQURNRS5wYXRjaAo1My1wZ19zZXJ2aWNlLmNvbmZfZGlyZWN0b3J5X2Rv
Yy5wYXRjaAo1NC1kZWJpYW4tYWx0ZXJuYXRpdmVzLWZvci1leHRlcm5hbC10b29scy5wYXRjaAo3
MC1oaXN0b3J5CmZpbHRlci1kZWJ1Zy1wcmVmaXgtbWFwCmxpYnBncG9ydC1wa2dsaWJkaXIKaW5p
dGRiLXN0YXJ0dXAtbWVzc2FnZQp3b2xmc3NsLnBhdGNoCg==
--0000000000009e902d05a9044f91
Content-Type: application/octet-stream; name="README.wolfSSL"
Content-Disposition: attachment; filename="README.wolfSSL"
Content-Transfer-Encoding: base64
Content-ID: <f_kbwkjih62>
X-Attachment-Id: f_kbwkjih62
SnVuZSAyNiwgMjAyMAoKVGhpcyBpcyBkcmFmdCBzdXBwb3J0IGZvciB3b2xmU1NMIGluIHBvc3Rn
cmVzLTEyIHZlcnNpb24gMTIuMy0xLgoKSSB1c2VkIERlYmlhbiBzdGFibGUgKGJ1c3Rlcikgd2l0
aCBiYWNrcG9ydHMgZW5hYmxlZCBhbmQgcHJlZmVycmVkLgoKVGhlIHdvbGZzc2wucGF0Y2ggaW4g
ZC9wYXRjaGVzIGJ1aWxkIGFuZCBjb21wbGV0ZXMgYWxsIHRlc3RzLCBhcyBsb25nCmFzIGxpYndv
bGZzc2wtZGV2IHZlcnNpb24gNC40LjArZGZzZy0yfmJwbzEwKzEgaXMgaW5zdGFsbGVkIGFuZApw
YXRjaGVkIHdpdGggdGhlIGluY2x1ZGVkIGxpYndvbGZzc2wtZGV2LXJlbmFtZS10eXBlcy5wYXRj
aC4KCllvdSBjYW4gZG8gc28gYXMgcm9vdCB3aXRoOgoKICAgIGNkIC91c3IvaW5jbHVkZS93b2xm
c3NsCiAgICBwYXRjaCAtcDEgPCBsaWJ3b2xmc3NsLWRldi1yZW5hbWUtdHlwZXMucGF0Y2gKClBh
dGNoaW5nIHRoZSBsaWJyYXJ5IHdhcyBlYXNpZXIgdGhhbiByZXNvbHZpbmcgdGhlIHR5cGUgY29u
ZmxpY3RzCmJldHdlZW4gaW4gYWJvdXQgdHdlbnR5LWZpdmUgZmlsZXMuIEFuIGF0dGVtcHQgd2Fz
IG1hZGUgYnV0IHJlc3VsdGVkCmluIGZhaWxpbmcgdGVzdHMuCgpUaGUgb2ZmZW5kaW5nIHR5cGVz
IGFyZSBjYWxsZWQgJ1ZhbGlkYXRlRGF0ZScgYW5kICdIYXNoJy4gVGhleSBkbyBub3QKc2VlbSB0
byBiZSBwYXJ0IG9mIHRoZSB3b2xmU1NMIEFCSS4KClRoZSBwYXRjaCBvcGVyYXRlcyB3aXRoIHRo
ZSBmb2xsb3dpbmcgY2F2ZWF0czoKCjEuIERIIHBhcmFtZXRlcnMgYXJlIG5vdCBjdXJyZW50bHkg
bG9hZGVkIGZyb20gYSBkYXRhYmFzZS1pbnRlcm5hbCBQRU0KY2VydGlmaWNhdGUuIFRoZSBmdW5j
dGlvbiBPQkpfZmluZF9zaWdpZF9hbGdzIGlzIG5vdCBhdmFpbGFibGUuIFRoZQpzZWN1cml0eSBp
bXBsaWNhdGlvbnMgc2hvdWxkIGJlIGRpc2N1c3NlZCB3aXRoIGEgY3J5cHRvZ3JhcGhlci4KCjIu
IFRoZSBjb250cmliIG1vZHVsZSBwZ2NyeXB0byB3YXMgbm90IGNvbXBpbGVkIHdpdGggT3BlblNT
TCBzdXBwb3J0CmFuZCBjdXJyZW50bHkgb2ZmZXJzIG9ubHkgbmF0aXZlIGFsZ29yaXRobXMuIHdv
bGZTU0wncyBjb21wYXRpYmlsaXR5CnN1cHBvcnQgZm9yIE9wZW5TU0wncyBFVlAgaW50ZXJmYWNl
IGlzIGluY29tcGxldGUgYW5kIG9mZmVycyBvbmx5IGEKZmV3IGFsZ29yaXRobXMuIFRoZSBtb2R1
bGUgc2hvdWxkIHdvcmsgZGlyZWN0bHkgd2l0aCB3b2xmQ3J5cHQuCgozLiBUaGUgZXJyb3IgcmVw
b3J0aW5nIGluIHdvbGZTU0xfc2V0X2ZkIHNlZW1zIHRvIGJlIGRpZmZlcmVudCBmcm9tCk9wZW5T
U0wuIEkgY291bGQgbm90IGxvY2F0ZSBTU0xlcnIgYW5kIGRlY2lkZWQgdG8gcmV0dXJuIEJBRF9G
VU5DX0FSRwphcyB0aGUgcm91dGluZSBiZWluZyBtaW1pY2tlZCBkb2VzIGluIHdvbGZTU0wuIElm
IHlvdSBzZWUgYW4gU1NMCmNvbm5lY3Rpb24gZXJyb3IsIGl0IG1heSBiZSB3aXNlIHRvIHNpbXBs
eSByZW1vdmUgdGhlc2UgdHdvIHN0YXRlbWVudHMKaW4gc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt
c2VjdXJlLW9wZW5zc2wuYzoKCiAgICByZXQgPSBCQURfRlVOQ19BUkc7CgpVbnN1cHBvcnRlZCBm
dW5jdGlvbnMgb3IgZmVhdHVyZXMgKGFuZCBtb3JlKSBjYW4gcHJvYmFibHkgYmUgZm91bmQgaW4K
d29sZlNTTCdzIG9yIHdvbGZDcnlwdCdzIG5hdGl2ZSBpbnRlcmZhY2VzLiBUaGUgY29tcGFueSBt
YXkgYmUgaGFwcHkKdG8gYXNzaXN0LgoKVGhlIHBhdGNoIGluY2x1ZGVzIG1vZGlmaWNhdGlvbnMg
dG93YXJkIG1pc3NpbmcgZ29hbHMuIFNvbWUgcGFydHMKbW9kaWZ5IGNvZGUgdGhhdCBpcyBub3Qg
YWN0dWFsbHkgY2FsbGVkLCBlc3BlY2lhbGx5IGluIHV0aWwvcGdwY3J5cHRvLgoKUGxlYXNlIG5v
dGUgdGhhdCB0aGUgd29sZlNTTCB0ZWFtIHByZWZlcnMgdGhlIHN0eWxpbmcgb2YgdGhlaXIgYnJh
bmQKdG8gYmUgY2FwaXRhbGl6ZWQgYXMgcmVjb3JkZWQgaW4gdGhpcyBzZW50ZW5jZS4gVGhhbmsg
eW91IQoKS2luZCByZWdhcmRzCkZlbGl4IExlY2huZXIK
--0000000000009e902d05a9044f91
Content-Type: application/x-patch; name="libwolfssl-dev-rename-types.patch"
Content-Disposition: attachment;
filename="libwolfssl-dev-rename-types.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_kbwkjmp03>
X-Attachment-Id: f_kbwkjmp03
ZGlmZiAtcnVwIC91c3IvaW5jbHVkZS93b2xmc3NsL3NzbC5oIHdvbGZzc2wvc3NsLmgKLS0tIC91
c3IvaW5jbHVkZS93b2xmc3NsL3NzbC5oCTIwMjAtMDYtMjYgMDc6MDk6NDYuODI3NjExMTUwIC0w
NzAwCisrKyB3b2xmc3NsL3NzbC5oCTIwMjAtMDYtMjYgMDY6MjQ6MTYuMzc2MDQ2ODAzIC0wNzAw
CkBAIC05MjAsNyArOTIwLDcgQEAgV09MRlNTTF9BUEkgaW50ICB3b2xmU1NMX0JJT19uZXdfYmlv
X3BhaQogCiBXT0xGU1NMX0FQSSBpbnQgd29sZlNTTF9SU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNT
KFdPTEZTU0xfUlNBICpyc2EsIHVuc2lnbmVkIGNoYXIgKkVNLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICptSGFz
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV09MRlNTTF9FVlBfTUQgKkhhc2gsIGludCBzYWx0TGVuKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09MRlNTTF9FVlBfTUQgKldv
bGZTU0xIYXNoLCBpbnQgc2FsdExlbik7CiBXT0xGU1NMX0FQSSBpbnQgd29sZlNTTF9SU0FfdmVy
aWZ5X1BLQ1MxX1BTUyhXT0xGU1NMX1JTQSAqcnNhLCBjb25zdCB1bnNpZ25lZCBjaGFyICptSGFz
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPTEZT
U0xfRVZQX01EICpoYXNoQWxnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqRU0sIGludCBzYWx0TGVuKTsKZGlmZiAtcnVwIC91
c3IvaW5jbHVkZS93b2xmc3NsL3dvbGZjcnlwdC9hc24uaCB3b2xmc3NsL3dvbGZjcnlwdC9hc24u
aAotLS0gL3Vzci9pbmNsdWRlL3dvbGZzc2wvd29sZmNyeXB0L2Fzbi5oCTIwMjAtMDYtMjYgMDc6
MDk6NDYuODk1NjEwNTczIC0wNzAwCisrKyB3b2xmc3NsL3dvbGZjcnlwdC9hc24uaAkyMDIwLTA2
LTI2IDA2OjIxOjM2Ljg2MjE1OTMzMSAtMDcwMApAQCAtMTExNSw3ICsxMTE1LDcgQEAgV09MRlNT
TF9MT0NBTCBpbnQgR2V0QXNuVGltZVN0cmluZyh2b2lkKgogV09MRlNTTF9MT0NBTCBpbnQgRXh0
cmFjdERhdGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0ZSwgdW5zaWduZWQgY2hhciBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29sZnNz
bF90bSogY2VydFRpbWUsIGludCogaWR4KTsKIFdPTEZTU0xfTE9DQUwgaW50IERhdGVHcmVhdGVy
VGhhbihjb25zdCBzdHJ1Y3QgdG0qIGEsIGNvbnN0IHN0cnVjdCB0bSogYik7Ci1XT0xGU1NMX0xP
Q0FMIGludCBWYWxpZGF0ZURhdGUoY29uc3QgYnl0ZSogZGF0ZSwgYnl0ZSBmb3JtYXQsIGludCBk
YXRlVHlwZSk7CitXT0xGU1NMX0xPQ0FMIGludCBXb2xmU1NMVmFsaWRhdGVEYXRlKGNvbnN0IGJ5
dGUqIGRhdGUsIGJ5dGUgZm9ybWF0LCBpbnQgZGF0ZVR5cGUpOwogV09MRlNTTF9MT0NBTCBpbnQg
d2NfT0JKX3NuMm5pZChjb25zdCBjaGFyICpzbik7CiAKIC8qIEFTTi4xIGhlbHBlciBmdW5jdGlv
bnMgKi8KZGlmZiAtcnVwIC91c3IvaW5jbHVkZS93b2xmc3NsL3dvbGZjcnlwdC9obWFjLmggd29s
ZnNzbC93b2xmY3J5cHQvaG1hYy5oCi0tLSAvdXNyL2luY2x1ZGUvd29sZnNzbC93b2xmY3J5cHQv
aG1hYy5oCTIwMjAtMDYtMjYgMDc6MDk6NDYuOTI3NjEwMzAzIC0wNzAwCisrKyB3b2xmc3NsL3dv
bGZjcnlwdC9obWFjLmgJMjAyMC0wNi0yNiAwNzoxOTo0Mi44NDMyMjUyNjQgLTA3MDAKQEAgLTEz
MSwxMSArMTMxLDExIEBAIHR5cGVkZWYgdW5pb24gewogI2lmZGVmIFdPTEZTU0xfU0hBMwogICAg
IHdjX1NoYTMgc2hhMzsKICNlbmRpZgotfSBIYXNoOworfSBXb2xmU1NMSGFzaDsKIAogLyogSG1h
YyBkaWdlc3QgKi8KIHN0cnVjdCBIbWFjIHsKLSAgICBIYXNoICAgIGhhc2g7CisgICAgV29sZlNT
TEhhc2ggICAgaGFzaDsKICAgICB3b3JkMzIgIGlwYWRbV0NfSE1BQ19CTE9DS19TSVpFICAvIHNp
emVvZih3b3JkMzIpXTsgIC8qIHNhbWUgYmxvY2sgc2l6ZSBhbGwqLwogICAgIHdvcmQzMiAgb3Bh
ZFtXQ19ITUFDX0JMT0NLX1NJWkUgIC8gc2l6ZW9mKHdvcmQzMildOwogICAgIHdvcmQzMiAgaW5u
ZXJIYXNoW1dDX01BWF9ESUdFU1RfU0laRSAvIHNpemVvZih3b3JkMzIpXTsKT25seSBpbiB3b2xm
c3NsL3dvbGZjcnlwdDogaG1hYy5ofgpkaWZmIC1ydXAgL3Vzci9pbmNsdWRlL3dvbGZzc2wvd29s
ZmNyeXB0L3djX3BvcnQuaCB3b2xmc3NsL3dvbGZjcnlwdC93Y19wb3J0LmgKLS0tIC91c3IvaW5j
bHVkZS93b2xmc3NsL3dvbGZjcnlwdC93Y19wb3J0LmgJMjAyMC0wNi0yNiAwNzowOTo0Ni45Mjc2
MTAzMDMgLTA3MDAKKysrIHdvbGZzc2wvd29sZmNyeXB0L3djX3BvcnQuaAkyMDIwLTA2LTI2IDA2
OjIxOjI0Ljk3NDAxODYxMSAtMDcwMApAQCAtNjgzLDcgKzY4Myw3IEBAIFdPTEZTU0xfQVBJIGlu
dCB3b2xmQ3J5cHRfQ2xlYW51cCh2b2lkKTsKICNlbmRpZgogI2lmICFkZWZpbmVkKFhWQUxJREFU
RV9EQVRFKSAmJiAhZGVmaW5lZChIQVZFX1ZBTElEQVRFX0RBVEUpCiAgICAgI2RlZmluZSBVU0Vf
V09MRl9WQUxJRERBVEUKLSAgICAjZGVmaW5lIFhWQUxJREFURV9EQVRFKGQsIGYsIHQpIFZhbGlk
YXRlRGF0ZSgoZCksIChmKSwgKHQpKQorICAgICNkZWZpbmUgWFZBTElEQVRFX0RBVEUoZCwgZiwg
dCkgV29sZlNTTFZhbGlkYXRlRGF0ZSgoZCksIChmKSwgKHQpKQogI2VuZGlmCiAKIC8qIHdvbGYg
c3RydWN0IHRtIGFuZCB0aW1lX3QgKi8K
--0000000000009e902d05a9044f91--