RFC: Using openat()
"Craig Small" <[email protected]> ("csmall") Fri, 20 Jan 2023 22:01:07 +1100
| Newsgroups | gmane.linux.procps.devel |
|---|---|
| Message-ID | <CALy8Cw4uP_P-4uA-B-B9RTnkrLxJiQviO5HZ2wEy_6v1ZW=Cmg@mail.gmail.com> |
--00000000000022a0b105f2aff874 Content-Type: multipart/alternative; boundary="00000000000022a0af05f2aff872" --00000000000022a0af05f2aff872 Content-Type: text/plain; charset="UTF-8" Hi All, I have a proposed patch where the library uses openat() for all open files below /proc/<PID>. I think this is a reasonable idea as it means if a PID is reused you're not using half the old process and half the new process information. It's all internal so invisible to the calling programs, so its not an API change but it is a reasonably large patch. The work is largely based upon https://gitlab.com/procps-ng/procps/-/merge_requests/120 Let me know what you think. - Craig -- Craig Small https://dropbear.xyz/ csmall at : dropbear.xyz Debian GNU/Linux https://www.debian.org/ <http://www.debian.org/> csmall at : debian.org GPG fingerprint: 5D2F B320 B825 D939 04D2 0519 3938 F96B DF50 FEA5 --00000000000022a0af05f2aff872 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Hi All,</div><div>=C2=A0 I have a proposed patch wher= e the library uses openat() for all open files below</div><div>/proc/<PI= D>.=C2=A0 I think this is a reasonable idea as it means if a PID is reus= ed you're not using half the old process and half the new process infor= mation.</div><div><br></div><div>It's all internal so invisible to the = calling programs, so its not an API change but it is a reasonably large pat= ch.=C2=A0 The work is largely based upon <a href=3D"https://gitlab.com/proc= ps-ng/procps/-/merge_requests/120">https://gitlab.com/procps-ng/procps/-/me= rge_requests/120</a>=C2=A0</div><div><br></div><div>Let me know what you th= ink.</div><div><br></div><div>=C2=A0- Craig</div>-- <br><div dir=3D"ltr" cl= ass=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"= ><pre>Craig Small <a href=3D"https://dropbear.xyz" target=3D"_b= lank">https://dropbear.xyz/</a> csmall at : <a href=3D"http://dropbear.xyz= " target=3D"_blank">dropbear.xyz</a> Debian GNU/Linux <a href=3D"http://www.debian.org/" target=3D"_blank= ">https://www.debian.org/</a> csmall at : <a href=3D"http://debian.org" ta= rget=3D"_blank">debian.org</a> GPG fingerprint: 5D2F B320 B825 D939 04D2 0519 3938 F96B DF50 FEA5</pr= e></div></div></div> --00000000000022a0af05f2aff872-- --00000000000022a0b105f2aff874 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-library-Use-openat-to-read-procfs.patch" Content-Disposition: attachment; filename="0001-library-Use-openat-to-read-procfs.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ld4evcli0> X-Attachment-Id: f_ld4evcli0 RnJvbSBjYWE5MDk2YmFjMmE5N2FlMzdmY2NkNzhlMDJkZWU5MDJiODJjMjQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDcmFpZyBTbWFsbCA8Y3NtYWxsQGRyb3BiZWFyLnh5ej4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAyMTo1MDo0MCArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYnJh cnk6IFVzZSBvcGVuYXQoKSB0byByZWFkIHByb2NmcwoKUmVzb2x2ZXMgaXNzdWVzIHdpdGggcmFj ZSBjb25kaXRpb25zIHdoZXJlIHRoZSBQSUQgaXMgYmVpbmcgcmV1c2VkLgpVc2luZyB0aGlzIG1l dGhvZCB3ZSBrbm93IHRoYXQgYWxsIHRoZSBzdWJkaXJlY3RvcmllcyBhbmQgZmlsZXMKdW5kZXIg L3Byb2MvPFBJRD4gYXJlIG93bmVkIGJ5IHRoZSBzYW1lIHByb2Nlc3MgYW5kIG5vdCBvbmUgdGhh dCBoYXMKdGhlIHNhbWUgUElELgoKVGhlIGlzIGxhcmdlbHkgdGhlIHdvcmsgb2YgQHp4emF4IGlu ICExMjAgYnV0IHJlZmFjdG9yZWQgZm9yIHRoZQpuZXcgbGlicmFyeSBhcnJhbmdlbWVudCBhbmQg b25seSBpbmNsdWRpbmcgdGhlIGxpYnJhcnkgY29tcG9uZW50LgoKSSBkb24ndCBzZWUgYSB3YXkg b2YgYWxsb3dpbmcgdGhlIHByb2dyYW1zIHRoZW1zZWx2ZXMgdXNlIHRoaXMKbWV0aG9kLCBhcyB0 aGUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xvc2VkIHdoZW4gdGhlIEFQSSBjYWxscwpyZXR1cm4u IEluIGZhY3QgdGhlIGZkIGlzIGNsb3NlZCBmb3IgZWFjaCBQSUQgc28gaXQncyBhbHdheXMKZmQ9 My4KClRoaXMgYWxzbyBtZWFucyB3ZSBjYW5ub3QgdXNlIGl0IGZvciBwcm9jcHNfbnNfcmVhZF9w aWQoKQphcyB0aGlzIGlzIGFuIGV4dGVybmFsIGZ1bmN0aW9uLiBJbiB0aGUgb2xkIGxpYnJhcnkg bnMycHJvYygpCndhcyBpbnRlcm5hbC4KClJlZmVyZW5jZXM6CiBwcm9jcHMtbmcvcHJvY3BzITEy MAotLS0KIE5FV1MgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGxpYnJhcnkvaW5jbHVk ZS9yZWFkcHJvYy5oIHwgICA2ICstCiBsaWJyYXJ5L3JlYWRwcm9jLmMgICAgICAgICB8IDE3NiAr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEy NyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVX UwppbmRleCA0MGEzOWU5Li43NWY0OTRlIDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAg LTEsNSArMSw4IEBACiBwcm9jcHMtbmctTkVYVAogLS0tLS0tLS0tLS0tLS0tCisgICogbGlicmFy eQorICAgIFVzZSBvcGVuYXQoKSB3aGVyZSBwb3NzaWJsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZXJnZSAjMTIwCisgICAgKGludGVybmFsIGNoYW5nZXMgb25seSkgICAgICAgICAgIAog ICAqIGRvY3M6IERvbid0IGluc3RhbGwgRW5nbGlzaCBtYW5wYWdlcyB0d2ljZQogICAqIHBncmVw OiBBZGQgLUggbWF0Y2ggb24gdXNlcnNwYWNlIHNpZ25hbCBoYW5kbGVyICAgICAgICBtZXJnZSAj MTY1CiAgICogcHM6IGMgZmxhZyBzaG93cyBjb21tYW5kIG5hbWUgYWdhaW4gICAgICAgICAgICAg ICAgICAgIERlYmlhbiAjMTAyNjMyNgpkaWZmIC0tZ2l0IGEvbGlicmFyeS9pbmNsdWRlL3JlYWRw cm9jLmggYi9saWJyYXJ5L2luY2x1ZGUvcmVhZHByb2MuaAppbmRleCBlNWZlMWU3Li4zN2E1MjMz IDEwMDY0NAotLS0gYS9saWJyYXJ5L2luY2x1ZGUvcmVhZHByb2MuaAorKysgYi9saWJyYXJ5L2lu Y2x1ZGUvcmVhZHByb2MuaApAQCAtMzIsNyArMzIsOSBAQAogdHlwZWRlZiBzdHJ1Y3QgcHJvY190 IHsKICAgICBpbnQKICAgICAgICAgdGlkLCAgICAgICAgICAgIC8vIChzcGVjaWFsKSAgICAgICB0 YXNrIGlkLCB0aGUgUE9TSVggdGhyZWFkIElEIChzZWUgYWxzbzogdGdpZCkKLSAgICAgICAgcHBp ZDsgICAgICAgICAgIC8vIHN0YXQsc3RhdHVzICAgICBwaWQgb2YgcGFyZW50IHByb2Nlc3MKKyAg ICAgICAgcHBpZCwgICAgICAgICAgIC8vIHN0YXQsc3RhdHVzICAgICBwaWQgb2YgcGFyZW50IHBy b2Nlc3MKKwlkZmQ7IAkJLy8gKHNwZWNpYWwpICAgICAgIGZkIG9mIHRoZSBwcm9jZXNzIGRpcmVj dG9yeSBpbiAvcHJvYworCiAgICAgY2hhcgogICAgICAgICBzdGF0ZSwgICAgICAgICAgLy8gc3Rh dCxzdGF0dXMgICAgIHNpbmdsZS1jaGFyIGNvZGUgZm9yIHByb2Nlc3Mgc3RhdGUgKFM9c2xlZXBp bmcpCiAgICAgICAgIHBhZF8xLCAgICAgICAgICAvLyBuL2EgICAgICAgICAgICAgcGFkZGluZwpA QCAtMTkxLDggKzE5MywxMCBAQCB0eXBlZGVmIHN0cnVjdCBwcm9jX3QgewogCiB0eXBlZGVmIHN0 cnVjdCBQUk9DVEFCIHsKICAgICBESVIgICAgICAgICpwcm9jZnM7CisgICAgaW50ICAgICAgICAg cHJvY2ZzX2ZkOwogLy8gICAgY2hhciBkZUJ1ZzBbNjRdOwogICAgIERJUiAgICAgICAgKnRhc2tk aXI7ICAvLyBmb3IgdGhyZWFkcworICAgIGludCAgICAgICAgIHRhc2tkaXJfZmQ7CiAvLyAgICBj aGFyIGRlQnVnMVs2NF07CiAgICAgcGlkX3QgICAgICAgdGFza2Rpcl91c2VyOyAgLy8gZm9yIHRo cmVhZHMKICAgICBpbnQoKmZpbmRlcikoc3RydWN0IFBST0NUQUIgKl9fcmVzdHJpY3QgY29uc3Qs IHByb2NfdCAqX19yZXN0cmljdCBjb25zdCk7CmRpZmYgLS1naXQgYS9saWJyYXJ5L3JlYWRwcm9j LmMgYi9saWJyYXJ5L3JlYWRwcm9jLmMKaW5kZXggNGJjOWQ5Ni4uNTJkYWFjNSAxMDA2NDQKLS0t IGEvbGlicmFyeS9yZWFkcHJvYy5jCisrKyBiL2xpYnJhcnkvcmVhZHByb2MuYwpAQCAtODEsNiAr ODEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9hY3F1aXJlZCAocHJvY190ICpwKSB7CiAg ICAgICogaGVyZSB3ZSBmcmVlIHRob3NlIGl0ZW1zIHRoYXQgbWlnaHQgZXhpc3QgZXZlbiB3aGVu IG5vdCBleHBsaWNpdGx5IHwKICAgICAgKiByZXF1ZXN0ZWQgYnkgb3VyIGNhbGxlci4gIGl0IGlz IGV4cGVjdGVkIHRoYXQgcGlkLmMgd2lsbCB0aGVuIGZyZWUgfAogICAgICAqIGFueSByZW1haW5p bmcgZHluYW1pYyBtZW1vcnkgd2hpY2ggbWlnaHQgYmUgZGFuZ2xpbmcgb2ZmIGEgcHJvY190LiB8 ICovCisgICAgaWYgKHAtPmRmZCA+PSAwKSBjbG9zZShwLT5kZmQpOwogICAgIGlmIChwLT5jZ25h bWUpICAgZnJlZShwLT5jZ25hbWUpOwogICAgIGlmIChwLT5jZ3JvdXApICAgZnJlZShwLT5jZ3Jv dXApOwogICAgIGlmIChwLT5jbWQpICAgICAgZnJlZShwLT5jbWQpOwpAQCAtOTQsNiArOTUsNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9hY3F1aXJlZCAocHJvY190ICpwKSB7CiAgICAgaWYg KHAtPnN1cGdpZCkgICBmcmVlKHAtPnN1cGdpZCk7CiAKICAgICBtZW1zZXQocCwgJ1wwJywgc2l6 ZW9mKHByb2NfdCkpOworICAgIHAtPmRmZCA9IC0xOwogfQogCiAKQEAgLTcxNSw5ICs3MTcsMjUg QEAgc3RhdGljIHZvaWQgc21hcHMycHJvYyAoY29uc3QgY2hhciAqcywgcHJvY190ICpyZXN0cmlj dCBQKSB7CiAgICN1bmRlZiBta09CSgogfQogCi1zdGF0aWMgaW50IGZpbGUyc3RyKGNvbnN0IGNo YXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqd2hhdCwgc3RydWN0IHV0bGJ1Zl9zICp1Yikgewot ICNkZWZpbmUgYnVmZkdSVyAxMDI0CitzdGF0aWMgaW50IG9wZW5hdF9vcl9vcGVuKGNvbnN0IGNo YXIgKmRpcmVjdG9yeSwgY29uc3QgaW50IGRmZCwgY29uc3QgY2hhciAqd2hhdCkgeworICAgIGlu dCByZXM7CiAgICAgY2hhciBwYXRoW1BST0NQQVRITEVOXTsKKyAgICBpbnQgbGVuOworCisgICAg aWYgKGRmZCA+PSAwKSB7CisgICAgICAgIHJlcyA9IG9wZW5hdChkZmQsIHdoYXQsIE9fUkRPTkxZ KTsKKyAgICAgICAgaWYgKHJlcyA+PSAwIHx8IGVycm5vICE9IEVOT1NZUykKKyAgICAgICAgICAg IHJldHVybiByZXM7CisgICAgfQorCisgICAgbGVuID0gc25wcmludGYocGF0aCwgc2l6ZW9mIHBh dGgsICIlcy8lcyIsIGRpcmVjdG9yeSwgd2hhdCk7CisgICAgaWYgKGxlbiA8PSAwIHx8IChzaXpl X3QpbGVuID49IHNpemVvZiBwYXRoKSByZXR1cm4gLTE7CisgICAgcmV0dXJuIG9wZW4ocGF0aCwg T19SRE9OTFkpOworfQorCisKK3N0YXRpYyBpbnQgZmlsZTJzdHIoY29uc3QgY2hhciAqZGlyZWN0 b3J5LCBjb25zdCBpbnQgZGZkLCBjb25zdCBjaGFyICp3aGF0LCBzdHJ1Y3QgdXRsYnVmX3MgKnVi KSB7CisgI2RlZmluZSBidWZmR1JXIDEwMjQKICAgICBpbnQgZmQsIG51bSwgdG90X3JlYWQgPSAw LCBsZW47CiAKICAgICAvKiBvbiBmaXJzdCB1c2Ugd2UgcHJlYWxsb2NhdGUgYSBidWZmZXIgb2Yg bWluaW11bSBzaXplIHRvIGVtdWxhdGUKQEAgLTcyOSw5ICs3NDcsNyBAQCBzdGF0aWMgaW50IGZp bGUyc3RyKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqd2hhdCwgc3RydWN0IHV0 bGJ1Zl9zICp1YgogICAgICAgICB1Yi0+YnVmID0gY2FsbG9jKDEsICh1Yi0+c2l6ID0gYnVmZkdS VykpOwogICAgICAgICBpZiAoIXViLT5idWYpIHJldHVybiAtMTsKICAgICB9Ci0gICAgbGVuID0g c25wcmludGYocGF0aCwgc2l6ZW9mIHBhdGgsICIlcy8lcyIsIGRpcmVjdG9yeSwgd2hhdCk7Ci0g ICAgaWYgKGxlbiA8PSAwIHx8IChzaXplX3QpbGVuID49IHNpemVvZiBwYXRoKSByZXR1cm4gLTE7 Ci0gICAgaWYgKC0xID09IChmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFksIDApKSkgcmV0dXJuIC0x OworICAgIGlmICgtMSA9PSAoZmQgPSBvcGVuYXRfb3Jfb3BlbihkaXJlY3RvcnksIGRmZCwgd2hh dCkpKSByZXR1cm4gLTE7CiAgICAgd2hpbGUgKDAgPCAobnVtID0gcmVhZChmZCwgdWItPmJ1ZiAr IHRvdF9yZWFkLCB1Yi0+c2l6IC0gdG90X3JlYWQpKSkgewogICAgICAgICB0b3RfcmVhZCArPSBu dW07CiAgICAgICAgIGlmICh0b3RfcmVhZCA8IHViLT5zaXopIGJyZWFrOwpAQCAtNzUyLDE1ICs3 NjgsMTMgQEAgc3RhdGljIGludCBmaWxlMnN0cihjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0 IGNoYXIgKndoYXQsIHN0cnVjdCB1dGxidWZfcyAqdWIKIH0KIAogCi1zdGF0aWMgY2hhciAqKmZp bGUyc3RydmVjKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqd2hhdCkgeworc3Rh dGljIGNoYXIgKipmaWxlMnN0cnZlYyhjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGludCBk ZmQsIGNvbnN0IGNoYXIgKndoYXQpIHsKICAgICBjaGFyIGJ1ZlsyMDQ4XTsgICAgIC8qIHJlYWQg YnVmIGJ5dGVzIGF0IGEgdGltZSAqLwogICAgIGNoYXIgKnAsICpyYnVmID0gMCwgKmVuZGJ1Ziwg KipxLCAqKnJldCwgKnN0cnA7CiAgICAgaW50IGZkLCB0b3QgPSAwLCBuLCBjLCBlbmRfb2ZfZmls ZSA9IDA7CiAgICAgaW50IGFsaWduOwogCi0gICAgY29uc3QgaW50IGxlbiA9IHNucHJpbnRmKGJ1 Ziwgc2l6ZW9mIGJ1ZiwgIiVzLyVzIiwgZGlyZWN0b3J5LCB3aGF0KTsKLSAgICBpZihsZW4gPD0g MCB8fCAoc2l6ZV90KWxlbiA+PSBzaXplb2YgYnVmKSByZXR1cm4gTlVMTDsKLSAgICBmZCA9IG9w ZW4oYnVmLCBPX1JET05MWSwgMCk7CisgICAgZmQgPSBvcGVuYXRfb3Jfb3BlbihkaXJlY3Rvcnks IGRmZCwgd2hhdCk7CiAgICAgaWYoZmQ9PS0xKSByZXR1cm4gTlVMTDsKIAogICAgIC8qIHJlYWQg d2hvbGUgZmlsZSBpbnRvIGEgbWVtb3J5IGJ1ZmZlciwgYWxsb2NhdGluZyBhcyB3ZSBnbyAqLwpA QCAtODM0LDE4ICs4NDgsMTUgQEAgc3RhdGljIGNoYXIgKipmaWxlMnN0cnZlYyhjb25zdCBjaGFy ICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKndoYXQpIHsKICAgICAvLyB0aGlzIGlzIHRoZSBmb3Jt ZXIgdW5kZXIgdXRpbGl6ZWQgJ3JlYWRfY21kbGluZScsIHdoaWNoIGhhcyBiZWVuCiAgICAgLy8g Z2VuZXJhbGl6ZWQgaW4gc3VwcG9ydCBvZiB0aGVzZSBuZXcgbGlicHJvYyBmbGFnczoKICAgICAv LyAgICAgUFJPQ19FRElUQ0dSUENWVCwgUFJPQ19FRElUQ01ETENWVCBhbmQgUFJPQ19FRElURU5W UkNWVAotc3RhdGljIGludCByZWFkX3VudmVjdG9yZWQoY2hhciAqcmVzdHJpY3QgY29uc3QgZHN0 LCB1bnNpZ25lZCBzeiwgY29uc3QgY2hhciAqd2hvbSwgY29uc3QgY2hhciAqd2hhdCwgY2hhciBz ZXApIHsKLSAgICBjaGFyIHBhdGhbUFJPQ1BBVEhMRU5dOwotICAgIGludCBmZCwgbGVuOworc3Rh dGljIGludCByZWFkX3VudmVjdG9yZWQoY2hhciAqcmVzdHJpY3QgY29uc3QgZHN0LCB1bnNpZ25l ZCBzeiwgY29uc3QgY2hhciAqd2hvbSwgY29uc3QgaW50IGRmZCwgY29uc3QgY2hhciAqd2hhdCwg Y2hhciBzZXApIHsKKyAgICBpbnQgZmQ7CiAgICAgdW5zaWduZWQgbiA9IDA7CiAKICAgICBpZihz eiA8PSAwKSByZXR1cm4gMDsKICAgICBpZihzeiA+PSBJTlRfTUFYKSBzeiA9IElOVF9NQVgtMTsK ICAgICBkc3RbMF0gPSAnXDAnOwogCi0gICAgbGVuID0gc25wcmludGYocGF0aCwgc2l6ZW9mKHBh dGgpLCAiJXMvJXMiLCB3aG9tLCB3aGF0KTsKLSAgICBpZihsZW4gPD0gMCB8fCAoc2l6ZV90KWxl biA+PSBzaXplb2YocGF0aCkpIHJldHVybiAwOwotICAgIGZkID0gb3BlbihwYXRoLCBPX1JET05M WSk7CisgICAgZmQgPSBvcGVuYXRfb3Jfb3Blbih3aG9tLCBkZmQsIHdoYXQpOwogICAgIGlmKGZk PT0tMSkgcmV0dXJuIDA7CiAKICAgICBmb3IoOzspewpAQCAtOTEwLDcgKzkyMSw3IEBAIHN0YXRp YyBpbnQgZmlsbF9jZ3JvdXBfY3Z0IChjb25zdCBjaGFyICpkaXJlY3RvcnksIHByb2NfdCAqcmVz dHJpY3QgcCkgewogICAgIGludCB0b3QsIHgsIGxlbjsKIAogICAgICooZHN0ID0gZHN0X2J1ZmZl cikgPSAnXDAnOyAgICAgICAgICAgICAgICAgIC8vIGVtcHR5IGRlc3RpbmF0aW9uCi0gICAgdG90 ID0gcmVhZF91bnZlY3RvcmVkKHNyY19idWZmZXIsIE1BWF9CVUZTWiwgZGlyZWN0b3J5LCAiY2dy b3VwIiwgJ1wwJyk7CisgICAgdG90ID0gcmVhZF91bnZlY3RvcmVkKHNyY19idWZmZXIsIE1BWF9C VUZTWiwgZGlyZWN0b3J5LCBwLT5kZmQsICJjZ3JvdXAiLCAnXDAnKTsKICAgICBmb3IgKHNyYyA9 IHNyY19idWZmZXIsIGVvYiA9IHNyY19idWZmZXIgKyB0b3Q7IHNyYyA8IGVvYjsgc3JjICs9IHgp IHsKICAgICAgICAgeCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBs b29wIGFzc2lzdAogICAgICAgICBpZiAoISpzcmMpIGNvbnRpbnVlOwpAQCAtOTQxLDcgKzk1Miw3 IEBAIHN0YXRpYyBpbnQgZmlsbF9jZ3JvdXBfY3Z0IChjb25zdCBjaGFyICpkaXJlY3RvcnksIHBy b2NfdCAqcmVzdHJpY3QgcCkgewogICAgIC8vIHZhbGlkIHByb2NfdC5jbWRsaW5lIHBvaW50ZXIu CiBzdGF0aWMgaW50IGZpbGxfY21kbGluZV9jdnQgKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgcHJv Y190ICpyZXN0cmljdCBwKSB7CiAgI2RlZmluZSB1RkxHICggRVNDX0JSQUNLRVRTIHwgRVNDX0RF RlVOQ1QgKQotICAgIGlmIChyZWFkX3VudmVjdG9yZWQoc3JjX2J1ZmZlciwgTUFYX0JVRlNaLCBk aXJlY3RvcnksICJjbWRsaW5lIiwgJyAnKSkKKyAgICBpZiAocmVhZF91bnZlY3RvcmVkKHNyY19i dWZmZXIsIE1BWF9CVUZTWiwgZGlyZWN0b3J5LCBwLT5kZmQsICJjbWRsaW5lIiwgJyAnKSkKICAg ICAgICAgZXNjYXBlX3N0cihkc3RfYnVmZmVyLCBzcmNfYnVmZmVyLCBNQVhfQlVGU1opOwogICAg IGVsc2UKICAgICAgICAgZXNjYXBlX2NvbW1hbmQoZHN0X2J1ZmZlciwgcCwgTUFYX0JVRlNaLCB1 RkxHKTsKQEAgLTk1Nyw3ICs5NjgsNyBAQCBzdGF0aWMgaW50IGZpbGxfY21kbGluZV9jdnQgKGNv bnN0IGNoYXIgKmRpcmVjdG9yeSwgcHJvY190ICpyZXN0cmljdCBwKSB7CiAgICAgLy8gZ3VhcmFu dGVlcyB0aGUgY2FsbGVyIGEgdmFsaWQgcHJvY190LmVudmlyb24gcG9pbnRlci4KIHN0YXRpYyBp bnQgZmlsbF9lbnZpcm9uX2N2dCAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBwcm9jX3QgKnJlc3Ry aWN0IHApIHsKICAgICBkc3RfYnVmZmVyWzBdID0gJ1wwJzsKLSAgICBpZiAocmVhZF91bnZlY3Rv cmVkKHNyY19idWZmZXIsIE1BWF9CVUZTWiwgZGlyZWN0b3J5LCAiZW52aXJvbiIsICcgJykpCisg ICAgaWYgKHJlYWRfdW52ZWN0b3JlZChzcmNfYnVmZmVyLCBNQVhfQlVGU1osIGRpcmVjdG9yeSwg cC0+ZGZkLCAiZW52aXJvbiIsICcgJykpCiAgICAgICAgIGVzY2FwZV9zdHIoZHN0X2J1ZmZlciwg c3JjX2J1ZmZlciwgTUFYX0JVRlNaKTsKICAgICBwLT5lbnZpcm9uID0gc3RyZHVwKGRzdF9idWZm ZXJbMF0gPyBkc3RfYnVmZmVyIDogIi0iKTsKICAgICBpZiAoIXAtPmVudmlyb24pCkBAIC05Njks NyArOTgwLDcgQEAgc3RhdGljIGludCBmaWxsX2Vudmlyb25fY3Z0IChjb25zdCBjaGFyICpkaXJl Y3RvcnksIHByb2NfdCAqcmVzdHJpY3QgcCkgewogICAgIC8vIFByb3ZpZGUgdGhlIG1lYW5zIHRv IHZhbHVlIHByb2NfdC5seGNuYW1lIChwZXJoYXBzIG9ubHkgd2l0aCAiLSIpIHdoaWxlCiAgICAg Ly8gdHJhY2tpbmcgYWxsIG5hbWVzIGFscmVhZHkgc2VlbiB0aHVzIGF2b2lkaW5nIHRoZSBvdmVy aGVhZCBvZiByZXBlYXRpbmcKICAgICAvLyBtYWxsb2MoKSBhbmQgZnJlZSgpIGNhbGxzLgotc3Rh dGljIGNoYXIgKmx4Y19jb250YWluZXJzIChjb25zdCBjaGFyICpwYXRoKSB7CitzdGF0aWMgY2hh ciAqbHhjX2NvbnRhaW5lcnMgKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGludCBkZmQpIHsKICAg ICBzdGF0aWMgX190aHJlYWQgc3RydWN0IHV0bGJ1Zl9zIHViID0geyBOVUxMLCAwIH07ICAgLy8g dXRpbCBidWZmZXIgZm9yIHdob2xlIGNncm91cAogICAgIHN0YXRpYyBjaGFyIGx4Y19ub25lW10g PSAiLSI7CiAgICAgc3RhdGljIGNoYXIgbHhjX29vcHNbXSA9ICI/IjsgICAgICAgICAgICAgIC8v IHVzZWQgd2hlbiBtZW1vcnkgYWxsb2MgZmFpbHMKQEAgLTk4OCw3ICs5OTksNyBAQCBzdGF0aWMg Y2hhciAqbHhjX2NvbnRhaW5lcnMgKGNvbnN0IGNoYXIgKnBhdGgpIHsKICAgICAgICAgICAgMjpu YW1lPXN5c3RlbWQ6LwogICAgICAgICAgICAxOmNwdXNldCxjcHUsY3B1YWNjdCxkZXZpY2VzLGZy ZWV6ZXIsbmV0X2NscyxibGtpbyxwZXJmX2V2ZW50LG5ldF9wcmlvOi9seGMvbHhjLVAKICAgICAq LwotICAgIGlmIChmaWxlMnN0cihwYXRoLCAiY2dyb3VwIiwgJnViKSA+IDApIHsKKyAgICBpZiAo ZmlsZTJzdHIocGF0aCwgZGZkLCAiY2dyb3VwIiwgJnViKSA+IDApIHsKICAgICAgICAgLyogb3Vj aCwgdGhlIG5leHQgZGVmYXVsdHMgY291bGQgYmUgY2hhbmdlZCBhdCBseGMgLi9jb25maWd1cmUg dGltZQogICAgICAgICAgICAoIGFuZCBhIGNoYW5nZWQgJ2x4Yy5jZ3JvdXAucGF0dGVybicgaXMg b25seSBhdmFpbGFibGUgdG8gcm9vdCApICovCiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICps eGNfZGVsbTEgPSAibHhjLnBheWxvYWQuIjsgICAgLy8gd2l0aCBseGMtNC4wLjAKQEAgLTEwNTUs MTIgKzEwNjYsMTkgQEAgc3RhdGljIGludCBsb2dpbl91aWQgKGNvbnN0IGNoYXIgKnBhdGgpIHsK IH0KIAogCi1zdGF0aWMgY2hhciAqcmVhZGxpbmtfZXhlIChjb25zdCBjaGFyICpwYXRoKXsKK3N0 YXRpYyBjaGFyICpyZWFkbGlua19leGUgKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGludCBkZmQp ewogICAgIGNoYXIgYnVmW1BST0NQQVRITEVOXTsKLSAgICBpbnQgaW47CisgICAgaW50IGluID0g LTE7CiAKLSAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMvZXhlIiwgcGF0aCk7Ci0g ICAgaW4gPSAoaW50KXJlYWRsaW5rKGJ1Ziwgc3JjX2J1ZmZlciwgTUFYX0JVRlNaLTEpOworICAg IGlmIChkZmQgPj0gMCkgeworICAgICAgICBpbiA9IChpbnQpcmVhZGxpbmthdChkZmQsICJleGUi LCBzcmNfYnVmZmVyLCBNQVhfQlVGU1otMSk7CisgICAgICAgIGlmIChpbiA8IDAgJiYgZXJybm8g IT0gRU5PU1lTKQorICAgICAgICAgICAgcmV0dXJuIHN0cmR1cCgiLSIpOworICAgIH0KKyAgICBp ZiAoaW4gPCAwKSB7IC8vZGZkPDAgb3IgRU5PU1lTCisgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6 ZW9mKGJ1ZiksICIlcy9leGUiLCBwYXRoKTsKKyAgICAgICAgaW4gPSAoaW50KXJlYWRsaW5rKGJ1 Ziwgc3JjX2J1ZmZlciwgTUFYX0JVRlNaLTEpOworICAgIH0KICAgICBpZiAoaW4gPiAwKSB7CiAg ICAgICAgIHNyY19idWZmZXJbaW5dID0gJ1wwJzsKICAgICAgICAgZXNjYXBlX3N0cihkc3RfYnVm ZmVyLCBzcmNfYnVmZmVyLCBNQVhfQlVGU1opOwpAQCAtMTEzMywyOCArMTE1MSwyOCBAQCBzdGF0 aWMgcHJvY190ICpzaW1wbGVfcmVhZHByb2MoUFJPQ1RBQiAqcmVzdHJpY3QgY29uc3QgUFQsIHBy b2NfdCAqcmVzdHJpY3QgY29ucwogICAgIHAtPmVnaWQgPSBzYi5zdF9naWQ7ICAgICAgICAgICAg ICAgICAgICAgICAgLyogbmVlZCBhIHdheSB0byBnZXQgcmVhbCBnaWQgKi8KIAogICAgIGlmIChm bGFncyAmIFBST0NfRklMTFNUQVQpIHsgICAgICAgICAgICAgICAgLy8gcmVhZCAvcHJvYy8jL3N0 YXQKLSAgICAgICAgaWYgKGZpbGUyc3RyKHBhdGgsICJzdGF0IiwgJnViKSA9PSAtMSkKKyAgICAg ICAgaWYgKGZpbGUyc3RyKHBhdGgsIHAtPmRmZCwgInN0YXQiLCAmdWIpID09IC0xKQogICAgICAg ICAgICAgZ290byBuZXh0X3Byb2M7CiAgICAgICAgIHJjICs9IHN0YXQycHJvYyh1Yi5idWYsIHAp OwogICAgIH0KIAogICAgIGlmIChmbGFncyAmIFBST0NfRklMTElPKSB7ICAgICAgICAgICAgICAg ICAgLy8gcmVhZCAvcHJvYy8jL2lvCi0gICAgICAgIGlmIChmaWxlMnN0cihwYXRoLCAiaW8iLCAm dWIpICE9IC0xKQorICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgcC0+ZGZkLCAiaW8iLCAmdWIp ICE9IC0xKQogICAgICAgICAgICAgaW8ycHJvYyh1Yi5idWYsIHApOwogICAgIH0KIAogICAgIGlm IChmbGFncyAmIFBST0NfRklMTFNNQVBTKSB7ICAgICAgICAgICAgICAgLy8gcmVhZCAvcHJvYy8j L3NtYXBzX3JvbGx1cAotICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgInNtYXBzX3JvbGx1cCIs ICZ1YikgIT0gLTEpCisgICAgICAgIGlmIChmaWxlMnN0cihwYXRoLCBwLT5kZmQsICJzbWFwc19y b2xsdXAiLCAmdWIpICE9IC0xKQogICAgICAgICAgICAgc21hcHMycHJvYyh1Yi5idWYsIHApOwog ICAgIH0KIAogICAgIGlmIChmbGFncyAmIFBST0NfRklMTE1FTSkgeyAgICAgICAgICAgICAgICAg Ly8gcmVhZCAvcHJvYy8jL3N0YXRtCi0gICAgICAgIGlmIChmaWxlMnN0cihwYXRoLCAic3RhdG0i LCAmdWIpICE9IC0xKQorICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgcC0+ZGZkLCAic3RhdG0i LCAmdWIpICE9IC0xKQogICAgICAgICAgICAgc3RhdG0ycHJvYyh1Yi5idWYsIHApOwogICAgIH0K IAogICAgIGlmIChmbGFncyAmIFBST0NfRklMTFNUQVRVUykgeyAgICAgICAgICAgICAgLy8gcmVh ZCAvcHJvYy8jL3N0YXR1cwotICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgInN0YXR1cyIsICZ1 YikgIT0gLTEpeworICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgcC0+ZGZkLCAic3RhdHVzIiwg JnViKSAhPSAtMSl7CiAgICAgICAgICAgICByYyArPSBzdGF0dXMycHJvYyh1Yi5idWYsIHAsIDEp OwogICAgICAgICAgICAgaWYgKGZsYWdzICYgKFBST0NfRklMTF9TVVBHUlAgJiB+UFJPQ19GSUxM U1RBVFVTKSkKICAgICAgICAgICAgICAgICByYyArPSBzdXBncnBzX2Zyb21fc3VwZ2lkcyhwKTsK QEAgLTExODMsMjcgKzEyMDEsMjcgQEAgc3RhdGljIHByb2NfdCAqc2ltcGxlX3JlYWRwcm9jKFBS T0NUQUIgKnJlc3RyaWN0IGNvbnN0IFBULCBwcm9jX3QgKnJlc3RyaWN0IGNvbnMKICAgICAgICAg cC0+ZWdyb3VwID0gcHdjYWNoZV9nZXRfZ3JvdXAocC0+ZWdpZCk7CiAKICAgICBpZiAoZmxhZ3Mg JiBQUk9DX0ZJTExFTlYpICAgICAgICAgICAgICAgICAgIC8vIHJlYWQgL3Byb2MvIy9lbnZpcm9u Ci0gICAgICAgIGlmICghKHAtPmVudmlyb25fdiA9IGZpbGUyc3RydmVjKHBhdGgsICJlbnZpcm9u IikpKQorICAgICAgICBpZiAoIShwLT5lbnZpcm9uX3YgPSBmaWxlMnN0cnZlYyhwYXRoLCBwLT5k ZmQsICJlbnZpcm9uIikpKQogICAgICAgICAgICAgcmMgKz0gdmVjdG9yaXplX2Rhc2hfcmMoJnAt PmVudmlyb25fdik7CiAgICAgaWYgKGZsYWdzICYgUFJPQ19FRElURU5WUkNWVCkKICAgICAgICAg cmMgKz0gZmlsbF9lbnZpcm9uX2N2dChwYXRoLCBwKTsKIAogICAgIGlmIChmbGFncyAmIFBST0Nf RklMTEFSRykgICAgICAgICAgICAgICAgICAgLy8gcmVhZCAvcHJvYy8jL2NtZGxpbmUKLSAgICAg ICAgaWYgKCEocC0+Y21kbGluZV92ID0gZmlsZTJzdHJ2ZWMocGF0aCwgImNtZGxpbmUiKSkpCisg ICAgICAgIGlmICghKHAtPmNtZGxpbmVfdiA9IGZpbGUyc3RydmVjKHBhdGgsIHAtPmRmZCwgImNt ZGxpbmUiKSkpCiAgICAgICAgICAgICByYyArPSB2ZWN0b3JpemVfZGFzaF9yYygmcC0+Y21kbGlu ZV92KTsKICAgICBpZiAoZmxhZ3MgJiBQUk9DX0VESVRDTURMQ1ZUKQogICAgICAgICByYyArPSBm aWxsX2NtZGxpbmVfY3Z0KHBhdGgsIHApOwogCiAgICAgaWYgKChmbGFncyAmIFBST0NfRklMTENH Uk9VUCkpICAgICAgICAgICAgICAvLyByZWFkIC9wcm9jLyMvY2dyb3VwCi0gICAgICAgIGlmICgh KHAtPmNncm91cF92ID0gZmlsZTJzdHJ2ZWMocGF0aCwgImNncm91cCIpKSkKKyAgICAgICAgaWYg KCEocC0+Y2dyb3VwX3YgPSBmaWxlMnN0cnZlYyhwYXRoLCBwLT5kZmQsICJjZ3JvdXAiKSkpCiAg ICAgICAgICAgICByYyArPSB2ZWN0b3JpemVfZGFzaF9yYygmcC0+Y2dyb3VwX3YpOwogICAgIGlm IChmbGFncyAmIFBST0NfRURJVENHUlBDVlQpCiAgICAgICAgIHJjICs9IGZpbGxfY2dyb3VwX2N2 dChwYXRoLCBwKTsKIAogICAgIGlmIChmbGFncyAmIFBST0NfRklMTE9PTSkgewotICAgICAgICBp ZiAoZmlsZTJzdHIocGF0aCwgIm9vbV9zY29yZSIsICZ1YikgIT0gLTEpCisgICAgICAgIGlmIChm aWxlMnN0cihwYXRoLCBwLT5kZmQsICJvb21fc2NvcmUiLCAmdWIpICE9IC0xKQogICAgICAgICAg ICAgb29tc2NvcmUycHJvYyh1Yi5idWYsIHApOwotICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwg Im9vbV9zY29yZV9hZGoiLCAmdWIpICE9IC0xKQorICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwg cC0+ZGZkLCAib29tX3Njb3JlX2FkaiIsICZ1YikgIT0gLTEpCiAgICAgICAgICAgICBvb21hZGoy cHJvYyh1Yi5idWYsIHApOwogICAgIH0KIApAQCAtMTIxNSwxMyArMTIzMywxMyBAQCBzdGF0aWMg cHJvY190ICpzaW1wbGVfcmVhZHByb2MoUFJPQ1RBQiAqcmVzdHJpY3QgY29uc3QgUFQsIHByb2Nf dCAqcmVzdHJpY3QgY29ucwogICAgICAgICByYyArPSBzZDJwcm9jKHApOwogCiAgICAgaWYgKGZs YWdzICYgUFJPQ19GSUxMX0xYQykgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0aGUgbHhjIG5h bWUKLSAgICAgICAgcC0+bHhjbmFtZSA9IGx4Y19jb250YWluZXJzKHBhdGgpOworICAgICAgICBw LT5seGNuYW1lID0gbHhjX2NvbnRhaW5lcnMocGF0aCwgcC0+ZGZkKTsKIAogICAgIGlmIChmbGFn cyAmIFBST0NfRklMTF9MVUlEKSAgICAgICAgICAgICAgICAgLy8gdmFsdWUgdGhlIGxvZ2luIHVz ZXIgaWQKICAgICAgICAgcC0+bHVpZCA9IGxvZ2luX3VpZChwYXRoKTsKIAogICAgIGlmIChmbGFn cyAmIFBST0NfRklMTF9FWEUpIHsKLSAgICAgICAgaWYgKCEocC0+ZXhlID0gcmVhZGxpbmtfZXhl KHBhdGgpKSkKKyAgICAgICAgaWYgKCEocC0+ZXhlID0gcmVhZGxpbmtfZXhlKHBhdGgsIHAtPmRm ZCkpKQogICAgICAgICAgICAgcmMgKz0gMTsKICAgICB9CiAKQEAgLTEyNjIsMjggKzEyODAsMjgg QEAgc3RhdGljIHByb2NfdCAqc2ltcGxlX3JlYWR0YXNrKFBST0NUQUIgKnJlc3RyaWN0IGNvbnN0 IFBULCBwcm9jX3QgKnJlc3RyaWN0IGNvbnMKICAgICB0LT5lZ2lkID0gc2Iuc3RfZ2lkOyAgICAg ICAgICAgICAgICAgICAgICAgIC8qIG5lZWQgYSB3YXkgdG8gZ2V0IHJlYWwgZ2lkICovCiAKICAg ICBpZiAoZmxhZ3MgJiBQUk9DX0ZJTExTVEFUKSB7ICAgICAgICAgICAgICAgIC8vIHJlYWQgL3By b2MvIy90YXNrLyMvc3RhdAotICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgInN0YXQiLCAmdWIp ID09IC0xKQorICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgdC0+ZGZkLCAic3RhdCIsICZ1Yikg PT0gLTEpCiAgICAgICAgICAgICBnb3RvIG5leHRfdGFzazsKICAgICAgICAgcmMgKz0gc3RhdDJw cm9jKHViLmJ1ZiwgdCk7CiAgICAgfQogCiAgICAgaWYgKGZsYWdzICYgUFJPQ19GSUxMSU8pIHsg ICAgICAgICAgICAgICAgICAvLyByZWFkIC9wcm9jLyMvdGFzay8jL2lvCi0gICAgICAgIGlmIChm aWxlMnN0cihwYXRoLCAiaW8iLCAmdWIpICE9IC0xKQorICAgICAgICBpZiAoZmlsZTJzdHIocGF0 aCwgdC0+ZGZkLCAiaW8iLCAmdWIpICE9IC0xKQogICAgICAgICAgICAgaW8ycHJvYyh1Yi5idWYs IHQpOwogICAgIH0KIAogICAgIGlmIChmbGFncyAmIFBST0NfRklMTFNNQVBTKSB7ICAgICAgICAg ICAgICAgLy8gcmVhZCAvcHJvYy8jL3Rhc2svIy9zbWFwc19yb2xsdXAKLSAgICAgICAgaWYgKGZp bGUyc3RyKHBhdGgsICJzbWFwc19yb2xsdXAiLCAmdWIpICE9IC0xKQorICAgICAgICBpZiAoZmls ZTJzdHIocGF0aCwgdC0+ZGZkLCAic21hcHNfcm9sbHVwIiwgJnViKSAhPSAtMSkKICAgICAgICAg ICAgIHNtYXBzMnByb2ModWIuYnVmLCB0KTsKICAgICB9CiAKICAgICBpZiAoZmxhZ3MgJiBQUk9D X0ZJTExNRU0pIHsgICAgICAgICAgICAgICAgIC8vIHJlYWQgL3Byb2MvIy90YXNrLyMvc3RhdG0K LSAgICAgICAgaWYgKGZpbGUyc3RyKHBhdGgsICJzdGF0bSIsICZ1YikgIT0gLTEpCisgICAgICAg IGlmIChmaWxlMnN0cihwYXRoLCB0LT5kZmQsICJzdGF0bSIsICZ1YikgIT0gLTEpCiAgICAgICAg ICAgICBzdGF0bTJwcm9jKHViLmJ1ZiwgdCk7CiAgICAgfQogCiAgICAgaWYgKGZsYWdzICYgUFJP Q19GSUxMU1RBVFVTKSB7ICAgICAgICAgICAgICAvLyByZWFkIC9wcm9jLyMvdGFzay8jL3N0YXR1 cwotICAgICAgICBpZiAoZmlsZTJzdHIocGF0aCwgInN0YXR1cyIsICZ1YikgIT0gLTEpIHsKKyAg ICAgICAgaWYgKGZpbGUyc3RyKHBhdGgsIHQtPmRmZCwgInN0YXR1cyIsICZ1YikgIT0gLTEpIHsK ICAgICAgICAgICAgIHJjICs9IHN0YXR1czJwcm9jKHViLmJ1ZiwgdCwgMCk7CiAgICAgICAgICAg ICBpZiAoZmxhZ3MgJiAoUFJPQ19GSUxMX1NVUEdSUCAmIH5QUk9DX0ZJTExTVEFUVVMpKQogICAg ICAgICAgICAgICAgIHJjICs9IHN1cGdycHNfZnJvbV9zdXBnaWRzKHQpOwpAQCAtMTMxMSwxOSAr MTMyOSwxOSBAQCBzdGF0aWMgcHJvY190ICpzaW1wbGVfcmVhZHRhc2soUFJPQ1RBQiAqcmVzdHJp Y3QgY29uc3QgUFQsIHByb2NfdCAqcmVzdHJpY3QgY29ucwogICAgIGlmICghSVNfVEhSRUFEKHQp KSB7CiAjZW5kaWYKICAgICBpZiAoZmxhZ3MgJiBQUk9DX0ZJTExBUkcpICAgICAgICAgICAgICAg ICAgIC8vIHJlYWQgL3Byb2MvIy90YXNrLyMvY21kbGluZQotICAgICAgICBpZiAoISh0LT5jbWRs aW5lX3YgPSBmaWxlMnN0cnZlYyhwYXRoLCAiY21kbGluZSIpKSkKKyAgICAgICAgaWYgKCEodC0+ Y21kbGluZV92ID0gZmlsZTJzdHJ2ZWMocGF0aCwgdC0+ZGZkLCAiY21kbGluZSIpKSkKICAgICAg ICAgICAgIHJjICs9IHZlY3Rvcml6ZV9kYXNoX3JjKCZ0LT5jbWRsaW5lX3YpOwogICAgIGlmIChm bGFncyAmIFBST0NfRURJVENNRExDVlQpCiAgICAgICAgIHJjICs9IGZpbGxfY21kbGluZV9jdnQo cGF0aCwgdCk7CiAKICAgICBpZiAoZmxhZ3MgJiBQUk9DX0ZJTExFTlYpICAgICAgICAgICAgICAg ICAgIC8vIHJlYWQgL3Byb2MvIy90YXNrLyMvZW52aXJvbgotICAgICAgICBpZiAoISh0LT5lbnZp cm9uX3YgPSBmaWxlMnN0cnZlYyhwYXRoLCAiZW52aXJvbiIpKSkKKyAgICAgICAgaWYgKCEodC0+ ZW52aXJvbl92ID0gZmlsZTJzdHJ2ZWMocGF0aCwgdC0+ZGZkLCAiZW52aXJvbiIpKSkKICAgICAg ICAgICAgIHJjICs9IHZlY3Rvcml6ZV9kYXNoX3JjKCZ0LT5lbnZpcm9uX3YpOwogICAgIGlmIChm bGFncyAmIFBST0NfRURJVEVOVlJDVlQpCiAgICAgICAgIHJjICs9IGZpbGxfZW52aXJvbl9jdnQo cGF0aCwgdCk7CiAKICAgICBpZiAoKGZsYWdzICYgUFJPQ19GSUxMQ0dST1VQKSkgICAgICAgICAg ICAgIC8vIHJlYWQgL3Byb2MvIy90YXNrLyMvY2dyb3VwCi0gICAgICAgIGlmICghKHQtPmNncm91 cF92ID0gZmlsZTJzdHJ2ZWMocGF0aCwgImNncm91cCIpKSkKKyAgICAgICAgaWYgKCEodC0+Y2dy b3VwX3YgPSBmaWxlMnN0cnZlYyhwYXRoLCB0LT5kZmQsICJjZ3JvdXAiKSkpCiAgICAgICAgICAg ICByYyArPSB2ZWN0b3JpemVfZGFzaF9yYygmdC0+Y2dyb3VwX3YpOwogICAgIGlmIChmbGFncyAm IFBST0NfRURJVENHUlBDVlQpCiAgICAgICAgIHJjICs9IGZpbGxfY2dyb3VwX2N2dChwYXRoLCB0 KTsKQEAgLTEzMzIsNyArMTM1MCw3IEBAIHN0YXRpYyBwcm9jX3QgKnNpbXBsZV9yZWFkdGFzayhQ Uk9DVEFCICpyZXN0cmljdCBjb25zdCBQVCwgcHJvY190ICpyZXN0cmljdCBjb25zCiAgICAgICAg IHJjICs9IHNkMnByb2ModCk7CiAKICAgICBpZiAoZmxhZ3MgJiBQUk9DX0ZJTExfRVhFKSB7Ci0g ICAgICAgIGlmICghKHQtPmV4ZSA9IHJlYWRsaW5rX2V4ZShwYXRoKSkpCisgICAgICAgIGlmICgh KHQtPmV4ZSA9IHJlYWRsaW5rX2V4ZShwYXRoLCB0LT5kZmQpKSkKICAgICAgICAgICAgIHJjICs9 IDE7CiAgICAgfQogI2lmZGVmIEZBTFNFX1RIUkVBRFMKQEAgLTEzNDAsMTYgKzEzNTgsMTYgQEAg c3RhdGljIHByb2NfdCAqc2ltcGxlX3JlYWR0YXNrKFBST0NUQUIgKnJlc3RyaWN0IGNvbnN0IFBU LCBwcm9jX3QgKnJlc3RyaWN0IGNvbnMKICNlbmRpZgogCiAgICAgaWYgKGZsYWdzICYgUFJPQ19G SUxMT09NKSB7Ci0gICAgICAgIGlmIChmaWxlMnN0cihwYXRoLCAib29tX3Njb3JlIiwgJnViKSAh PSAtMSkKKyAgICAgICAgaWYgKGZpbGUyc3RyKHBhdGgsIHQtPmRmZCwgIm9vbV9zY29yZSIsICZ1 YikgIT0gLTEpCiAgICAgICAgICAgICBvb21zY29yZTJwcm9jKHViLmJ1ZiwgdCk7Ci0gICAgICAg IGlmIChmaWxlMnN0cihwYXRoLCAib29tX3Njb3JlX2FkaiIsICZ1YikgIT0gLTEpCisgICAgICAg IGlmIChmaWxlMnN0cihwYXRoLCB0LT5kZmQsICJvb21fc2NvcmVfYWRqIiwgJnViKSAhPSAtMSkK ICAgICAgICAgICAgIG9vbWFkajJwcm9jKHViLmJ1ZiwgdCk7CiAgICAgfQogICAgIGlmIChmbGFn cyAmIFBST0NfRklMTE5TKSAgICAgICAgICAgICAgICAgICAgLy8gcmVhZCAvcHJvYy8jL3Rhc2sv Iy9ucy8qCiAgICAgICAgIHByb2Nwc19uc19yZWFkX3BpZCh0LT50aWQsICYodC0+bnMpKTsKIAog ICAgIGlmIChmbGFncyAmIFBST0NfRklMTF9MWEMpCi0gICAgICAgIHQtPmx4Y25hbWUgPSBseGNf Y29udGFpbmVycyhwYXRoKTsKKyAgICAgICAgdC0+bHhjbmFtZSA9IGx4Y19jb250YWluZXJzKHBh dGgsIHQtPmRmZCk7CiAKICAgICBpZiAoZmxhZ3MgJiBQUk9DX0ZJTExfTFVJRCkKICAgICAgICAg dC0+bHVpZCA9IGxvZ2luX3VpZChwYXRoKTsKQEAgLTEzNzgsNiArMTM5NiwxMCBAQCBzdGF0aWMg aW50IHNpbXBsZV9uZXh0cGlkKFBST0NUQUIgKnJlc3RyaWN0IGNvbnN0IFBULCBwcm9jX3QgKnJl c3RyaWN0IGNvbnN0IHApCiAgICAgICAgICAgICBwLT50Z2lkID0gc3RydG91bChlbnQtPmRfbmFt ZSwgTlVMTCwgMTApOwogICAgICAgICAgICAgaWYgKGVycm5vID09IDApIHsKICAgICAgICAgICAg ICAgICBwLT50aWQgPSBwLT50Z2lkOworICAgICAgICAgICAgICAgIGlmIChQVC0+cHJvY2ZzX2Zk ID49IDApCisgICAgICAgICAgICAgICAgICAgIHAtPmRmZCA9IG9wZW5hdChQVC0+cHJvY2ZzX2Zk LCBlbnQtPmRfbmFtZSwgT19QQVRIIHwgT19ESVJFQ1RPUlkpOworICAgICAgICAgICAgICAgIGVs c2UKKyAgICAgICAgICAgICAgICAgICAgcC0+ZGZkID0gLTE7CiAgICAgICAgICAgICAgICAgc25w cmludGYocGF0aCwgUFJPQ1BBVEhMRU4sICIvcHJvYy8lZCIsIHAtPnRnaWQpOwogICAgICAgICAg ICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgfQpAQCAtMTM5NSwxMSArMTQxNywyNCBAQCBz dGF0aWMgaW50IHNpbXBsZV9uZXh0dGlkKFBST0NUQUIgKnJlc3RyaWN0IGNvbnN0IFBULCBjb25z dCBwcm9jX3QgKnJlc3RyaWN0IGNvbgogICBpZihQVC0+dGFza2Rpcl91c2VyICE9IHAtPnRnaWQp ewogICAgIGlmKFBULT50YXNrZGlyKXsKICAgICAgIGNsb3NlZGlyKFBULT50YXNrZGlyKTsKKwog ICAgIH0KKyAgICBpZiAoUFQtPnRhc2tkaXJfZmQgPj0gMCkKKyAgICAgICAgY2xvc2UoUFQtPnRh c2tkaXJfZmQpOwogICAgIC8vIHVzZSAicGF0aCIgYXMgc29tZSB0bXAgc3BhY2UKLSAgICBzbnBy aW50ZihwYXRoLCBQUk9DUEFUSExFTiwgIi9wcm9jLyVkL3Rhc2siLCBwLT50Z2lkKTsKLSAgICBQ VC0+dGFza2RpciA9IG9wZW5kaXIocGF0aCk7Ci0gICAgaWYoIVBULT50YXNrZGlyKSByZXR1cm4g MDsKKyAgICBpZiAocC0+ZGZkID49IDApIHsKKyAgICAgICAgUFQtPnRhc2tkaXJfZmQgPSBvcGVu YXQocC0+ZGZkLCAidGFzayIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOworICAgICAgICBpZiAo UFQtPnRhc2tkaXJfZmQgPCAwKSByZXR1cm4gMDsKKyAgICAgICAgUFQtPnRhc2tkaXIgPSBmZG9w ZW5kaXIoUFQtPnRhc2tkaXJfZmQpOworICAgICAgICBpZighUFQtPnRhc2tkaXIpIHsKKyAgICAg ICAgICAgIGNsb3NlKFBULT50YXNrZGlyX2ZkKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc25wcmludGYocGF0aCwgUFJPQ1BBVEhMRU4s ICIvcHJvYy8lZC90YXNrIiwgcC0+dGdpZCk7CisgICAgICAgIFBULT50YXNrZGlyID0gb3BlbmRp cihwYXRoKTsKKyAgICAgICAgaWYoIVBULT50YXNrZGlyKSByZXR1cm4gMDsKKyAgICB9CiAgICAg UFQtPnRhc2tkaXJfdXNlciA9IHAtPnRnaWQ7CiAgIH0KICAgZm9yICg7OykgewpAQCAtMTQxMCw2 ICsxNDQ1LDggQEAgc3RhdGljIGludCBzaW1wbGVfbmV4dHRpZChQUk9DVEFCICpyZXN0cmljdCBj b25zdCBQVCwgY29uc3QgcHJvY190ICpyZXN0cmljdCBjb24KICAgdC0+dGlkID0gc3RydG91bChl bnQtPmRfbmFtZSwgTlVMTCwgMTApOwogICB0LT50Z2lkID0gcC0+dGdpZDsKIC8vdC0+cHBpZCA9 IHAtPnBwaWQ7ICAvLyBjb3ZlciBmb3Iga2VybmVsIGJlaGF2aW9yPyB3ZSB3YW50IGJvdGggYWN0 dWFsbHkuLi4/CisgIGlmIChQVC0+dGFza2Rpcl9mZCA+PSAwKQorICAgICAgdC0+ZGZkID0gb3Bl bmF0KFBULT50YXNrZGlyX2ZkLCBlbnQtPmRfbmFtZSwgT19QQVRIIHwgT19ESVJFQ1RPUlkpOwog ICBzbnByaW50ZihwYXRoLCBQUk9DUEFUSExFTiwgIi9wcm9jLyVkL3Rhc2svJS4xMHMiLCBwLT50 Z2lkLCBlbnQtPmRfbmFtZSk7CiAgIHJldHVybiAxOwogfQpAQCAtMTQyNCw2ICsxNDYxLDEwIEBA IHN0YXRpYyBpbnQgbGlzdGVkX25leHRwaWQgKFBST0NUQUIgKlBULCBwcm9jX3QgKnApIHsKICAg Y2hhciAqcGF0aCA9IFBULT5wYXRoOwogCiAgIGlmIChwaWQpIHsKKyAgICBpZiAoUFQtPnByb2Nm c19mZCA+PSAwKXsKKyAgICAgIHNucHJpbnRmKHBhdGgsIFBST0NQQVRITEVOLCAiJWQiLCBwaWQp OworICAgICAgcC0+ZGZkID0gb3BlbmF0KFBULT5wcm9jZnNfZmQsIHBhdGgsIE9fUEFUSCB8IE9f RElSRUNUT1JZKTsKKyAgICB9CiAgICAgc25wcmludGYocGF0aCwgUFJPQ1BBVEhMRU4sICIvcHJv Yy8lZCIsIHBpZCk7CiAgICAgcC0+dGlkID0gcC0+dGdpZCA9IHBpZDsgICAgICAgIC8vIHRoaXMg dGdpZCBtYXkgYmUgYSBodWdlIGZpYiB8CiAKQEAgLTE0MzIsNyArMTQ3Myw3IEBAIHN0YXRpYyBp bnQgbGlzdGVkX25leHRwaWQgKFBST0NUQUIgKlBULCBwcm9jX3QgKnApIHsKICAgICAgICBkZWFs aW5nIHdpdGggZmV3ZXIgcHJvY2Vzc2VzLCB1bmxpa2UgdGhlIG90aGVyICduZXh0JyBndXlzIHwK ICAgICAgICAocGx1cyB3ZSBuZWVkIG5vdCBwYXJzZSB0aGUgd2hvbGUgdGhpbmcgbGlrZSBzdGF0 dXMycHJvYykhIHwgKi8KIAotICAgIGlmIChmaWxlMnN0cihwYXRoLCAic3RhdHVzIiwgJnViKSAh PSAtMSkgeworICAgIGlmIChmaWxlMnN0cihwYXRoLCBwLT5kZmQsICJzdGF0dXMiLCAmdWIpICE9 IC0xKSB7CiAgICAgICBjaGFyICpzdHIgPSBzdHJzdHIodWIuYnVmLCAiVGdpZDoiKTsKICAgICAg IGlmIChzdHIpCiAgICAgICAgIHAtPnRnaWQgPSBhdG9pKHN0ciArIDUpOyAgIC8vIHRoaXMgdGdp ZCBpcyB0aGUgcHJvcGVyIG9uZSB8CkBAIC0xNDc4LDcgKzE1MTksNyBAQCBvdXQ6CiAvLyB0aGUg bmV4dCB1bmlxdWUgcHJvY2VzcyBvciB0YXNrIGF2YWlsYWJsZS4gIElmIG5vIG1vcmUgYXJlIGF2 YWlsYWJsZSwKIC8vIHJldHVybiBhIG51bGwgcG9pbnRlciAoYm9vbGVhbiBmYWxzZSkuCiBwcm9j X3QgKnJlYWRlaXRoZXIgKFBST0NUQUIgKnJlc3RyaWN0IGNvbnN0IFBULCBwcm9jX3QgKnJlc3Ry aWN0IHgpIHsKLSAgICBzdGF0aWMgX190aHJlYWQgcHJvY190IHNrZWxfcDsgICAgLy8gc2tlbGV0 b24gcHJvY190LCBvbmx5IHVzZXMgdGlkICsgdGdpZAorICAgIHN0YXRpYyBfX3RocmVhZCBwcm9j X3Qgc2tlbF9wOyAgICAvLyBza2VsZXRvbiBwcm9jX3QsIG9ubHkgdXNlcyB0aWQgKyB0Z2lkICsg ZGZkCiAgICAgc3RhdGljIF9fdGhyZWFkIHByb2NfdCAqbmV3X3A7ICAgIC8vIGZvciBwcm9jZXNz L3Rhc2sgdHJhbnNpdGlvbnMKICAgICBzdGF0aWMgX190aHJlYWQgaW50IGNhbmFyeSwgbGVhZGVy OwogICAgIGNoYXIgcGF0aFtQUk9DUEFUSExFTl07CkBAIC0xNDk1LDcgKzE1MzYsNyBAQCBuZXh0 X3Byb2M6CiAgICAgbmV3X3AgPSBOVUxMOwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKGVy cm5vID09IEVOT01FTSkgZ290byBlbmRfcHJvY3M7Ci0gICAgICAgIC8vIGZpbGxzIGluIHRoZSBQ VC0+cGF0aCwgcGx1cyBza2VsX3AudGlkIGFuZCBza2VsX3AudGdpZAorICAgICAgICAvLyBmaWxs cyBpbiB0aGUgUFQtPnBhdGgsIHBsdXMgc2tlbC5kZmQsIHNrZWxfcC50aWQgYW5kIHNrZWxfcC50 Z2lkCiAgICAgICAgIGlmICghUFQtPmZpbmRlcihQVCwmc2tlbF9wKSkgZ290byBlbmRfcHJvY3M7 ICAgICAgIC8vIHNpbXBsZV9uZXh0cGlkCiAgICAgICAgIGxlYWRlciA9IHNrZWxfcC50aWQ7CiAg ICAgICAgIGlmICghdGFza19kaXJfbWlzc2luZykgYnJlYWs7CkBAIC0xNTQxLDYgKzE1ODIsNyBA QCBQUk9DVEFCICpvcGVucHJvYyh1bnNpZ25lZCBmbGFncywgLi4uKSB7CiAgICAgICAgIGRpZF9z dGF0ID0gMTsKICAgICB9CiAgICAgUFQtPnRhc2tkaXIgPSBOVUxMOworICAgIFBULT50YXNrZGly X2ZkID0gLTE7CiAgICAgUFQtPnRhc2tkaXJfdXNlciA9IC0xOwogICAgIFBULT50YXNrZmluZGVy ID0gc2ltcGxlX25leHR0aWQ7CiAgICAgUFQtPnRhc2tyZWFkZXIgPSBzaW1wbGVfcmVhZHRhc2s7 CkBAIC0xNTQ4LDEwICsxNTkwLDI3IEBAIFBST0NUQUIgKm9wZW5wcm9jKHVuc2lnbmVkIGZsYWdz LCAuLi4pIHsKICAgICBQVC0+cmVhZGVyID0gc2ltcGxlX3JlYWRwcm9jOwogICAgIGlmIChmbGFn cyAmIFBST0NfUElEKXsKICAgICAgICAgUFQtPnByb2NmcyA9IE5VTEw7CisgICAgICAgIFBULT5w cm9jZnNfZmQgPSAtMTsKICAgICAgICAgUFQtPmZpbmRlciA9IGxpc3RlZF9uZXh0cGlkOwogICAg IH1lbHNlewotICAgICAgICBQVC0+cHJvY2ZzID0gb3BlbmRpcigiL3Byb2MiKTsKLSAgICAgICAg aWYgKCFQVC0+cHJvY2ZzKSB7IGZyZWUoUFQpOyByZXR1cm4gTlVMTDsgfQorICAgICAgICBQVC0+ cHJvY2ZzX2ZkID0gb3BlbmF0KC0xLCAiL3Byb2MiLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsK KyAgICAgICAgaWYgKFBULT5wcm9jZnNfZmQgPj0gMCkgeworICAgICAgICAgICAgUFQtPnByb2Nm cyA9IGZkb3BlbmRpcihQVC0+cHJvY2ZzX2ZkKTsKKyAgICAgICAgICAgIGlmICghUFQtPnByb2Nm cykgeworICAgICAgICAgICAgICAgIGNsb3NlKFBULT5wcm9jZnNfZmQpOworICAgICAgICAgICAg ICAgIGZyZWUoUFQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAg fQorICAgICAgICB9IGVsc2UgaWYgKGVycm5vID09IEVOT1NZUykgeworICAgICAgICAgICAgUFQt PnByb2NmcyA9IG9wZW5kaXIoIi9wcm9jIik7CisgICAgICAgICAgICBpZiAoIVBULT5wcm9jZnMp IHsKKyAgICAgICAgICAgICAgICBmcmVlKFBUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVM TDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZyZWUoUFQp OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUFQtPmZpbmRl ciA9IHNpbXBsZV9uZXh0cGlkOwogICAgIH0KICAgICBQVC0+ZmxhZ3MgPSBmbGFnczsKQEAgLTE1 OTQsNyArMTY1MywxMCBAQCBQUk9DVEFCICpvcGVucHJvYyh1bnNpZ25lZCBmbGFncywgLi4uKSB7 CiB2b2lkIGNsb3NlcHJvYyhQUk9DVEFCICpQVCkgewogICAgIGlmIChQVCl7CiAgICAgICAgIGlm IChQVC0+cHJvY2ZzKSBjbG9zZWRpcihQVC0+cHJvY2ZzKTsKKyAgICAgICAgaWYgKFBULT5wcm9j ZnNfZmQgPj0gMCkgY2xvc2UoUFQtPnByb2Nmc19mZCk7CiAgICAgICAgIGlmIChQVC0+dGFza2Rp cikgY2xvc2VkaXIoUFQtPnRhc2tkaXIpOworICAgICAgICBpZiAoUFQtPnRhc2tkaXJfZmQgPj0g MCkgY2xvc2UoUFQtPnRhc2tkaXJfZmQpOworCiAgICAgICAgIG1lbXNldChQVCwnIycsc2l6ZW9m KFBST0NUQUIpKTsKICAgICAgICAgZnJlZShQVCk7CiAgICAgfQpAQCAtMTYwOCw3ICsxNjcwLDcg QEAgaW50IGxvb2tfdXBfb3VyX3NlbGYodm9pZCkgewogICAgIHByb2NfdCBwOwogCiAgICAgbWVt c2V0KCZwLCAwLCBzaXplb2YocHJvY190KSk7Ci0gICAgaWYoZmlsZTJzdHIoIi9wcm9jL3NlbGYi LCAic3RhdCIsICZ1YikgPT0gLTEpeworICAgIGlmKGZpbGUyc3RyKCIvcHJvYy9zZWxmIiwgLTEs ICJzdGF0IiwgJnViKSA9PSAtMSl7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IsIGRv IHRoaXM6IG1vdW50IC10IHByb2MgcHJvYyAvcHJvY1xuIik7CiAgICAgICAgIF9leGl0KDQ3KTsK ICAgICB9Ci0tIAoyLjM1LjEKCg== --00000000000022a0b105f2aff874--