From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Ondrej Mosnacek To: git-commits@fedoraproject.org Subject: [tests/selinux] pr775-checkpolicy-revdeps: Add a test for two-way SCTP association setup Date: Fri, 11 Sep 2026 13:19:38 GMT Message-ID: <178913277878.1.3419069863410892661.tests-selinux-7b6ee73ecbf3@fedoraproject.org> List-ID: X-Git-Repo: tests/selinux X-Git-Branch: pr775-checkpolicy-revdeps X-Git-Rev: 7b6ee73ecbf37c183dea55e663d717ae469f61bf ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHRlc3RzL3NlbGludXgKICAgICAgICAgICAgQnJhbmNoIDogcHI3NzUtY2hlY2twb2xp Y3ktcmV2ZGVwcwogICAgICAgICAgICBDb21taXQgOiA3YjZlZTczZWNiZjM3YzE4M2RlYTU1ZTY2 M2Q3MTdhZTQ2OWY2MWJmCiAgICAgICAgICAgIEF1dGhvciA6IE9uZHJlaiBNb3NuYWNlayA8b21v c25hY2VAcmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyMi0wMi0xM1QyMToxNDo0 OSswMTowMAogICAgICAgICAgICBTdGF0cyAgOiArNzU0Ly0wIGluIDcgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy90ZXN0cy9zZWxpbnV4 L2MvN2I2ZWU3M2VjYmYzN2MxODNkZWE1NWU2NjNkNzE3YWU0NjlmNjFiZj9icmFuY2g9cHI3NzUt Y2hlY2twb2xpY3ktcmV2ZGVwcwoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBBZGQgYSB0 ZXN0IGZvciB0d28td2F5IFNDVFAgYXNzb2NpYXRpb24gc2V0dXAKClRoaXMgdGVzdCByZXByb2R1 Y2VzIGEgYnVnIHRoYXQgbWF5IGNhdXNlIGFuIEFWQyB3aXRoIHNjdHBfc29ja2V0LAphc3NvY2lh dGlvbiwgdW5sYWJlbGVkX3QsIHVubGFiZWxlZF90IChhbmQgYWxzbyBhbm90aGVyIGJ1ZyByZWxh dGVkIHRvClNDVFAgcGVlbG9mZiBvbiB0aGUgY2xpZW50IHNpZGUpLgoKU0NUUCBjb2RlIHRha2Vu IGFuZCBtb2RpZmllZCBmcm9tIHNlbGludXgtdGVzdHN1aXRlJ3Mgc2N0cCBzdWJ0ZXN0LgoKU2ln bmVkLW9mZi1ieTogT25kcmVqIE1vc25hY2VrIDxvbW9zbmFjZUByZWRoYXQuY29tPgoKLS0tCmRp ZmYgLS1naXQgYS9rZXJuZWwvc2N0cF9wZWVyX2xhYmVsX2J1Zy9NYWtlZmlsZSBiL2tlcm5lbC9z Y3RwX3BlZXJfbGFiZWxfYnVnL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjMwYzg2YzgKLS0tIC9kZXYvbnVsbAorKysgYi9rZXJuZWwvc2N0cF9wZWVyX2xhYmVs X2J1Zy9NYWtlZmlsZQpAQCAtMCwwICsxLDggQEAKKyMgTWluaW1hbCBNYWtlZmlsZSBmb3Igc3Rh bmRhcmQtdGVzdC1yb2xlcy1iZWFrZXJsaWIKKworUj0iUmVxdWlyZXM6IGtlcm5lbC1tb2R1bGVz LWV4dHJhIgorUj0iUmh0c1JlcXVpcmVzOiBtYWtlIGdjYyBsa3NjdHAtdG9vbHMtZGV2ZWwgYXVk aXQga2VybmVsLW1vZHVsZXMiCisKK3J1bjoKKwljaG1vZCAreCBydW50ZXN0LnNoCisJLi9ydW50 ZXN0LnNoCgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjdHBfcGVlcl9sYWJlbF9idWcvbWFpbi5mbWYg Yi9rZXJuZWwvc2N0cF9wZWVyX2xhYmVsX2J1Zy9tYWluLmZtZgpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hZTg3ODMwCi0tLSAvZGV2L251bGwKKysrIGIva2VybmVsL3NjdHBf cGVlcl9sYWJlbF9idWcvbWFpbi5mbWYKQEAgLTAsMCArMSwyNSBAQAorc3VtbWFyeTogVmVyaWZ5 IHRoYXQgdHdvLXdheSBTQ1RQIGFzc29jaWF0aW9uIHNldHVwIGRvZXNuJ3QgdHJpZ2dlciBBVkNz CitkZXNjcmlwdGlvbjogfAorICAgIFZlcmlmeSB0aGF0IHR3by13YXkgU0NUUCBhc3NvY2lhdGlv biBzZXR1cCBkb2Vzbid0IHRyaWdnZXIgQVZDcy4KK2NvbnRhY3Q6IE9uZHJlaiBNb3NuYWNlayA8 b21vc25hY2VAcmVkaGF0LmNvbT4KK2NvbXBvbmVudDoKKyAgLSBrZXJuZWwKK2ZyYW1ld29yazog YmVha2VybGliCityZXF1aXJlOgorICAtIG1ha2UKKyAgLSBnY2MKKyAgLSBsa3NjdHAtdG9vbHMt ZGV2ZWwKKyAgLSBhdWRpdAorICAtIGtlcm5lbC1tb2R1bGVzCityZWNvbW1lbmQ6CisgIC0ga2Vy bmVsLW1vZHVsZXMtZXh0cmEKK2R1cmF0aW9uOiAxMG0KK3RpZXI6IDIKK2VuYWJsZWQ6IHRydWUK K2FkanVzdDoKKyAgLSBlbmFibGVkOiBmYWxzZQorICAgIHdoZW46IGRpc3RybyA8IHJoZWwtOAor ICAgIGJlY2F1c2U6IFJIRUwtNyBhbmQgYmVsb3cgZG9uJ3QgaGF2ZSBTQ1RQIFNFTGludXggc3Vw cG9ydAorbGluazoKKyAgLSB2ZXJpZmllczogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD0yMDQ4MjUxCisgIC0gdmVyaWZpZXM6IGh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTUyNQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9zY3Rw X3BlZXJfbGFiZWxfYnVnL3J1bnRlc3Quc2ggYi9rZXJuZWwvc2N0cF9wZWVyX2xhYmVsX2J1Zy9y dW50ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIyZDIxNTAKLS0t IC9kZXYvbnVsbAorKysgYi9rZXJuZWwvc2N0cF9wZWVyX2xhYmVsX2J1Zy9ydW50ZXN0LnNoCkBA IC0wLDAgKzEsNjEgQEAKKyMhL2Jpbi9iYXNoCisjIHZpbTogZGljdD0vdXNyL3NoYXJlL2JlYWtl cmxpYi9kaWN0aW9uYXJ5LnZpbSBjcHQ9Lix3LGIsdSx0LGksaworIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMdjIKKyMgQ29weXJpZ2h0IChjKSAyMDIyIFJlZCBIYXQsIEluYy4KKyMgQXV0 aG9yOiBPbmRyZWogTW9zbmFjZWsgPG9tb3NuYWNlQHJlZGhhdC5jb20+CisKKyMgSW5jbHVkZSBC ZWFrZXJsaWIgZW52aXJvbm1lbnQKKy4gL3Vzci9zaGFyZS9iZWFrZXJsaWIvYmVha2VybGliLnNo IHx8IGV4aXQgMQorCitmdW5jdGlvbiBjaGVja19hdmNfYmVnaW4oKSB7CisgICAgc2xlZXAgMS4x CisgICAgZGF0ZSArJyV4ICVUJworICAgIHNsZWVwIDEuMQorfQorCitmdW5jdGlvbiBjaGVja19h dmNfZW5kKCkgeworICAgIG1hcmtlcj0ibWFya2VyLSRSQU5ET00iCisKKyAgICBhdWRpdGN0bCAt bSAiJG1hcmtlciIKKworICAgIGZvciAoKCBpID0gMDsgaSA8IDEwMDsgaSsrICkpOyBkbworICAg ICAgICBpZiBhdXNlYXJjaCAtaSAtbSB1c2VyIC10cyAkMSAyPi9kZXYvbnVsbCA8L2Rldi9udWxs IHwgXAorICAgICAgICAgICAgZ3JlcCAtcSAiJG1hcmtlciIKKyAgICAgICAgdGhlbgorICAgICAg ICAgICAgZWNobyAkaQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgICAgc2xl ZXAgMC4xCisgICAgZG9uZQorCisgICAgYXVzZWFyY2ggLWkgLW0gYXZjIC10cyAkMSA8L2Rldi9u dWxsCit9CisKK3JsSm91cm5hbFN0YXJ0CisgICAgcmxQaGFzZVN0YXJ0U2V0dXAKKyAgICAgICAg cmxSdW4gInVuYW1lIC1yIiAwICJQcmludCBrZXJuZWwgdmVyc2lvbiIKKworICAgICAgICBmb3Ig cHJvZyBpbiBzY3RwX2J6MjA0ODI1MV9jbGllbnQgc2N0cF9iejIwNDgyNTFfc2VydmVyOyBkbwor ICAgICAgICAgICAgcmxSdW4gImdjYyAtTzIgLVdhbGwgLW8gJHByb2cgc2N0cF9jb21tb24uYyAk cHJvZy5jIC1sc2N0cCIgMCBcCisgICAgICAgICAgICAgICAgIkNvbXBpbGUgJHByb2ciCisgICAg ICAgIGRvbmUKKyAgICAgICAgcmxSdW4gIm1vZHByb2JlIHNjdHAiIDAgIkVuc3VyZSBTQ1RQIG1v ZHVsZSBpcyBsb2FkZWQiCisgICAgICAgIHJsUnVuICJta2ZpZm8gZmxhZyIgMCAiQ3JlYXRlIGEg ZmlmbyBmaWxlIGZvciB0ZXN0IgorICAgIHJsUGhhc2VFbmQKKworICAgIHJsUGhhc2VTdGFydFRl c3QKKyAgICAgICAgcmxSdW4gImF1ZGl0X3RzPVwiXCQoY2hlY2tfYXZjX2JlZ2luKVwiIgorCisg ICAgICAgIHJsUnVuICIuL3NjdHBfYnoyMDQ4MjUxX3NlcnZlciAtZiBmbGFnIC00IDk5OTkgJiIg MCAiU3RhcnQgdGhlIHNlcnZlciIKKyAgICAgICAgcmxSdW4gInJlYWQgLXQgNSA8PmZsYWciIDAg IldhaXQgZm9yIHRoZSBzZXJ2ZXIgdG8gc3RhcnQgbGlzdGVuaW5nIgorICAgICAgICBybFJ1biAi Li9zY3RwX2J6MjA0ODI1MV9jbGllbnQgMTI3LjAuMC4xIDk5OTkiIDAgIlJ1biB0aGUgY2xpZW50 IgorICAgICAgICBybFJ1biAid2FpdCIgMCAiV2FpdCBmb3IgdGhlIHNlcnZlciB0byBleGl0Igor CisgICAgICAgIHJsUnVuICJjaGVja19hdmNfZW5kIFwiXCRhdWRpdF90c1wiIiAxICJDaGVjayBp ZiB0aGVyZSBhcmUgQVZDIGRlbmlhbHMiCisgICAgcmxQaGFzZUVuZAorCisgICAgcmxQaGFzZVN0 YXJ0Q2xlYW51cAorICAgICAgICBybFJ1biAicm0gLWYgc2N0cF9iejIwNDgyNTFfY2xpZW50IHNj dHBfYnoyMDQ4MjUxX3NlcnZlciBmbGFnIgorICAgIHJsUGhhc2VFbmQKK3JsSm91cm5hbFByaW50 VGV4dAorcmxKb3VybmFsRW5kCgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjdHBfcGVlcl9sYWJlbF9i dWcvc2N0cF9iejIwNDgyNTFfY2xpZW50LmMgYi9rZXJuZWwvc2N0cF9wZWVyX2xhYmVsX2J1Zy9z Y3RwX2J6MjA0ODI1MV9jbGllbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wM2ZiZDA5Ci0tLSAvZGV2L251bGwKKysrIGIva2VybmVsL3NjdHBfcGVlcl9sYWJlbF9idWcv c2N0cF9iejIwNDgyNTFfY2xpZW50LmMKQEAgLTAsMCArMSwxMDkgQEAKKyNpbmNsdWRlICJzY3Rw X2NvbW1vbi5oIgorCitzdGF0aWMgdm9pZCB1c2FnZShjaGFyICpwcm9nbmFtZSkKK3sKKwlmcHJp bnRmKHN0ZGVyciwKKwkJInVzYWdlOiAgJXMgWy12XSBhZGRyIHBvcnRcbiIKKwkJIlxuV2hlcmU6 XG5cdCIKKworCQkiLXYgICAgICBQcmludCBjb250ZXh0IGFuZCBpcCBvcHRpb25zIGluZm9ybWF0 aW9uLlxuXHQiCisJCSJhZGRyICAgIElQdjQgb3IgSVB2NiBhZGRyZXNzIChlLmcuIDEyNy4wLjAu MSBvciA6OjEpLlxuXHQiCisJCSJwb3J0ICAgIFBvcnQgZm9yIGFjY2Vzc2luZyBzZXJ2ZXIuXG4i LCBwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQoreworCWludCBvcHQsIHNvY2ssIHJlc3VsdDsKKwlzdHJ1Y3QgYWRkcmluZm8gaGludHMs ICpzZXJ2ZXJpbmZvOworCWJvb2wgdmVyYm9zZSA9IGZhbHNlOworCXN0cnVjdCB0aW1ldmFsIHRt OworCXNvY2tsZW5fdCBzaW5sZW47CisJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc2luOworCisJ d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgInYiKSkgIT0gLTEpIHsKKwkJc3dpdGNo IChvcHQpIHsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlID0gdHJ1ZTsKKwkJCWJyZWFrOworCQlk ZWZhdWx0OgorCQkJdXNhZ2UoYXJndlswXSk7CisJCX0KKwl9CisKKwlpZiAoKGFyZ2MgLSBvcHRp bmQpICE9IDIpCisJCXVzYWdlKGFyZ3ZbMF0pOworCisJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9m KHN0cnVjdCBhZGRyaW5mbykpOworCWhpbnRzLmFpX3Byb3RvY29sID0gSVBQUk9UT19TQ1RQOwor CWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TRVFQQUNLRVQ7CisKKwlyZXN1bHQgPSBnZXRhZGRy aW5mbyhhcmd2W29wdGluZF0sIGFyZ3Zbb3B0aW5kICsgMV0sICZoaW50cywKKwkJCSAgICAgJnNl cnZlcmluZm8pOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQ2xpZW50 IGdldGFkZHJpbmZvOiAlc1xuIiwKKwkJCWdhaV9zdHJlcnJvcihyZXN1bHQpKTsKKwkJZXhpdCgy KTsKKwl9CisKKwlzb2NrID0gc29ja2V0KHNlcnZlcmluZm8tPmFpX2ZhbWlseSwgc2VydmVyaW5m by0+YWlfc29ja3R5cGUsCisJCSAgICAgIHNlcnZlcmluZm8tPmFpX3Byb3RvY29sKTsKKwlpZiAo c29jayA8IDApIHsKKwkJcGVycm9yKCJDbGllbnQgc29ja2V0Iik7CisJCWV4aXQoMyk7CisJfQor CisJLyoKKwkgKiBUaGVzZSB0aW1lb3V0cyBhcmUgc2V0IHRvIHRlc3Qgd2hldGhlciB0aGUgcGVl ciB7IHJlY3YgfSBjb21wbGV0ZXMKKwkgKiBvciBub3Qgd2hlbiB0aGUgcGVybWlzc2lvbiBpcyBk ZW5pZWQuCisJICovCisJdG0udHZfc2VjID0gNDsKKwl0bS50dl91c2VjID0gMDsKKwlyZXN1bHQg PSBzZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1NORFRJTUVPLCAmdG0sIHNpemVvZih0 bSkpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXBlcnJvcigiQ2xpZW50IHNldHNvY2tvcHQ6IFNP X1NORFRJTUVPIik7CisJCWV4aXQoNCk7CisJfQorCisJcmVzdWx0ID0gc2V0c29ja29wdChzb2Nr LCBTT0xfU09DS0VULCBTT19SQ1ZUSU1FTywgJnRtLCBzaXplb2YodG0pKTsKKwlpZiAocmVzdWx0 IDwgMCkgeworCQlwZXJyb3IoIkNsaWVudCBzZXRzb2Nrb3B0OiBTT19SQ1ZUSU1FTyIpOworCQll eGl0KDUpOworCX0KKworCWlmIChsaXN0ZW4oc29jaywgU09NQVhDT05OKSkgeworCQlwZXJyb3Io IkNsaWVudCBsaXN0ZW4iKTsKKwkJY2xvc2Uoc29jayk7CisJCWV4aXQoMSk7CisJfQorCisJLyog U3Vic2NyaWJlIHRvIGFzc29jX2lkIGV2ZW50cyAqLworCXJlc3VsdCA9IHNldF9zdWJzY3JfZXZl bnRzKHNvY2ssIG9mZiwgb24sIG9mZiwgb2ZmKTsKKwlpZiAocmVzdWx0IDwgMCkgeworCQlwZXJy b3IoIkNsaWVudCBzZXRzb2Nrb3B0OiBTQ1RQX0VWRU5UUyIpOworCQlyZXR1cm4gMTsKKwl9CisK KwlyZXN1bHQgPSBvcGVuX2Fzc29jKHNvY2ssIHNlcnZlcmluZm8tPmFpX2FkZHIsIHNlcnZlcmlu Zm8tPmFpX2FkZHJsZW4sCisJCQkgICAgdmVyYm9zZSk7CisJaWYgKHJlc3VsdCkgeworCQljbG9z ZShzb2NrKTsKKwkJZXhpdChyZXN1bHQpOworCX0KKworCXJlc3VsdCA9IHJlY2VpdmVfYXNzb2Mo c29jaywgJnNpbiwgJnNpbmxlbiwgdmVyYm9zZSk7CisJaWYgKHJlc3VsdCkgeworCQljbG9zZShz b2NrKTsKKwkJZXhpdChyZXN1bHQpOworCX0KKworCXJlc3VsdCA9IG9wZW5fYXNzb2Moc29jaywg c2VydmVyaW5mby0+YWlfYWRkciwgc2VydmVyaW5mby0+YWlfYWRkcmxlbiwKKwkJCSAgICB2ZXJi b3NlKTsKKwlpZiAocmVzdWx0KSB7CisJCWNsb3NlKHNvY2spOworCQlleGl0KHJlc3VsdCk7CisJ fQorCisJY2xvc2Uoc29jayk7CisJZXhpdCgwKTsKK30KCmRpZmYgLS1naXQgYS9rZXJuZWwvc2N0 cF9wZWVyX2xhYmVsX2J1Zy9zY3RwX2J6MjA0ODI1MV9zZXJ2ZXIuYyBiL2tlcm5lbC9zY3RwX3Bl ZXJfbGFiZWxfYnVnL3NjdHBfYnoyMDQ4MjUxX3NlcnZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmJmNDcyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9rZXJuZWwvc2N0cF9w ZWVyX2xhYmVsX2J1Zy9zY3RwX2J6MjA0ODI1MV9zZXJ2ZXIuYwpAQCAtMCwwICsxLDEzMiBAQAor I2luY2x1ZGUgInNjdHBfY29tbW9uLmgiCisKK3N0YXRpYyB2b2lkIHVzYWdlKGNoYXIgKnByb2du YW1lKQoreworCWZwcmludGYoc3RkZXJyLAorCQkidXNhZ2U6ICAlcyBbLTRdIFstZiBmaWxlXSBb LXZdIHBvcnRcbiIKKwkJIlxuV2hlcmU6XG5cdCIKKwkJIi00ICAgICAgTGlzdGVuIG9uIElQdjQg YWRkcmVzc2VzIG9ubHkuXG5cdCIKKwkJIi1mICAgICAgV3JpdGUgYSBsaW5lIHRvIHRoZSBmaWxl IHdoZW4gbGlzdGVuaW5nIHN0YXJ0cy5cblx0IgorCQkiICAgICAgICBcIm5vcGVlclwiIG1lc3Nh Z2UgdG8gY2xpZW50LCBvdGhlcndpc2UgdGhlIHBlZXIgY29udGV4dFxuXHQiCisJCSIgICAgICAg IHdpbGwgYmUgcmV0cmlldmVkIGFuZCBzZW50IHRvIGNsaWVudC5cblx0IgorCQkiLXYgICAgICBQ cmludCBjb250ZXh0IGFuZCBpcCBvcHRpb25zIGluZm9ybWF0aW9uLlxuXHQiCisJCSJwb3J0ICAg IExpc3RlbmluZyBwb3J0LlxuIiwgcHJvZ25hbWUpOworCWV4aXQoMSk7Cit9CisKK2ludCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgb3B0LCBzb2NrLCByZXN1bHQ7CisJc29j a2xlbl90IHNpbmxlbjsKKwlzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzaW47CisJc3RydWN0IGFk ZHJpbmZvIGhpbnRzLCAqcmVzOworCWNoYXIgKmZsYWdfZmlsZSA9IE5VTEw7CisJYm9vbCB2ZXJi b3NlID0gZmFsc2UsIGlwdjQgPSBmYWxzZTsKKwl1bnNpZ25lZCBzaG9ydCBwb3J0OworCisJd2hp bGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIjRmOnYiKSkgIT0gLTEpIHsKKwkJc3dpdGNo IChvcHQpIHsKKwkJY2FzZSAnNCc6CisJCQlpcHY0ID0gdHJ1ZTsKKwkJCWJyZWFrOworCQljYXNl ICdmJzoKKwkJCWZsYWdfZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICd2JzoKKwkJ CXZlcmJvc2UgPSB0cnVlOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZShhcmd2WzBd KTsKKwkJfQorCX0KKworCWlmICgoYXJnYyAtIG9wdGluZCkgIT0gMSkKKwkJdXNhZ2UoYXJndlsw XSk7CisKKwlwb3J0ID0gYXRvaShhcmd2W29wdGluZF0pOworCWlmICghcG9ydCkKKwkJdXNhZ2Uo YXJndlswXSk7CisKKwltZW1zZXQoJmhpbnRzLCAwLCBzaXplb2Yoc3RydWN0IGFkZHJpbmZvKSk7 CisJaGludHMuYWlfZmxhZ3MgPSBBSV9QQVNTSVZFOworCWhpbnRzLmFpX3Byb3RvY29sID0gSVBQ Uk9UT19TQ1RQOworCisJaWYgKGlwdjQpCisJCWhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ7CisJ ZWxzZQorCQloaW50cy5haV9mYW1pbHkgPSBBRl9JTkVUNjsKKworCS8qIHNjdHBfcGVlbG9mZigz KSBtdXN0IGJlIGZyb20gMSB0byBNYW55IHN0eWxlIHNvY2tldCAqLworCWhpbnRzLmFpX3NvY2t0 eXBlID0gU09DS19TRVFQQUNLRVQ7CisKKwlyZXN1bHQgPSBnZXRhZGRyaW5mbyhOVUxMLCBhcmd2 W29wdGluZF0sICZoaW50cywgJnJlcyk7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJZnByaW50Zihz dGRlcnIsICJTZXJ2ZXIgZ2V0YWRkcmluZm86ICVzXG4iLAorCQkJZ2FpX3N0cmVycm9yKHJlc3Vs dCkpOworCQlleGl0KDEpOworCX0KKworCXNvY2sgPSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJl cy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOworCWlmIChzb2NrIDwgMCkgeworCQlw ZXJyb3IoIlNlcnZlciBzb2NrZXQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXN1bHQgPSBzZXRz b2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgJm9uLCBzaXplb2Yob24pKTsK KwlpZiAocmVzdWx0IDwgMCkgeworCQlwZXJyb3IoIlNlcnZlciBzZXRzb2Nrb3B0OiBTT19SRVVT RUFERFIiKTsKKwkJY2xvc2Uoc29jayk7CisJCWV4aXQoMSk7CisJfQorCisJcmVzdWx0ID0gYmlu ZChzb2NrLCByZXMtPmFpX2FkZHIsIHJlcy0+YWlfYWRkcmxlbik7CisJaWYgKHJlc3VsdCA8IDAp IHsKKwkJcGVycm9yKCJTZXJ2ZXIgYmluZCIpOworCQljbG9zZShzb2NrKTsKKwkJZXhpdCgxKTsK Kwl9CisKKwlpZiAobGlzdGVuKHNvY2ssIFNPTUFYQ09OTikpIHsKKwkJcGVycm9yKCJTZXJ2ZXIg bGlzdGVuIik7CisJCWNsb3NlKHNvY2spOworCQlleGl0KDEpOworCX0KKworCWlmIChmbGFnX2Zp bGUpIHsKKwkJRklMRSAqZiA9IGZvcGVuKGZsYWdfZmlsZSwgInciKTsKKwkJaWYgKCFmKSB7CisJ CQlwZXJyb3IoIkZsYWcgZmlsZSBvcGVuIik7CisJCQlleGl0KDEpOworCQl9CisJCWZwcmludGYo ZiwgImxpc3RlbmluZ1xuIik7CisJCWZjbG9zZShmKTsKKwl9CisKKwkvKiBTdWJzY3JpYmUgdG8g YXNzb2NfaWQgZXZlbnRzICovCisJcmVzdWx0ID0gc2V0X3N1YnNjcl9ldmVudHMoc29jaywgb2Zm LCBvbiwgb2ZmLCBvZmYpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXBlcnJvcigiQ2xpZW50IHNl dHNvY2tvcHQ6IFNDVFBfRVZFTlRTIik7CisJCXJldHVybiAxOworCX0KKworCXJlc3VsdCA9IHJl Y2VpdmVfYXNzb2Moc29jaywgJnNpbiwgJnNpbmxlbiwgdmVyYm9zZSk7CisJaWYgKHJlc3VsdCkg eworCQljbG9zZShzb2NrKTsKKwkJZXhpdChyZXN1bHQpOworCX0KKworCXJlc3VsdCA9IG9wZW5f YXNzb2Moc29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW4sIHNpbmxlbiwgdmVyYm9zZSk7CisJ aWYgKHJlc3VsdCkgeworCQljbG9zZShzb2NrKTsKKwkJZXhpdChyZXN1bHQpOworCX0KKworCXJl c3VsdCA9IHJlY2VpdmVfYXNzb2Moc29jaywgJnNpbiwgJnNpbmxlbiwgdmVyYm9zZSk7CisJaWYg KHJlc3VsdCkgeworCQljbG9zZShzb2NrKTsKKwkJZXhpdChyZXN1bHQpOworCX0KKworCWNsb3Nl KHNvY2spOworCWV4aXQoMCk7Cit9CgpkaWZmIC0tZ2l0IGEva2VybmVsL3NjdHBfcGVlcl9sYWJl bF9idWcvc2N0cF9jb21tb24uYyBiL2tlcm5lbC9zY3RwX3BlZXJfbGFiZWxfYnVnL3NjdHBfY29t bW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhYjdjYgotLS0gL2Rl di9udWxsCisrKyBiL2tlcm5lbC9zY3RwX3BlZXJfbGFiZWxfYnVnL3NjdHBfY29tbW9uLmMKQEAg LTAsMCArMSwzODEgQEAKKyNpbmNsdWRlICJzY3RwX2NvbW1vbi5oIgorCisjZGVmaW5lIG1lbWJl cl9zaXplKHR5cGUsIG1lbWJlcikgc2l6ZW9mKCgodHlwZSAqKTApLT5tZW1iZXIpCisjZGVmaW5l IHNpemVvZl91cF90byh0eXBlLCBtZW1iZXIpIChvZmZzZXRvZih0eXBlLCBtZW1iZXIpICsgbWVt YmVyX3NpemUodHlwZSwgbWVtYmVyKSkKKwordm9pZCBwcmludF9hZGRyX2luZm8oc3RydWN0IHNv Y2thZGRyICpzaW4sIGNoYXIgKnRleHQpCit7CisJc3RydWN0IHNvY2thZGRyX2luICphZGRyNDsK KwlzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyNjsKKwljaGFyIGFkZHJfc3RyW0lORVQ2X0FERFJT VFJMRU4gKyAxXTsKKworCXN3aXRjaCAoc2luLT5zYV9mYW1pbHkpIHsKKwljYXNlIEFGX0lORVQ6 CisJCWFkZHI0ID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNpbjsKKwkJaW5ldF9udG9wKHNpbi0+ c2FfZmFtaWx5LAorCQkJICAodm9pZCAqKSZhZGRyNC0+c2luX2FkZHIsCisJCQkgIGFkZHJfc3Ry LCBJTkVUNl9BRERSU1RSTEVOICsgMSk7CisJCXByaW50ZigiJXMgSVB2NCBhZGRyICVzXG4iLCB0 ZXh0LCBhZGRyX3N0cik7CisJCWJyZWFrOworCWNhc2UgQUZfSU5FVDY6CisJCWFkZHI2ID0gKHN0 cnVjdCBzb2NrYWRkcl9pbjYgKilzaW47CisJCWlmIChJTjZfSVNfQUREUl9WNE1BUFBFRCgmYWRk cjYtPnNpbjZfYWRkcikpIHsKKwkJCWluZXRfbnRvcChBRl9JTkVULAorCQkJCSAgKHZvaWQgKikm YWRkcjYtPnNpbjZfYWRkci5zNl9hZGRyMzJbM10sCisJCQkJICBhZGRyX3N0ciwgSU5FVDZfQURE UlNUUkxFTiArIDEpOworCQkJcHJpbnRmKCIlcyBJUHY2LT5JUHY0IE1BUFBFRCBhZGRyICVzXG4i LAorCQkJICAgICAgIHRleHQsIGFkZHJfc3RyKTsKKwkJfSBlbHNlIGlmIChJTjZfSVNfQUREUl9M SU5LTE9DQUwoJmFkZHI2LT5zaW42X2FkZHIpKSB7CisJCQlpbmV0X250b3Aoc2luLT5zYV9mYW1p bHksCisJCQkJICAodm9pZCAqKSZhZGRyNi0+c2luNl9hZGRyLAorCQkJCSAgYWRkcl9zdHIsIElO RVQ2X0FERFJTVFJMRU4gKyAxKTsKKwkJCXByaW50ZigiJXMgSVB2NiBsb2NhbCBsaW5rIGFkZHIg JXMgc2NvcGVfaWQgJWRcbiIsCisJCQkgICAgICAgdGV4dCwgYWRkcl9zdHIsCisJCQkgICAgICAg KChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopYWRkcjYpLT5zaW42X3Njb3BlX2lkKTsKKwkJfSBlbHNl IHsKKwkJCWluZXRfbnRvcChzaW4tPnNhX2ZhbWlseSwKKwkJCQkgICh2b2lkICopJmFkZHI2LT5z aW42X2FkZHIsCisJCQkJICBhZGRyX3N0ciwgSU5FVDZfQUREUlNUUkxFTiArIDEpOworCQkJcHJp bnRmKCIlcyBJUHY2IGFkZHIgJXNcbiIsIHRleHQsCisJCQkgICAgICAgYWRkcl9zdHIpOworCQl9 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXByaW50ZigiJXMgVW5rbm93biBJUCBmYW1pbHkgJWRc biIsIHRleHQsIHNpbi0+c2FfZmFtaWx5KTsKKwkJYnJlYWs7CisJfQorfQorCitpbnQgc2V0X3N1 YnNjcl9ldmVudHMoaW50IGZkLCBpbnQgZGF0YV9pbywgaW50IGFzc29jLCBpbnQgYWRkciwgaW50 IHNodXRkKQoreworCXN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZSBzdWJzY3JfZXZlbnRzOwor CisJbWVtc2V0KCZzdWJzY3JfZXZlbnRzLCAwLCBzaXplb2Yoc3Vic2NyX2V2ZW50cykpOworCXN1 YnNjcl9ldmVudHMuc2N0cF9kYXRhX2lvX2V2ZW50ID0gZGF0YV9pbzsKKwlzdWJzY3JfZXZlbnRz LnNjdHBfYXNzb2NpYXRpb25fZXZlbnQgPSBhc3NvYzsKKwlzdWJzY3JfZXZlbnRzLnNjdHBfYWRk cmVzc19ldmVudCA9IGFkZHI7CisJc3Vic2NyX2V2ZW50cy5zY3RwX3NodXRkb3duX2V2ZW50ID0g c2h1dGQ7CisKKwkvKgorCSAqIFRydW5jYXRlIG9wdGxlbiB0byBqdXN0IHRoZSBmaWVsZHMgd2Ug dG91Y2ggdG8gYXZvaWQgZXJyb3JzIHdoZW4KKwkgKiB0aGUgdWFwaSBoZWFkZXJzIGFyZSBuZXdl ciB0aGFuIHRoZSBydW5uaW5nIGtlcm5lbC4KKwkgKi8KKwlyZXR1cm4gc2V0c29ja29wdChmZCwg SVBQUk9UT19TQ1RQLCBTQ1RQX0VWRU5UUywgJnN1YnNjcl9ldmVudHMsCisJCQkgIHNpemVvZl91 cF90byhzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUsCisJCQkJICAgICAgIHNjdHBfc2h1dGRv d25fZXZlbnQpKTsKK30KKworLyoKKyAqIEN1cnJlbnRseSBvbmx5IFNDVFBfQVNTT0NfQ0hBTkdF LCBTQ1RQX1BFRVJfQUREUl9DSEFOR0UgYW5kCisgKiBTQ1RQX1NIVVRET1dOX0VWRU5UIGFyZSBl bmFibGVkIHZpYSBzZXRfc3Vic2NyX2V2ZW50cygpLgorICovCitpbnQgaGFuZGxlX2V2ZW50KHZv aWQgKmJ1ZiwgY2hhciAqY21wX2FkZHIsIHNjdHBfYXNzb2NfdCAqYXNzb2NfaWQsCisJCSBib29s IHZlcmJvc2UsIGNoYXIgKnRleHQpCit7CisJdW5pb24gc2N0cF9ub3RpZmljYXRpb24gKnNucCA9 IGJ1ZjsKKwljaGFyIGFkZHJidWZbSU5FVDZfQUREUlNUUkxFTl07CisJc3RydWN0IHNvY2thZGRy X2luICpzaW47CisJc3RydWN0IHNvY2thZGRyX2luNiAqc2luNjsKKwljb25zdCBjaGFyICphcDsK KwlzdHJ1Y3Qgc2N0cF9wYWRkcl9jaGFuZ2UgKnNwYzsKKwlzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFu Z2UgKnNhYzsKKwlzdHJ1Y3Qgc2N0cF9yZW1vdGVfZXJyb3IgKnNyZTsKKwlzdHJ1Y3Qgc2N0cF9z ZW5kX2ZhaWxlZCAqc3NmOworCXN0cnVjdCBzY3RwX2F1dGhrZXlfZXZlbnQgKmF1dGhfZXZlbnQ7 CisKKwlzd2l0Y2ggKHNucC0+c25faGVhZGVyLnNuX3R5cGUpIHsKKwljYXNlIFNDVFBfQVNTT0Nf Q0hBTkdFOgorCQlzYWMgPSAmc25wLT5zbl9hc3NvY19jaGFuZ2U7CisKKwkJaWYgKHZlcmJvc2Up CisJCQlwcmludGYoIiVzIFNDVFBfQVNTT0NfQ0hBTkdFIGV2ZW50IGZvciBhc3NvY19pZDogJWQg RVJSOiAweCV4XG4iLAorCQkJICAgICAgIHRleHQsIHNhYy0+c2FjX2Fzc29jX2lkLCBzYWMtPnNh Y19lcnJvcik7CisKKwkJaWYgKGFzc29jX2lkKQorCQkJKmFzc29jX2lkID0gc2FjLT5zYWNfYXNz b2NfaWQ7CisJCWJyZWFrOworCWNhc2UgU0NUUF9QRUVSX0FERFJfQ0hBTkdFOgorCQlzcGMgPSAm c25wLT5zbl9wYWRkcl9jaGFuZ2U7CisKKwkJaWYgKHZlcmJvc2UpCisJCQkvKgorCQkJICogTm90 IGFsbCBzcGNfZXJyb3IgY29kZXMgYXJlIGVycm9ycyAtIGxpbnV4L3NjdHAuaAorCQkJICogKGUu Zy4gU0NUUF9IRUFSVEJFQVRfU1VDQ0VTUyA9IDB4MDIpCisJCQkgKi8KKwkJCXByaW50ZigiJXMg U0NUUF9QRUVSX0FERFJfQ0hBTkdFIGV2ZW50IGZvciBhc3NvY19pZDogJWQgRVJSOiAweCV4XG4i LAorCQkJICAgICAgIHRleHQsIHNwYy0+c3BjX2Fzc29jX2lkLCBzcGMtPnNwY19lcnJvcik7CisK KwkJaWYgKHNwYy0+c3BjX2FhZGRyLnNzX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJCQlzaW4gPSAo c3RydWN0IHNvY2thZGRyX2luICopICZzcGMtPnNwY19hYWRkcjsKKwkJCWFwID0gaW5ldF9udG9w KEFGX0lORVQsICZzaW4tPnNpbl9hZGRyLCBhZGRyYnVmLAorCQkJCSAgICAgICBJTkVUNl9BRERS U1RSTEVOKTsKKwkJfSBlbHNlIHsKKwkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSAm c3BjLT5zcGNfYWFkZHI7CisJCQlhcCA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZf YWRkciwgYWRkcmJ1ZiwKKwkJCQkgICAgICAgSU5FVDZfQUREUlNUUkxFTik7CisJCX0KKwkJaWYg KHZlcmJvc2UpIC8qIFByaW50IGFkZGl0aW9uYWwgYWRkcmVzcyBkZXRhaWxzICovCisJCQlwcmlu dF9hZGRyX2luZm8oKHN0cnVjdCBzb2NrYWRkciAqKSZzcGMtPnNwY19hYWRkciwKKwkJCQkJIlBl ZXIgQWRkcmVzcyBjaGFuZ2U6XG5cdCIpOworCisJCXN3aXRjaCAoc3BjLT5zcGNfc3RhdGUpIHsK KwkJY2FzZSBTQ1RQX0FERFJfQVZBSUxBQkxFOgorCQkJaWYgKHZlcmJvc2UpCisJCQkJcHJpbnRm KCJcdCVzIGlzIGF2YWlsYWJsZVxuIiwgdGV4dCk7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RQX0FE RFJfVU5SRUFDSEFCTEU6CisJCQlpZiAodmVyYm9zZSkKKwkJCQlwcmludGYoIlx0JXMgaXMgbm90 IGF2YWlsYWJsZSAtIEVycm9yOiAweCV4XG4iLAorCQkJCSAgICAgICB0ZXh0LCBzcGMtPnNwY19l cnJvcik7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RQX0FERFJfUkVNT1ZFRDoKKwkJCWlmICh2ZXJi b3NlKQorCQkJCXByaW50ZigiXHQlcyB3YXMgcmVtb3ZlZFxuIiwgdGV4dCk7CisJCQlicmVhazsK KwkJY2FzZSBTQ1RQX0FERFJfQURERUQ6CisJCQlpZiAodmVyYm9zZSkKKwkJCQlwcmludGYoIlx0 JXMgd2FzIGFkZGVkXG4iLCB0ZXh0KTsKKwkJCWJyZWFrOworCQljYXNlIFNDVFBfQUREUl9NQURF X1BSSU06CisJCQlpZiAodmVyYm9zZSkKKwkJCQlwcmludGYoIlx0JXMgaXMgcHJpbWFyeVxuIiwg dGV4dCk7CisJCQlpZiAoY21wX2FkZHIpIHsKKwkJCQlpZiAoIXN0cmNtcChhcCwgY21wX2FkZHIp KSB7CisJCQkJCWlmICh2ZXJib3NlKQorCQkJCQkJcHJpbnRmKCJcdCVzIGFuZCBpcyBub3cgdGhl IG5ldyBwcmltYXJ5XG4iLCB0ZXh0KTsKKworCQkJCQlyZXR1cm4gRVZFTlRfQUREUl9NQVRDSDsK KwkJCQl9CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBTQ1RQX0FERFJfQ09ORklSTUVEOgorCQkJ aWYgKHZlcmJvc2UpCisJCQkJcHJpbnRmKCJcdCVzIGlzIGNvbmZpcm1lZFxuIiwgdGV4dCk7CisJ CQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWlmICh2ZXJib3NlKQorCQkJCXByaW50ZigiJXMgdW5r bm93biBzdGF0ZTogJWRcbiIsIHRleHQsCisJCQkJICAgICAgIHNwYy0+c3BjX3N0YXRlKTsKKwkJ CWJyZWFrOworCQl9CisJCWJyZWFrOworCWNhc2UgU0NUUF9TRU5EX0ZBSUxFRDoKKwkJc3NmID0g JnNucC0+c25fc2VuZF9mYWlsZWQ7CisKKwkJaWYgKHZlcmJvc2UpCisJCQlwcmludGYoIiVzIFND VFBfU0VORF9GQUlMRUQgZXZlbnQgYXNzb2NfaWQ6ICVkIEVSUjogMHgleFxuIiwKKwkJCSAgICAg ICB0ZXh0LCBzc2YtPnNzZl9hc3NvY19pZCwgc3NmLT5zc2ZfZXJyb3IpOworCQlicmVhazsKKwlj YXNlIFNDVFBfUkVNT1RFX0VSUk9SOgorCQlzcmUgPSAmc25wLT5zbl9yZW1vdGVfZXJyb3I7CisJ CWlmICh2ZXJib3NlKSAvKiBFcnJvciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgLSBsaW51eC9zY3Rw LmggKi8KKwkJCXByaW50ZigiJXMgU0NUUF9SRU1PVEVfRVJST1IgZXZlbnQgRVJSOiAweCV4XG4i LAorCQkJICAgICAgIHRleHQsIG50b2hzKHNyZS0+c3JlX2Vycm9yKSk7CisJCWJyZWFrOworCWNh c2UgU0NUUF9TSFVURE9XTl9FVkVOVDoKKwkJaWYgKHZlcmJvc2UpCisJCQlwcmludGYoIiVzIFND VFBfU0hVVERPV05fRVZFTlRcbiIsIHRleHQpOworCisJCXJldHVybiBFVkVOVF9TSFVURE9XTjsK KwljYXNlIFNDVFBfUEFSVElBTF9ERUxJVkVSWV9FVkVOVDoKKwkJaWYgKHZlcmJvc2UpCisJCQlw cmludGYoIiVzIFNDVFBfUEFSVElBTF9ERUxJVkVSWV9FVkVOVFxuIiwgdGV4dCk7CisJCWJyZWFr OworCWNhc2UgU0NUUF9BREFQVEFUSU9OX0lORElDQVRJT046CisJCWlmICh2ZXJib3NlKQorCQkJ cHJpbnRmKCIlcyBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTiBldmVudFxuIiwgdGV4dCk7CisJ CWJyZWFrOworCWNhc2UgU0NUUF9BVVRIRU5USUNBVElPTl9JTkRJQ0FUSU9OOgorCQlhdXRoX2V2 ZW50ID0gJnNucC0+c25fYXV0aGtleV9ldmVudDsKKworCQlpZiAodmVyYm9zZSkgeworCQkJcHJp bnRmKCIlcyBTQ1RQX0FVVEhFTlRJQ0FUSU9OX0lORElDQVRJT04gZXZlbnRcbiIKKwkJCSAgICAg ICAiXHRhdXRoX2V2ZW50LT5hdXRoX3R5cGU6ICAgICAgIDB4JXhcbiIKKwkJCSAgICAgICAiXHRh dXRoX2V2ZW50LT5hdXRoX2ZsYWdzOiAgICAgIDB4JXhcbiIKKwkJCSAgICAgICAiXHRhdXRoX2V2 ZW50LT5hdXRoX2xlbmd0aDogICAgIDB4JXhcbiIKKwkJCSAgICAgICAiXHRhdXRoX2V2ZW50LT5h dXRoX2tleW51bWJlcjogIDB4JXhcbiIKKwkJCSAgICAgICAiXHRhdXRoX2V2ZW50LT5hdXRoX2lu ZGljYXRpb246IDB4JXhcbiIKKwkJCSAgICAgICAiXHRhdXRoX2V2ZW50LT5hdXRoX2Fzc29jX2lk OiAgICVkXG4iLAorCQkJICAgICAgIHRleHQsIGF1dGhfZXZlbnQtPmF1dGhfdHlwZSwKKwkJCSAg ICAgICBhdXRoX2V2ZW50LT5hdXRoX2ZsYWdzLAorCQkJICAgICAgIGF1dGhfZXZlbnQtPmF1dGhf bGVuZ3RoLAorCQkJICAgICAgIGF1dGhfZXZlbnQtPmF1dGhfa2V5bnVtYmVyLAorCQkJICAgICAg IGF1dGhfZXZlbnQtPmF1dGhfaW5kaWNhdGlvbiwKKwkJCSAgICAgICBhdXRoX2V2ZW50LT5hdXRo X2Fzc29jX2lkKTsKKwkJfQorCQkvKiBTQ1RQX0FVVEhfTk9fQVVUSCBkZWZpbmVkIGluIGxpbnV4 L3NjdHAuaCAqLworCQlpZiAoYXV0aF9ldmVudC0+YXV0aF9pbmRpY2F0aW9uID09IFNDVFBfQVVU SF9OT19BVVRIKQorCQkJcmV0dXJuIEVWRU5UX05PX0FVVEg7CisJCWJyZWFrOworCWNhc2UgU0NU UF9TRU5ERVJfRFJZX0VWRU5UOgorCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZigiJXMgU0NUUF9T RU5ERVJfRFJZX0VWRU5UXG4iLCB0ZXh0KTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1NUUkVBTV9S RVNFVF9FVkVOVDoKKwkJaWYgKHZlcmJvc2UpCisJCQlwcmludGYoIiVzIFNDVFBfU1RSRUFNX1JF U0VUX0VWRU5UXG4iLCB0ZXh0KTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX0FTU09DX1JFU0VUX0VW RU5UOgorCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZigiJXMgU0NUUF9BU1NPQ19SRVNFVF9FVkVO VFxuIiwgdGV4dCk7CisJCWJyZWFrOworCWNhc2UgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UOgor CQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZigiJXMgU0NUUF9TVFJFQU1fQ0hBTkdFX0VWRU5UXG4i LCB0ZXh0KTsKKwkJYnJlYWs7CisJY2FzZSBTQ1RQX1NFTkRfRkFJTEVEX0VWRU5UOgorCQlpZiAo dmVyYm9zZSkKKwkJCXByaW50ZigiJXMgU0NUUF9TRU5EX0ZBSUxFRF9FVkVOVFxuIiwgdGV4dCk7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWZwcmludGYoc3RkZXJyLCAiJXMgdW5rbm93biBldmVu dDogMHgleFxuIiwgdGV4dCwKKwkJCXNucC0+c25faGVhZGVyLnNuX3R5cGUpOworCQlicmVhazsK Kwl9CisKKwlyZXR1cm4gRVZFTlRfT0s7Cit9CisKK2ludCByZWNlaXZlX2Fzc29jKGludCBzb2Nr LCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqc2luLCBzb2NrbGVuX3QgKnNpbmxlbiwKKwkJICBp bnQgdmVyYm9zZSkKK3sKKwlpbnQgcmVzdWx0LCBwZWVsb2ZmX3NrID0gMCwgZmxhZ3M7CisJc2N0 cF9hc3NvY190IGFzc29jX2lkID0gMDsKKwljaGFyICpwZWVybGFiZWwsIG1zZ2xhYmVsWzI1Nl07 CisKKwkqc2lubGVuID0gc2l6ZW9mKCpzaW4pOworCWZsYWdzID0gMDsKKworCXJlc3VsdCA9IHNj dHBfcmVjdm1zZyhzb2NrLCBtc2dsYWJlbCwgc2l6ZW9mKG1zZ2xhYmVsKSwKKwkJCSAgICAgIChz dHJ1Y3Qgc29ja2FkZHIgKilzaW4sIHNpbmxlbiwKKwkJCSAgICAgIE5VTEwsICZmbGFncyk7CisJ aWYgKHJlc3VsdCA8IDApIHsKKwkJcGVycm9yKCJTZXJ2ZXIgc2N0cF9yZWN2bXNnLTEiKTsKKwkJ cmV0dXJuIDE7CisJfQorCisJaWYgKHZlcmJvc2UpCisJCXByaW50X2FkZHJfaW5mbygoc3RydWN0 IHNvY2thZGRyICopc2luLAorCQkJCSJTZXJ2ZXIgU0VRUEFDS0VUIHJlY3Ztc2ciKTsKKworCWlm ICghKGZsYWdzICYgTVNHX05PVElGSUNBVElPTikgfHwgIShmbGFncyAmIE1TR19FT1IpKSB7CisJ CXByaW50ZigiSW52YWxpZCBzY3RwX3JlY3Ztc2cgcmVzcG9uc2UgRkxBR1M6ICV4XG4iLAorCQkg ICAgICAgZmxhZ3MpOworCQlyZXR1cm4gMTsKKwl9CisKKwloYW5kbGVfZXZlbnQobXNnbGFiZWws IE5VTEwsICZhc3NvY19pZCwKKwkJICAgICB2ZXJib3NlLCAiUGVlbG9mZiBTZXJ2ZXIiKTsKKwlp ZiAoYXNzb2NfaWQgPD0gMCkgeworCQlwcmludGYoIlNlcnZlciBJbnZhbGlkIGFzc29jaWF0aW9u IElEOiAlZFxuIiwKKwkJICAgICAgIGFzc29jX2lkKTsKKwkJcmV0dXJuIDE7CisJfQorCXBlZWxv ZmZfc2sgPSBzY3RwX3BlZWxvZmYoc29jaywgYXNzb2NfaWQpOworCWlmIChwZWVsb2ZmX3NrIDwg MCkgeworCQlwZXJyb3IoIlNlcnZlciBzY3RwX3BlZWxvZmYiKTsKKwkJcmV0dXJuIDE7CisJfQor CWlmICh2ZXJib3NlKSB7CisJCXByaW50ZigiU2VydmVyIHNjdHBfcGVlbG9mZigzKSBvbiBzazog JWQgd2l0aCBhc3NvY2lhdGlvbiBJRDogJWRcbiIsCisJCSAgICAgICBwZWVsb2ZmX3NrLCBhc3Nv Y19pZCk7CisJfQorCisJLyogTm93IGdldCB0aGUgY2xpZW50IG1zZyBvbiBwZWVsb2ZmIHNvY2tl dCAqLworCXJlc3VsdCA9IHNjdHBfcmVjdm1zZyhwZWVsb2ZmX3NrLCBtc2dsYWJlbCwgc2l6ZW9m KG1zZ2xhYmVsKSwKKwkJCSAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKilzaW4sIHNpbmxlbiwKKwkJ CSAgICAgIE5VTEwsICZmbGFncyk7CisJaWYgKHJlc3VsdCA8IDApIHsKKwkJcGVycm9yKCJTZXJ2 ZXIgc2N0cF9yZWN2bXNnLTIiKTsKKwkJY2xvc2UocGVlbG9mZl9zayk7CisJCXJldHVybiAxOwor CX0KKworCWlmICh2ZXJib3NlKSB7CisJCXByaW50X2FkZHJfaW5mbygoc3RydWN0IHNvY2thZGRy ICopc2luLAorCQkJCSJTZXJ2ZXIgU0VRUEFDS0VUIHBlZWxvZmYgcmVjdm1zZyIpOworCQlwcmlu dGYoInBlZWxvZmYgYXNzb2NpYXRpb24gSUQ6ICVkXG4iLAorCQkgICAgICAgYXNzb2NfaWQpOwor CX0KKworCXBlZXJsYWJlbCA9IHN0cmR1cCgibm9wZWVyIik7CisKKwlwcmludGYoIlNlcnZlciBQ RUVMT0ZGIHBlZXIgbGFiZWw6ICVzXG4iLCBwZWVybGFiZWwpOworCisJcmVzdWx0ID0gc2N0cF9z ZW5kbXNnKHBlZWxvZmZfc2ssIHBlZXJsYWJlbCwKKwkJCSAgICAgIHN0cmxlbihwZWVybGFiZWwp LAorCQkJICAgICAgTlVMTCwgMCwKKwkJCSAgICAgIDAsIDAsIDAsIDAsIDApOworCWlmIChyZXN1 bHQgPCAwKSB7CisJCXBlcnJvcigiU2VydmVyIHNjdHBfc2VuZG1zZyIpOworCQljbG9zZShwZWVs b2ZmX3NrKTsKKwkJY2xvc2Uoc29jayk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKHZlcmJvc2Up CisJCXByaW50ZigiU2VydmVyIFBFRUxPRkYgc2VudDogJXNcbiIsIHBlZXJsYWJlbCk7CisKKwlm cmVlKHBlZXJsYWJlbCk7CisKKwljbG9zZShwZWVsb2ZmX3NrKTsKKwlyZXR1cm4gMDsKK30KKwor aW50IG9wZW5fYXNzb2MoaW50IHNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc2luLCBzb2NrbGVuX3Qg c2lubGVuLAorCSAgICAgICBpbnQgdmVyYm9zZSkKK3sKKwlpbnQgcmVzdWx0LCBwZWVsb2ZmX3Nr ID0gMCwgZmxhZ3M7CisJc2N0cF9hc3NvY190IGFzc29jX2lkID0gMDsKKwljaGFyIGJ5dGUgPSAw eDQxLCBsYWJlbFsxMDI0XTsKKworCXJlc3VsdCA9IGNvbm5lY3Qoc29jaywgc2luLCBzaW5sZW4p OworCWlmIChyZXN1bHQgPCAwKSB7CisJCXBlcnJvcigiQ2xpZW50IGNvbm5lY3QiKTsKKwkJcmV0 dXJuIDE7CisJfQorCisJLyogR2V0IGFzc29jX2lkIGZvciBzY3RwX3BlZWxvZmYoKSAqLworCWZs YWdzID0gMDsKKwlyZXN1bHQgPSBzY3RwX3JlY3Ztc2coc29jaywgbGFiZWwsIHNpemVvZihsYWJl bCksCisJCQkgICAgICBOVUxMLCAwLCBOVUxMLCAmZmxhZ3MpOworCWlmIChyZXN1bHQgPCAwKSB7 CisJCXBlcnJvcigiQ2xpZW50IHNjdHBfcmVjdm1zZy0xIik7CisJCXJldHVybiAxOworCX0KKwor CWlmICgoZmxhZ3MgJiAoTVNHX05PVElGSUNBVElPTiB8IE1TR19FT1IpKSAhPSAoTVNHX05PVElG SUNBVElPTiB8IE1TR19FT1IpKSB7CisJCXByaW50ZigiSW52YWxpZCBzY3RwX3JlY3Ztc2cgcmVz cG9uc2UgRkxBR1M6ICV4XG4iLCBmbGFncyk7CisJCXJldHVybiAxOworCX0KKwloYW5kbGVfZXZl bnQobGFiZWwsIE5VTEwsICZhc3NvY19pZCwgdmVyYm9zZSwgIlBlZWxvZmYgQ2xpZW50Iik7CisJ aWYgKGFzc29jX2lkIDw9IDApIHsKKwkJcHJpbnRmKCJDbGllbnQgSW52YWxpZCBhc3NvY2lhdGlv biBJRDogJWRcbiIsIGFzc29jX2lkKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcGVlbG9mZl9zayA9 IHNjdHBfcGVlbG9mZihzb2NrLCBhc3NvY19pZCk7CisJaWYgKHBlZWxvZmZfc2sgPCAwKSB7CisJ CXBlcnJvcigiQ2xpZW50IHNjdHBfcGVlbG9mZiIpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXN1 bHQgPSBzY3RwX3NlbmRtc2cocGVlbG9mZl9zaywgJmJ5dGUsIDEsIE5VTEwsIDAsCisJCQkgICAg ICAwLCAwLCAwLCAwLCAwKTsKKwlpZiAocmVzdWx0IDwgMCkgeworCQlwZXJyb3IoIkNsaWVudCBz Y3RwX3NlbmRtc2ciKTsKKwkJY2xvc2UocGVlbG9mZl9zayk7CisJCXJldHVybiAxOworCX0KKwor CXJlc3VsdCA9IHNjdHBfcmVjdm1zZyhwZWVsb2ZmX3NrLCBsYWJlbCwgc2l6ZW9mKGxhYmVsKSwK KwkJCSAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworCWlmIChyZXN1bHQgPCAwKSB7CisJCXBl cnJvcigiQ2xpZW50IHNjdHBfcmVjdm1zZyIpOworCQljbG9zZShwZWVsb2ZmX3NrKTsKKwkJcmV0 dXJuIDE7CisJfQorCisJY2xvc2UocGVlbG9mZl9zayk7CisJcmV0dXJuIDA7Cit9CgpkaWZmIC0t Z2l0IGEva2VybmVsL3NjdHBfcGVlcl9sYWJlbF9idWcvc2N0cF9jb21tb24uaCBiL2tlcm5lbC9z Y3RwX3BlZXJfbGFiZWxfYnVnL3NjdHBfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYWVlYzRkMgotLS0gL2Rldi9udWxsCisrKyBiL2tlcm5lbC9zY3RwX3BlZXJf bGFiZWxfYnVnL3NjdHBfY29tbW9uLmgKQEAgLTAsMCArMSwzOCBAQAorI2lmbmRlZiBfR05VX1NP VVJDRQorI2RlZmluZSBfR05VX1NPVVJDRSAvKiBGb3IgcG9sbCgyKSBQT0xMUkRIVVAgLSBEZXRl Y3QgY2xpZW50IGNsb3NlKDIpICovCisjZW5kaWYKKworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgor I2luY2x1ZGUgPHN5cy9wb2xsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8 c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldGRiLmg+Cisj aW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyNpbmNsdWRl IDxuZXRpbmV0L3NjdHAuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYu aD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxz dGRpby5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCitlbnVt IGV2ZW50X3JldCB7CisJRVZFTlRfT0ssCisJRVZFTlRfQUREUl9NQVRDSCwKKwlFVkVOVF9TSFVU RE9XTiwKKwlFVkVOVF9OT19BVVRICit9OworCit2b2lkIHByaW50X2FkZHJfaW5mbyhzdHJ1Y3Qg c29ja2FkZHIgKnNpbiwgY2hhciAqdGV4dCk7CitpbnQgc2V0X3N1YnNjcl9ldmVudHMoaW50IGZk LCBpbnQgZGF0YV9pbywgaW50IGFzc29jLCBpbnQgYWRkciwgaW50IHNodXRkKTsKK2ludCBoYW5k bGVfZXZlbnQodm9pZCAqYnVmLCBjaGFyICpjbXBfYWRkciwgc2N0cF9hc3NvY190ICphc3NvY19p ZCwKKwkJIGJvb2wgdmVyYm9zZSwgY2hhciAqdGV4dCk7CisKK3N0YXRpYyBjb25zdCBpbnQgb24g PSAxLCBvZmYgPSAwOworCitpbnQgcmVjZWl2ZV9hc3NvYyhpbnQgc29jaywgc3RydWN0IHNvY2th ZGRyX3N0b3JhZ2UgKnNpbiwgc29ja2xlbl90ICpzaW5sZW4sCisJCSAgaW50IHZlcmJvc2UpOwor aW50IG9wZW5fYXNzb2MoaW50IHNvY2ssIHN0cnVjdCBzb2NrYWRkciAqc2luLCBzb2NrbGVuX3Qg c2lubGVuLCBpbnQgdmVyYm9zZSk7Cg==