From mboxrd@z Thu Jan 1 00:00:00 1970 From: Emil Condrea Subject: [PATCH 18/19] Qemu-Xen-vTPM: Qemu vTPM xenstubdoms backend Date: Sun, 10 Jul 2016 14:47:49 +0300 Message-ID: <1468151270-12984-19-git-send-email-emilcondrea@gmail.com> References: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468151270-12984-1-git-send-email-emilcondrea@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: wei.liu2@citrix.com, stefanb@linux.vnet.ibm.com, stefano.stabellini@eu.citrix.com, xen-devel@lists.xen.org, quan.xu@intel.com, dgdegra@tycho.nsa.gov, eblake@redhat.com, emilcondrea@gmail.com List-Id: xen-devel@lists.xenproject.org VGhpcyBQYXRjaCBwcm92aWRlcyB0aGUgZ2x1ZSBmb3IgdGhlIFRQTV9USVMoUWVtdSBmcm9udGVu ZCkgdG8gWGVuCnN0dWJkb20gdlRQTSBkb21haW4gdGhhdCBwcm92aWRlcyB0aGUgYWN0dWFsIFRQ TSBmdW5jdGlvbmFsaXR5LiBJdApzZW5kcyBkYXRhIGFuZCBUUE0gY29tbWVuZHMgd2l0aCB4ZW5f dnRwbV9mcm9udGVuZC4gSXQgaXMgc2ltaWxhciBhcwphbm90aGVyIHR3byB2VFBNIGJhY2tlbmRz OgogICp2VFBNIHBhc3N0aHJvdWdoIGJhY2tlbmQgU2luY2UgUUVNVSAxLjUuCiAgKnZUUE0gbGli dHBtcy1iYXNlZCBiYWNrZW5kLgoKU29tZSBkZXRhaWxzOgpUaGlzIHBhcnQgb2YgdGhlIHBhdGNo IHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBzcGF3bmluZyBvZiBhIHRocmVhZAp0aGF0IHdpbGwg aW50ZXJhY3Qgd2l0aCBzdHViZG9tIHZUUE0gZG9tYWluIGJ5IHRoZSB4ZW5fdnRwbV9mcm9udGVu ZC4KSXQgZXhwZWN0cyBhIHNpZ25hbCBmcm9tIHRoZSBmcm9udGVuZCB0byB3YWtlIGFuZCBwaWNr IHVwIHRoZSBUUE0KY29tbWFuZCB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIHByb2Nlc3NlZCBhbmQg ZGVsaXZlcnMgdGhlIHJlc3BvbnNlCnBhY2tldCB1c2luZyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHBy b3ZpZGVkIGJ5IHRoZSBmcm9udGVuZC4KClRoZSBiYWNrZW5kIGNvbm5lY3RzIGl0c2VsZiB0byB0 aGUgZnJvbnRlbmQgYnkgZmlsbGluZyBvdXQgYW4gaW50ZXJmYWNlCnN0cnVjdHVyZSB3aXRoIHBv aW50ZXJzIHRvIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgdmFyaW91cwpv cGVyYXRpb25zLgoKKFFFTVUpIHZUUE0gWGVuU3R1YmRvbXMgYmFja2VuZCBpcyBpbml0aWFsaXpl ZCBieSBRZW11IGNvbW1hbmQgbGluZSBvcHRpb25zLAogICAgICAiLXRwbWRldiB4ZW5zdHViZG9t cyxpZD14ZW52dHBtMCAtZGV2aWNlIHRwbS10aXMsdHBtZGV2PXhlbnZ0cG0wIgoKU2lnbmVkLW9m Zi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEVtaWwgQ29u ZHJlYSA8ZW1pbGNvbmRyZWFAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdlciA8 c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+CgotLS0KQ2hhbmdlcyBpbiB2OToKICogYWRkZWQg cmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcgYW5kIGdldF90cG1fdmVyc2lvbiBmb3IgVFBNRHJp dmVyT3BzCiAqIHJlYWRkZWQgdHBtX2JhY2tlbmRfdGhyZWFkX3RwbV9yZXNldCB3aGljaCB3YXMg cmVtb3ZlZCBiZWNhdXNlIGl0CndhcyBub3QgdXNlZAogKiB0cG1feGVuc3R1YmRvbXNfdW5peF90 cmFuc2ZlciB1c2UgeGVuc3RvcmVfdnRwbV9kZXYgaW5zdGVhZCBvZiB4ZW5zdG9yZV9kZXYKLS0t CiBiYWNrZW5kcy90cG0uYyAgICAgICAgICAgICAgICAgICB8ICAxMSArKwogaHcvdHBtL01ha2Vm aWxlLm9ianMgICAgICAgICAgICAgfCAgIDIgKy0KIGh3L3RwbS90cG1feGVuc3R1YmRvbXMuYyAg ICAgICAgIHwgMjg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9zeXNlbXUvdHBtX2JhY2tlbmRfaW50LmggfCAgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCAy OTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3L3Rw bS90cG1feGVuc3R1YmRvbXMuYwoKZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3RwbS5jIGIvYmFja2Vu ZHMvdHBtLmMKaW5kZXggNTM2ZjI2Mi4uOWUwZGZhYSAxMDA2NDQKLS0tIGEvYmFja2VuZHMvdHBt LmMKKysrIGIvYmFja2VuZHMvdHBtLmMKQEAgLTE4MSw2ICsxODEsMTcgQEAgdm9pZCB0cG1fYmFj a2VuZF90aHJlYWRfZW5kKFRQTUJhY2tlbmRUaHJlYWQgKnRidCkKICAgICB9CiB9CiAKK3ZvaWQg dHBtX2JhY2tlbmRfdGhyZWFkX3RwbV9yZXNldChUUE1CYWNrZW5kVGhyZWFkICp0YnQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Z1bmMgZnVuYywgZ3BvaW50ZXIgdXNlcl9k YXRhKQoreworICAgIGlmICghdGJ0LT5wb29sKSB7CisgICAgICAgIHRwbV9iYWNrZW5kX3RocmVh ZF9jcmVhdGUodGJ0LCBmdW5jLCB1c2VyX2RhdGEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdf dGhyZWFkX3Bvb2xfcHVzaCh0YnQtPnBvb2wsIChncG9pbnRlcilUUE1fQkFDS0VORF9DTURfVFBN X1JFU0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQorfQorCiBz dGF0aWMgY29uc3QgVHlwZUluZm8gdHBtX2JhY2tlbmRfaW5mbyA9IHsKICAgICAubmFtZSA9IFRZ UEVfVFBNX0JBQ0tFTkQsCiAgICAgLnBhcmVudCA9IFRZUEVfT0JKRUNULApkaWZmIC0tZ2l0IGEv aHcvdHBtL01ha2VmaWxlLm9ianMgYi9ody90cG0vTWFrZWZpbGUub2JqcwppbmRleCAxNmIxNDQ3 Li41ZTFlMjgyIDEwMDY0NAotLS0gYS9ody90cG0vTWFrZWZpbGUub2JqcworKysgYi9ody90cG0v TWFrZWZpbGUub2JqcwpAQCAtMSwzICsxLDMgQEAKIGNvbW1vbi1vYmotJChDT05GSUdfVFBNX1RJ UykgKz0gdHBtX3Rpcy5vIHRwbV91dGlsLm8KIGNvbW1vbi1vYmotJChDT05GSUdfVFBNX1BBU1NU SFJPVUdIKSArPSB0cG1fcGFzc3Rocm91Z2gubyB0cG1fdXRpbC5vCi1jb21tb24tb2JqLSQoQ09O RklHX1RQTV9YRU5TVFVCRE9NUykgKz0geGVuX3Z0cG1fZnJvbnRlbmQubworY29tbW9uLW9iai0k KENPTkZJR19UUE1fWEVOU1RVQkRPTVMpICs9IHhlbl92dHBtX2Zyb250ZW5kLm8gdHBtX3hlbnN0 dWJkb21zLm8KZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1feGVuc3R1YmRvbXMuYyBiL2h3L3RwbS90 cG1feGVuc3R1YmRvbXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTIy M2JmCi0tLSAvZGV2L251bGwKKysrIGIvaHcvdHBtL3RwbV94ZW5zdHViZG9tcy5jCkBAIC0wLDAg KzEsMjg0IEBACisvKgorICogWGVuIFN0dWJkb20gdlRQTSBkcml2ZXIKKyAqCisgKiAgQ29weXJp Z2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKiAgQXV0aG9yczoKKyAqICAgIFF1YW4g WHUgPHF1YW4ueHVAaW50ZWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5j bHVkZSAic3lzZW11L3RwbV9iYWNrZW5kLmgiCisjaW5jbHVkZSAidHBtX2ludC5oIgorI2luY2x1 ZGUgInRwbV91dGlsLmgiCisjaW5jbHVkZSAiaHcveGVuL3hlbl9wdmRldi5oIgorI2luY2x1ZGUg InN5c2VtdS90cG1fYmFja2VuZF9pbnQuaCIKKyNpbmNsdWRlICJody90cG0veGVuX3Z0cG1fZnJv bnRlbmQuaCIKKworI2RlZmluZSBERUJVR19UUE0gMAorI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4u KSBkbyB7IFwKKyAgICBpZiAoREVCVUdfVFBNKSB7IFwKKyAgICAgICAgZnByaW50ZihzdGRlcnIs IGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCisgICAgfSBcCit9IHdoaWxlICgwKQorCisjZGVmaW5l IFRZUEVfVFBNX1hFTlNUVUJET01TICJ0cG0teGVuc3R1YmRvbXMiCisjZGVmaW5lIFRQTV9YRU5T VFVCRE9NUyhvYmopIFwKKyAgICBPQkpFQ1RfQ0hFQ0soVFBNWGVuc3R1YmRvbXNTdGF0ZSwgKG9i aiksIFRZUEVfVFBNX1hFTlNUVUJET01TKQorCitzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRw bV94ZW5zdHViZG9tc19kcml2ZXI7CisKKy8qIERhdGEgc3RydWN0dXJlcyAqLwordHlwZWRlZiBz dHJ1Y3QgVFBNWGVuc3R1YmRvbXNUaHJlYWRQYXJhbXMgeworICAgIFRQTVN0YXRlICp0cG1fc3Rh dGU7CisgICAgVFBNUmVjdkRhdGFDQiAqcmVjdl9kYXRhX2NhbGxiYWNrOworICAgIFRQTUJhY2tl bmQgKnRiOworfSBUUE1YZW5zdHViZG9tc1RocmVhZFBhcmFtczsKKworc3RydWN0IFRQTVhlbnN0 dWJkb21zU3RhdGUgeworICAgIFRQTUJhY2tlbmQgcGFyZW50OworICAgIFRQTUJhY2tlbmRUaHJl YWQgdGJ0OworICAgIFRQTVhlbnN0dWJkb21zVGhyZWFkUGFyYW1zIHRwbV90aHJlYWRfcGFyYW1z OworICAgIGJvb2wgaGFkX3N0YXJ0dXBfZXJyb3I7Cit9OworCit0eXBlZGVmIHN0cnVjdCBUUE1Y ZW5zdHViZG9tc1N0YXRlIFRQTVhlbnN0dWJkb21zU3RhdGU7CisKKy8qIEZ1bmN0aW9ucyAqLwor c3RhdGljIHZvaWQgdHBtX3hlbnN0dWJkb21zX2NhbmNlbF9jbWQoVFBNQmFja2VuZCAqdGIpOwor CitzdGF0aWMgaW50IHRwbV94ZW5zdHViZG9tc191bml4X3RyYW5zZmVyKGNvbnN0IFRQTUxvY2Fs aXR5ICpsb2N0eV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sICpzZWxmdGVzdF9kb25lKQoreworICAgIHNpemVfdCBybGVuOworICAgIHN0cnVjdCBY ZW5EZXZpY2UgKnhlbmRldjsKKyAgICBpbnQgcmV0OworICAgIGJvb2wgaXNfc2VsZnRlc3Q7Cisg ICAgY29uc3Qgc3RydWN0IHRwbV9yZXNwX2hkciAqaGRyOworCisgICAgaXNfc2VsZnRlc3QgPSB0 cG1fdXRpbF9pc19zZWxmdGVzdChsb2N0eV9kYXRhLT53X2J1ZmZlci5idWZmZXIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT53X2J1ZmZlci5zaXpl KTsKKworICAgIHhlbmRldiA9IHhlbl9wdl9maW5kX3hlbmRldigidnRwbSIsIHhlbl9kb21pZCwg eGVuc3RvcmVfdnRwbV9kZXYpOworICAgIGlmICh4ZW5kZXYgPT0gTlVMTCkgeworICAgICAgICB4 ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwgIkNhbiBub3QgZmluZCB2dHBtIGRldmljZS5cbiIpOwor ICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0ID0gdnRwbV9zZW5kKHhlbmRldiwg bG9jdHlfZGF0YS0+d19idWZmZXIuYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICBsb2N0eV9k YXRhLT53X29mZnNldCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgeGVuX3B2X3ByaW50 Zih4ZW5kZXYsIDAsICJDYW4gbm90IHNlbmQgdnRwbSBjb21tYW5kLlxuIik7CisgICAgICAgIGdv dG8gZXJyX2V4aXQ7CisgICAgfQorCisgICAgcmV0ID0gdnRwbV9yZWN2KHhlbmRldiwgbG9jdHlf ZGF0YS0+cl9idWZmZXIuYnVmZmVyLCAmcmxlbik7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAg ICAgeGVuX3B2X3ByaW50Zih4ZW5kZXYsIDAsICJ2dHBtIHJlY2VwdGlvbiBjb21tYW5kIGVycm9y LlxuIik7CisgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisgICAgfQorCisgICAgaWYgKGlzX3NlbGZ0 ZXN0ICYmIChyZXQgPj0gc2l6ZW9mKHN0cnVjdCB0cG1fcmVzcF9oZHIpKSkgeworICAgICAgICBo ZHIgPSAoc3RydWN0IHRwbV9yZXNwX2hkciAqKWxvY3R5X2RhdGEtPnJfYnVmZmVyLmJ1ZmZlcjsK KyAgICAgICAgKnNlbGZ0ZXN0X2RvbmUgPSAoYmUzMl90b19jcHUoaGRyLT5lcnJjb2RlKSA9PSAw KTsKKyAgICB9CisKK2Vycl9leGl0OgorICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHhlbl9w dl9wcmludGYoeGVuZGV2LCAwLCAidnRwbSBjb21tYW5kIGVycm9yLlxuIik7CisgICAgfQorICAg IHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHRwbV94ZW5zdHViZG9tc193b3JrZXJfdGhy ZWFkKGdwb2ludGVyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgICAgVFBNWGVuc3R1YmRvbXNUaHJlYWRQYXJh bXMgKnRocl9wYXJtcyA9IHVzZXJfZGF0YTsKKyAgICBUUE1CYWNrZW5kQ21kIGNtZCA9IChUUE1C YWNrZW5kQ21kKWRhdGE7CisgICAgYm9vbCBzZWxmdGVzdF9kb25lID0gZmFsc2U7CisKKyAgICBz d2l0Y2ggKGNtZCkgeworICAgIGNhc2UgVFBNX0JBQ0tFTkRfQ01EX1BST0NFU1NfQ01EOgorICAg ICAgICB0cG1feGVuc3R1YmRvbXNfdW5peF90cmFuc2Zlcih0aHJfcGFybXMtPnRwbV9zdGF0ZS0+ bG9jdHlfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGZ0 ZXN0X2RvbmUpOworICAgICAgICB0aHJfcGFybXMtPnJlY3ZfZGF0YV9jYWxsYmFjayh0aHJfcGFy bXMtPnRwbV9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhy X3Bhcm1zLT50cG1fc3RhdGUtPmxvY3R5X251bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZnRlc3RfZG9uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug VFBNX0JBQ0tFTkRfQ01EX0lOSVQ6CisgICAgY2FzZSBUUE1fQkFDS0VORF9DTURfRU5EOgorICAg IGNhc2UgVFBNX0JBQ0tFTkRfQ01EX1RQTV9SRVNFVDoKKworICAgICAgICAvKiBub3RoaW5nIHRv IGRvICovCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLyoKKyAqU3RhcnQgdGhlIFRQTSAo dGhyZWFkKS4gSWYgaXQgaGFkIGJlZW4gc3RhcnRlZCBiZWZvcmUsIHRoZW4gdGVybWluYXRlIGFu ZAorICpzdGFydCBpdCBhZ2Fpbi4KKyAqLworc3RhdGljIGludCB0cG1feGVuc3R1YmRvbXNfc3Rh cnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCit7CisgICAgVFBNWGVuc3R1YmRvbXNTdGF0ZSAqdHBt X3hzID0gVFBNX1hFTlNUVUJET01TKHRiKTsKKworICAgIHRwbV9iYWNrZW5kX3RocmVhZF90cG1f cmVzZXQoJnRwbV94cy0+dGJ0LCB0cG1feGVuc3R1YmRvbXNfd29ya2VyX3RocmVhZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1feHMtPnRwbV90aHJlYWRfcGFyYW1zKTsK KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB0cG1feGVuc3R1YmRvbXNfcmVzZXQo VFBNQmFja2VuZCAqdGIpCit7CisgICAgVFBNWGVuc3R1YmRvbXNTdGF0ZSAqdHBtX3hzID0gVFBN X1hFTlNUVUJET01TKHRiKTsKKworICAgIHRwbV9iYWNrZW5kX3RocmVhZF9lbmQoJnRwbV94cy0+ dGJ0KTsKKyAgICB0cG1feHMtPmhhZF9zdGFydHVwX2Vycm9yID0gZmFsc2U7Cit9CisKK3N0YXRp YyBpbnQgdHBtX3hlbnN0dWJkb21zX2luaXQoVFBNQmFja2VuZCAqdGIsIFRQTVN0YXRlICpzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1SZWN2RGF0YUNCICpyZWN2X2RhdGFf Y2IpCit7CisgICAgVFBNWGVuc3R1YmRvbXNTdGF0ZSAqdHBtX3hzID0gVFBNX1hFTlNUVUJET01T KHRiKTsKKworICAgIHRwbV94cy0+dHBtX3RocmVhZF9wYXJhbXMudHBtX3N0YXRlID0gczsKKyAg ICB0cG1feHMtPnRwbV90aHJlYWRfcGFyYW1zLnJlY3ZfZGF0YV9jYWxsYmFjayA9IHJlY3ZfZGF0 YV9jYjsKKyAgICB0cG1feHMtPnRwbV90aHJlYWRfcGFyYW1zLnRiID0gdGI7CisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBib29sIHRwbV94ZW5zdHViZG9tc19nZXRfdHBtX2VzdGFibGlzaGVk X2ZsYWcoVFBNQmFja2VuZCAqdGIpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg Ym9vbCB0cG1feGVuc3R1YmRvbXNfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCit7 CisgICAgVFBNWGVuc3R1YmRvbXNTdGF0ZSAqdHBtX3hzID0gVFBNX1hFTlNUVUJET01TKHRiKTsK KworICAgIHJldHVybiB0cG1feHMtPmhhZF9zdGFydHVwX2Vycm9yOworfQorCitzdGF0aWMgc2l6 ZV90IHRwbV94ZW5zdHViZG9tc19yZWFsbG9jX2J1ZmZlcihUUE1TaXplZEJ1ZmZlciAqc2IpCit7 CisgICAgc2l6ZV90IHdhbnRlZF9zaXplID0gNDA5NjsgLyogTGludXggdHBtLmMgYnVmZmVyIHNp emUgKi8KKworICAgIGlmIChzYi0+c2l6ZSAhPSB3YW50ZWRfc2l6ZSkgeworICAgICAgICBzYi0+ YnVmZmVyID0gZ19yZWFsbG9jKHNiLT5idWZmZXIsIHdhbnRlZF9zaXplKTsKKyAgICAgICAgc2It PnNpemUgPSB3YW50ZWRfc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIHNiLT5zaXplOworfQorCitz dGF0aWMgdm9pZCB0cG1feGVuc3R1YmRvbXNfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRi KQoreworICAgIFRQTVhlbnN0dWJkb21zU3RhdGUgKnRwbV94cyA9IFRQTV9YRU5TVFVCRE9NUyh0 Yik7CisKKyAgICB0cG1fYmFja2VuZF90aHJlYWRfZGVsaXZlcl9yZXF1ZXN0KCZ0cG1feHMtPnRi dCk7Cit9CisKK3N0YXRpYyB2b2lkIHRwbV94ZW5zdHViZG9tc19jYW5jZWxfY21kKFRQTUJhY2tl bmQgKnRiKQoreworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdHBtX3hlbnN0dWJkb21zX2NyZWF0 ZV9kZXNjKHZvaWQpCit7CisgICAgcmV0dXJuICJYZW5zdHViZG9tcyBUUE0gYmFja2VuZCBkcml2 ZXIiOworfQorCitzdGF0aWMgVFBNQmFja2VuZCAqdHBtX3hlbnN0dWJkb21zX2NyZWF0ZShRZW11 T3B0cyAqb3B0cywgY29uc3QgY2hhciAqaWQpCit7CisgICAgT2JqZWN0ICpvYmogPSBvYmplY3Rf bmV3KFRZUEVfVFBNX1hFTlNUVUJET01TKTsKKyAgICBUUE1CYWNrZW5kICp0YiA9IFRQTV9CQUNL RU5EKG9iaik7CisKKyAgICB0Yi0+aWQgPSBnX3N0cmR1cChpZCk7CisgICAgdGItPmZlX21vZGVs ID0gLTE7CisgICAgdGItPm9wcyA9ICZ0cG1feGVuc3R1YmRvbXNfZHJpdmVyOworICAgIHJldHVy biB0YjsKK30KKworc3RhdGljIHZvaWQgdHBtX3hlbnN0dWJkb21zX2Rlc3Ryb3koVFBNQmFja2Vu ZCAqdGIpCit7CisgICAgVFBNWGVuc3R1YmRvbXNTdGF0ZSAqdHBtX3hoID0gVFBNX1hFTlNUVUJE T01TKHRiKTsKKworICAgIHRwbV9iYWNrZW5kX3RocmVhZF9lbmQoJnRwbV94aC0+dGJ0KTsKKyAg ICBnX2ZyZWUodGItPmlkKTsKK30KKworc3RhdGljIGludCB0cG1feGVuc3R1YmRvbXNfcmVzZXRf dHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY3R5KQoreworICAg IC8qIG9ubHkgYSBUUE0gMi4wIHdpbGwgc3VwcG9ydCB0aGlzICovCisgICAgcmV0dXJuIDA7Cit9 CitzdGF0aWMgVFBNVmVyc2lvbiB0cG1feGVuc3R1YmRvbXNfZ2V0X3RwbV92ZXJzaW9uKFRQTUJh Y2tlbmQgKnRiKQoreworICAgIHJldHVybiBUUE1fVkVSU0lPTl8xXzI7Cit9CisKK3N0YXRpYyBj b25zdCBRZW11T3B0RGVzYyB0cG1feGVuc3R1YmRvbXNfY21kbGluZV9vcHRzW10gPSB7CisgICAg VFBNX1NUQU5EQVJEX0NNRExJTkVfT1BUUywKKyAgICB7fSwKK307CisKK3N0YXRpYyBjb25zdCBU UE1Ecml2ZXJPcHMgdHBtX3hlbnN0dWJkb21zX2RyaXZlciA9IHsKKyAgICAudHlwZSAgICAgICAg ICAgICAgICAgICAgID0gVFBNX1RZUEVfWEVOU1RVQkRPTVMsCisgICAgLm9wdHMgICAgICAgICAg ICAgICAgICAgICA9IHRwbV94ZW5zdHViZG9tc19jbWRsaW5lX29wdHMsCisgICAgLmRlc2MgICAg ICAgICAgICAgICAgICAgICA9IHRwbV94ZW5zdHViZG9tc19jcmVhdGVfZGVzYywKKyAgICAuY3Jl YXRlICAgICAgICAgICAgICAgICAgID0gdHBtX3hlbnN0dWJkb21zX2NyZWF0ZSwKKyAgICAuZGVz dHJveSAgICAgICAgICAgICAgICAgID0gdHBtX3hlbnN0dWJkb21zX2Rlc3Ryb3ksCisgICAgLmlu aXQgICAgICAgICAgICAgICAgICAgICA9IHRwbV94ZW5zdHViZG9tc19pbml0LAorICAgIC5zdGFy dHVwX3RwbSAgICAgICAgICAgICAgPSB0cG1feGVuc3R1YmRvbXNfc3RhcnR1cF90cG0sCisgICAg LnJlYWxsb2NfYnVmZmVyICAgICAgICAgICA9IHRwbV94ZW5zdHViZG9tc19yZWFsbG9jX2J1ZmZl ciwKKyAgICAucmVzZXQgICAgICAgICAgICAgICAgICAgID0gdHBtX3hlbnN0dWJkb21zX3Jlc2V0 LAorICAgIC5oYWRfc3RhcnR1cF9lcnJvciAgICAgICAgPSB0cG1feGVuc3R1YmRvbXNfZ2V0X3N0 YXJ0dXBfZXJyb3IsCisgICAgLmRlbGl2ZXJfcmVxdWVzdCAgICAgICAgICA9IHRwbV94ZW5zdHVi ZG9tc19kZWxpdmVyX3JlcXVlc3QsCisgICAgLmNhbmNlbF9jbWQgICAgICAgICAgICAgICA9IHRw bV94ZW5zdHViZG9tc19jYW5jZWxfY21kLAorICAgIC5nZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcg PSB0cG1feGVuc3R1YmRvbXNfZ2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnLAorICAgIC5yZXNldF90 cG1fZXN0YWJsaXNoZWRfZmxhZyA9IHRwbV94ZW5zdHViZG9tc19yZXNldF90cG1fZXN0YWJsaXNo ZWRfZmxhZywKKyAgICAuZ2V0X3RwbV92ZXJzaW9uICAgICAgICAgID0gdHBtX3hlbnN0dWJkb21z X2dldF90cG1fdmVyc2lvbgorfTsKKworc3RhdGljIHZvaWQgdHBtX3hlbnN0dWJkb21zX2luc3Rf aW5pdChPYmplY3QgKm9iaikKK3sKK30KKworc3RhdGljIHZvaWQgdHBtX3hlbnN0dWJkb21zX2lu c3RfZmluYWxpemUoT2JqZWN0ICpvYmopCit7Cit9CisKK3N0YXRpYyB2b2lkIHRwbV94ZW5zdHVi ZG9tc19jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkKK3sKKyAgICBU UE1CYWNrZW5kQ2xhc3MgKnRiYyA9IFRQTV9CQUNLRU5EX0NMQVNTKGtsYXNzKTsKKworICAgIHRi Yy0+b3BzID0gJnRwbV94ZW5zdHViZG9tc19kcml2ZXI7Cit9CisKK3N0YXRpYyBjb25zdCBUeXBl SW5mbyB0cG1feGVuc3R1YmRvbXNfaW5mbyA9IHsKKyAgICAubmFtZSA9IFRZUEVfVFBNX1hFTlNU VUJET01TLAorICAgIC5wYXJlbnQgPSBUWVBFX1RQTV9CQUNLRU5ELAorICAgIC5pbnN0YW5jZV9z aXplID0gc2l6ZW9mKFRQTVhlbnN0dWJkb21zU3RhdGUpLAorICAgIC5jbGFzc19pbml0ID0gdHBt X3hlbnN0dWJkb21zX2NsYXNzX2luaXQsCisgICAgLmluc3RhbmNlX2luaXQgPSB0cG1feGVuc3R1 YmRvbXNfaW5zdF9pbml0LAorICAgIC5pbnN0YW5jZV9maW5hbGl6ZSA9IHRwbV94ZW5zdHViZG9t c19pbnN0X2ZpbmFsaXplLAorfTsKKworc3RhdGljIHZvaWQgdHBtX3hlbnN0dWJkb21zX3JlZ2lz dGVyKHZvaWQpCit7CisgICAgdHlwZV9yZWdpc3Rlcl9zdGF0aWMoJnRwbV94ZW5zdHViZG9tc19p bmZvKTsKKyAgICB0cG1fcmVnaXN0ZXJfZHJpdmVyKCZ0cG1feGVuc3R1YmRvbXNfZHJpdmVyKTsK K30KKwordHlwZV9pbml0KHRwbV94ZW5zdHViZG9tc19yZWdpc3RlcikKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kX2ludC5oIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tl bmRfaW50LmgKaW5kZXggY2MwZGNiMy4uYzg0MGFlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zeXNl bXUvdHBtX2JhY2tlbmRfaW50LmgKKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmRfaW50 LmgKQEAgLTMxLDYgKzMxLDggQEAgdm9pZCB0cG1fYmFja2VuZF90aHJlYWRfZGVsaXZlcl9yZXF1 ZXN0KFRQTUJhY2tlbmRUaHJlYWQgKnRidCk7CiB2b2lkIHRwbV9iYWNrZW5kX3RocmVhZF9jcmVh dGUoVFBNQmFja2VuZFRocmVhZCAqdGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdGdW5jIGZ1bmMsIGdwb2ludGVyIHVzZXJfZGF0YSk7CiB2b2lkIHRwbV9iYWNrZW5kX3RocmVh ZF9lbmQoVFBNQmFja2VuZFRocmVhZCAqdGJ0KTsKK3ZvaWQgdHBtX2JhY2tlbmRfdGhyZWFkX3Rw bV9yZXNldChUUE1CYWNrZW5kVGhyZWFkICp0YnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0Z1bmMgZnVuYywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKIAogdHlwZWRlZiBlbnVt IFRQTUJhY2tlbmRDbWQgewogICAgIFRQTV9CQUNLRU5EX0NNRF9JTklUID0gMSwKLS0gCjEuOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==