From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <423E9CFF.3080808@kaigai.gr.jp> Date: Mon, 21 Mar 2005 19:07:59 +0900 From: KaiGai Kohei MIME-Version: 1.0 To: KaiGai Kohei Cc: Stephen Smalley , Kaigai Kohei , SELinux Mail List Subject: Re: [RFC & PATCH] inherited type definition. References: <42346C17.3090301@kaigai.gr.jp> <1110808202.21378.51.camel@moss-spartans.epoch.ncsc.mil> <4235C937.3030404@kaigai.gr.jp> <1110824712.21378.196.camel@moss-spartans.epoch.ncsc.mil> <4236CC03.5010104@kaigai.gr.jp> <1110897751.25947.52.camel@moss-spartans.epoch.ncsc.mil> <4237B950.2090604@ak.jp.nec.com> <1110981928.4802.81.camel@moss-spartans.epoch.ncsc.mil> <42394ECA.7010204@ak.jp.nec.com> <1111067742.8664.31.camel@moss-spartans.epoch.ncsc.mil> <42399AE4.5040508@kaigai.gr.jp> In-Reply-To: <42399AE4.5040508@kaigai.gr.jp> Content-Type: multipart/mixed; boundary="------------040507070209010604080408" Sender: owner-selinux@tycho.nsa.gov List-Id: selinux@tycho.nsa.gov This is a multi-part message in MIME format. --------------040507070209010604080408 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi, This attached patch implements (1) EXTENDS syntax with TYPE statement and (2) '@' prefix to distinguish whether an assigned type/attribute includes own child types or not. (1) TYPE ... EXTENDS syntax TYPE [ALIAS ] EXTENDS , , ... The declared type can have the parents enumerated behind EXTENDS. If we grant any permissions with '@' prefix, this permission is also granted to own child types. (2) '@' prefix This is new feature from the former version. If we specify the types (which have some child types) with '@' prefix to grant permissions, the specified types is treated as the specified types directly and those chils type. If we specify the types without '@' prefix, such interpretation is not done. By default, specifying the types are recognized same as current checkpolicy doing. For Example: attribute attr; type X extends attr; type Y extends X; type A; type B extends A; type C extends A, X; "allow @A A:file read;" is equal "allow {A B C} A:file read;". "allow @A @A-@X:file read;" is equal "allow {A B C} {A B}:file read;". "allow attr ~@X:file read;" is equal "allow {X Y C} {A B}:file read;". We can use the '@' prefixi in following statements. - ALLOW/AUDITALLOW/AUDITDENY/DONTAUDIT statements - TYPE_TRANSITION/TYPE_MEMBER/TYPE_CHANGE statements - ROLE/ROLE_TRANSITION statements. - CONSTRAIN statements - VALIDATETRANS statements (I was not sure) - RANGE_TRANSITION statements (MLS statement, I was not sure) In addition, the recognization of 'self' is changed from former version's patch. In former version, "allow @A self:file read;" means "allow A {A B C}:file read;" and "allow B B:file read;", "allow C C:file read;". (I appended '@' for convenience.) But in current version, "allow @A self:file read" means "allow {A B C} {A B C}:file read;". Since I thought this interpretation is more aimple. I checked this patch with 'sediff' and printf() in source. If there are several good checking tools for such a purpose, I want you to teach. Thanks, -- DO NOTHING IS THE WORST POLICY. KaiGai Kohei --------------040507070209010604080408 Content-Type: text/plain; name="checkpolicy-1.22-type_extends.2nd.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="checkpolicy-1.22-type_extends.2nd.patch" LS0tIGNoZWNrcG9saWN5LTEuMjIvY2hlY2twb2xpY3kuaAkyMDA1LTAxLTI2IDE0OjE2OjIw LjAwMDAwMDAwMCAtMDUwMAorKysgY2hlY2twb2xpY3ktMS4yMi5leHRlbmRzLjJuZC9jaGVj a3BvbGljeS5oCTIwMDUtMDMtMjEgMTI6NTg6MDguMDAwMDAwMDAwIC0wNTAwCkBAIC03LDYg KzcsNyBAQCB0eXBlZGVmIHN0cnVjdCB0ZV9hc3NlcnQgeyAKIAllYml0bWFwX3Qgc3R5cGVz OwogCWViaXRtYXBfdCB0dHlwZXM7CiAJZWJpdG1hcF90IHRjbGFzc2VzOworCWViaXRtYXBf dCBpbmhlcml0OwogICAgICAgICBpbnQgc2VsZjsKIAlhY2Nlc3NfdmVjdG9yX3QgKmF2cDsK IAl1bnNpZ25lZCBsb25nIGxpbmU7CkBAIC0xOCw0ICsxOSwxNiBAQCB0ZV9hc3NlcnRfdCAq dGVfYXNzZXJ0aW9uczsKIGV4dGVybiB1bnNpZ25lZCBpbnQgcG9saWN5dmVyczsKIGV4dGVy biB1bnNpZ25lZCBpbnQgbWxzcG9sOwogCisvKiB0eXBlIHdhcyBub3QgaW5kZXhlZCBpbiBw b2xpY3lkYiwKKyAgIGJ1dCBpdCdzIG5lY2Vzc2FyeSBmb3IgZXh0ZW5kcyBzdXBwb3J0LiAq LworZXh0ZXJuIHR5cGVfZGF0dW1fdCAqKnR5cGVfdmFsX3RvX3N0cnVjdDsKK2V4dGVybiBp bnQgbnVtX3R5cGVfdmFsX3RvX3N0cnVjdDsKK2V4dGVybiB2b2lkIGdldF9jaGlsZF90eXBl cyhlYml0bWFwX3QgKnNldCwgdHlwZV9kYXR1bV90ICp0LCBpbnQgcmVjdXJzaXZlKTsKKwor c3RhdGljIGlubGluZSB0eXBlX2RhdHVtX3QgKmdldF90eXBlKGludCB0eXBldmFsKSB7CisJ aWYgKCF0eXBlX3ZhbF90b19zdHJ1Y3QgfHwgdHlwZXZhbDwxIHx8IHR5cGV2YWw+bnVtX3R5 cGVfdmFsX3RvX3N0cnVjdCkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIHR5cGVfdmFsX3Rv X3N0cnVjdFt0eXBldmFsLTFdOworfQorCiAjZW5kaWYKLS0tIGNoZWNrcG9saWN5LTEuMjIv Y2hlY2twb2xpY3kuYwkyMDA1LTAxLTI2IDE0OjE2OjIwLjAwMDAwMDAwMCAtMDUwMAorKysg Y2hlY2twb2xpY3ktMS4yMi5leHRlbmRzLjJuZC9jaGVja3BvbGljeS5jCTIwMDUtMDMtMjEg MTY6NDA6MzYuMDAwMDAwMDAwIC0wNTAwCkBAIC0zNDQsOCArMzQ0LDEwIEBAIHZvaWQgY2hl Y2tfYXNzZXJ0aW9uX2hlbHBlcih1bnNpZ25lZCBpbnQKIAogdm9pZCBjaGVja19hc3NlcnRp b25zKHZvaWQpIAogeworCWViaXRtYXBfdCB0ZW1wOworCXR5cGVfZGF0dW1fdCAqdHlwZWRh dHVtOwogCXRlX2Fzc2VydF90ICphLCAqdG1wOwotCXVuc2lnbmVkIGludCBpLCBqOworCXVu c2lnbmVkIGludCBpLCBqLCBrOwogCiAJYSA9IHRlX2Fzc2VydGlvbnM7CiAJd2hpbGUgKGEp IHsKQEAgLTM1Myw3ICszNTUsMjMgQEAgdm9pZCBjaGVja19hc3NlcnRpb25zKHZvaWQpIAog CQkJaWYgKCFlYml0bWFwX2dldF9iaXQoJmEtPnN0eXBlcywgaSkpCiAJCQkJY29udGludWU7 CiAJCQlpZiAoYS0+c2VsZikgewotCQkJCWNoZWNrX2Fzc2VydGlvbl9oZWxwZXIoaSwgaSwg JmEtPnRjbGFzc2VzLCBhLT5hdnAsIGEtPmxpbmUpOworCQkJCXR5cGVkYXR1bSA9IHR5cGVf dmFsX3RvX3N0cnVjdFtpXTsKKwkJCQlpZiAoIXR5cGVkYXR1bSkgeworCQkJCQlmcHJpbnRm KHN0ZGVyciwgIkJVRzogY2hlY2tfYXNzZXRpb24gZm9yIHVuZGVmaW5lZCB0eXBlLlxuIik7 CisJCQkJCWV4aXQoMSk7CisJCQkJfQorCQkJCWViaXRtYXBfaW5pdCgmdGVtcCk7CisJCQkJ Z2V0X2NoaWxkX3R5cGVzKCZ0ZW1wLCB0eXBlZGF0dW0sIGViaXRtYXBfZ2V0X2JpdCgmYS0+ aW5oZXJpdCwgaSkpOworCQkJCWZvciAoaiA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBq IDwgZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBqKyspIHsKKwkJCQkJaWYgKCFlYml0bWFwX2dl dF9iaXQoJnRlbXAsIGopKQorCQkJCQkJY29udGludWU7CisJCQkJCWZvciAoayA9IGViaXRt YXBfc3RhcnRiaXQoJnRlbXApOyBrIDwgZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBrKyspIHsK KwkJCQkJCWlmICghZWJpdG1hcF9nZXRfYml0KCZ0ZW1wLCBrKSkKKwkJCQkJCQljb250aW51 ZTsKKwkJCQkJCSBjaGVja19hc3NlcnRpb25faGVscGVyKGosIGssICZhLT50Y2xhc3Nlcywg YS0+YXZwLCBhLT5saW5lKTsKKwkJCQkJfQorCQkJCX0KKwkJCQllYml0bWFwX2Rlc3Ryb3ko JnRlbXApOwogCQkJfQogCQkJZm9yIChqID0gZWJpdG1hcF9zdGFydGJpdCgmYS0+dHR5cGVz KTsgaiA8IGViaXRtYXBfbGVuZ3RoKCZhLT50dHlwZXMpOyBqKyspIHsKIAkJCQlpZiAoIWVi aXRtYXBfZ2V0X2JpdCgmYS0+dHR5cGVzLCBqKSkgCkBAIC0zNjYsNiArMzg0LDcgQEAgdm9p ZCBjaGVja19hc3NlcnRpb25zKHZvaWQpIAogCQllYml0bWFwX2Rlc3Ryb3koJnRtcC0+c3R5 cGVzKTsKIAkJZWJpdG1hcF9kZXN0cm95KCZ0bXAtPnR0eXBlcyk7CiAJCWViaXRtYXBfZGVz dHJveSgmdG1wLT50Y2xhc3Nlcyk7CisJCWViaXRtYXBfZGVzdHJveSgmdG1wLT5pbmhlcml0 KTsKIAkJZnJlZSh0bXAtPmF2cCk7CiAJCWZyZWUodG1wKTsKIAl9CkBAIC00NDIsNiArNDYx LDQ5IEBAIGludCBjaGFuZ2VfYm9vbChjaGFyICpuYW1lLCBpbnQgc3RhdGUpCiAJcmV0dXJu IDA7CiB9CiAKK3R5cGVfZGF0dW1fdCAqKnR5cGVfdmFsX3RvX3N0cnVjdCA9IE5VTEw7Citp bnQgbnVtX3R5cGVfdmFsX3RvX3N0cnVjdCA9IC0xOworCitzdGF0aWMgaW50IHR5cGVfdmFs X3RvX3N0cnVjdF9oZWxwZXIoaGFzaHRhYl9rZXlfdCBrLCBoYXNodGFiX2RhdHVtX3QgZCwg dm9pZCAqYXJncykKK3sKKwl0eXBlX2RhdHVtX3QgKnQgPSAodHlwZV9kYXR1bV90ICopZDsK KwlpZiAoIXQtPmlzYXR0ciAmJiB0LT5wcmltYXJ5KQorCQl0eXBlX3ZhbF90b19zdHJ1Y3Rb dC0+dmFsdWUtMV0gPSB0OworCXJldHVybiAwOyAvKiBhbHdheXMgc3VjY2VzcyAqLworfQor Cit2b2lkIGdldF9jaGlsZF90eXBlcyhlYml0bWFwX3QgKnNldCwgdHlwZV9kYXR1bV90ICp0 ZCwgaW50IHJlY3VyKQoreworCXR5cGVfZGF0dW1fdCAqY2hpbGQ7CisJaW50IGk7CisKKwlp ZiAoIXRkLT5pc2F0dHIgJiYgIXRkLT5wcmltYXJ5KQorCQl0ZCA9IGdldF90eXBlKHRkLT52 YWx1ZSk7CisKKwlpZiAoIXRkLT5pc2F0dHIpIHsKKwkJZWJpdG1hcF9zZXRfYml0KHNldCwg dGQtPnZhbHVlIC0gMSwgMSk7CisJCWlmICghcmVjdXIpCisJCQlyZXR1cm47CisJCWZvciAo aSA9IGViaXRtYXBfc3RhcnRiaXQoJnRkLT50eXBlcyk7IGkgPCBlYml0bWFwX2xlbmd0aCgm dGQtPnR5cGVzKTsgaSsrKSB7CisJCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdGQtPnR5cGVz LCBpKSkKKwkJCQljb250aW51ZTsKKwkJCWNoaWxkID0gdHlwZV92YWxfdG9fc3RydWN0W2ld OworCQkJZ2V0X2NoaWxkX3R5cGVzKHNldCwgY2hpbGQsIHJlY3VyKTsKKwkJfQorCX0gZWxz ZSB7CisJCWZvciAoaSA9IGViaXRtYXBfc3RhcnRiaXQoJnRkLT50eXBlcyk7IGkgPCBlYml0 bWFwX2xlbmd0aCgmdGQtPnR5cGVzKTsgaSsrKSB7CisJCQlpZiAoIWViaXRtYXBfZ2V0X2Jp dCgmdGQtPnR5cGVzLCBpKSkKKwkJCQljb250aW51ZTsKKwkJCWlmICghcmVjdXIpIHsKKwkJ CQllYml0bWFwX3NldF9iaXQoc2V0LCBpLCAxKTsKKwkJCX0gZWxzZSB7CisJCQkJY2hpbGQg PSB0eXBlX3ZhbF90b19zdHJ1Y3RbaV07CisJCQkJZ2V0X2NoaWxkX3R5cGVzKHNldCwgY2hp bGQsIHJlY3VyKTsKKwkJCX0KKwkJfQorCX0KK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogewogCXNlY3VyaXR5X2NsYXNzX3QgdGNsYXNzOwpAQCAtNDU2LDcgKzUx OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl1bnNpZ25lZCBpbnQg YmluYXJ5ID0gMCwgZGVidWcgPSAwOwogCXN0cnVjdCB2YWxfdG9fbmFtZSB2OwogCWludCBy ZXQsIGNoLCBmZDsKLQl1bnNpZ25lZCBpbnQgbmVsOworCXVuc2lnbmVkIGludCBuZWwsIGxl bjsKIAlzdHJ1Y3Qgc3RhdCBzYjsKIAl2b2lkICptYXA7CiAJRklMRSAqb3V0ZnAgPSBOVUxM OwpAQCAtNTkzLDYgKzY1NSwxOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiAgZXJyb3IocykgZW5jb3VudGVyZWQgd2hpbGUg cGFyc2luZyBjb25maWd1cmF0aW9uXG4iLCBhcmd2WzBdKTsKIAkJCWV4aXQoMSk7CiAJCX0K KworCQkvKiBjb25zdHJ1Y3Rpb24gb2YgdHlwZV92YWxfdG9fc3RydWN0ICovCisJCW51bV90 eXBlX3ZhbF90b19zdHJ1Y3QgPSBwb2xpY3lkYnAtPnBfdHlwZXMubnByaW07CisJCWxlbiA9 IHNpemVvZih0eXBlX2RhdHVtX3QgKikgKiBudW1fdHlwZV92YWxfdG9fc3RydWN0OworCQl0 eXBlX3ZhbF90b19zdHJ1Y3QgPSAodHlwZV9kYXR1bV90ICoqKW1hbGxvYyhsZW4pOworCQlp ZiAoIXR5cGVfdmFsX3RvX3N0cnVjdCkgeworCQkJZnByaW50ZihzdGRlcnIsICJ0eXBlX3Zh bF90b19zdHJ1Y3Q6IG91dCBvZiBtZW1vcnlcbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlt ZW1zZXQodHlwZV92YWxfdG9fc3RydWN0LCAwLCBsZW4pOworCQloYXNodGFiX21hcChwb2xp Y3lkYnAtPnBfdHlwZXMudGFibGUsIHR5cGVfdmFsX3RvX3N0cnVjdF9oZWxwZXIsIE5VTEwp OworCiAJCXJld2luZCh5eWluKTsKIAkJcG9saWN5ZGJfbGluZW5vID0gMTsKIAkJc291cmNl X2ZpbGVbMF0gPSAnXDAnOwotLS0gY2hlY2twb2xpY3ktMS4yMi9wb2xpY3lfc2Nhbi5sCTIw MDUtMDItMTcgMDk6NTk6MjMuMDAwMDAwMDAwIC0wNTAwCisrKyBjaGVja3BvbGljeS0xLjIy LmV4dGVuZHMuMm5kL3BvbGljeV9zY2FuLmwJMjAwNS0wMy0yMSAxMjoyMzoxNy4wMDAwMDAw MDAgLTA1MDAKQEAgLTc4LDYgKzc4LDggQEAgRUxTRSB8CiBlbHNlCQkJCXsgcmV0dXJuKEVM U0UpOyB9CiBBTElBUyB8CiBhbGlhcwkJCQl7IHJldHVybihBTElBUyk7IH0KK0VYVEVORFMg fAorZXh0ZW5kcwkJCQl7IHJldHVybihFWFRFTkRTKTsgfQogQVRUUklCVVRFIHwKIGF0dHJp YnV0ZQkJCXsgcmV0dXJuKEFUVFJJQlVURSk7IH0KIFRZUEVfVFJBTlNJVElPTiB8CkBAIC0y MTEsNyArMjEzLDggQEAgSDIJCQkJeyByZXR1cm4oSDIpOyB9CiAiLiIgfAogIl0iIHwKICJ+ IiB8Ci0iKiIJCQkJeyByZXR1cm4oeXl0ZXh0WzBdKTsgfSAKKyIqIiB8CisiQCIJCQkJeyBy ZXR1cm4oeXl0ZXh0WzBdKTsgfSAKIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB5eXdhcm4oInVucmVjb2duaXplZCBjaGFyYWN0ZXIiKTt9CiAlJQogaW50IHl5ZXJyb3Io Y2hhciAqbXNnKQotLS0gY2hlY2twb2xpY3ktMS4yMi9wb2xpY3lfcGFyc2UueQkyMDA1LTAy LTE3IDA5OjU5OjIzLjAwMDAwMDAwMCAtMDUwMAorKysgY2hlY2twb2xpY3ktMS4yMi5leHRl bmRzLjJuZC9wb2xpY3lfcGFyc2UueQkyMDA1LTAzLTIxIDE2OjQ2OjUyLjAwMDAwMDAwMCAt MDUwMApAQCAtMTksNiArMTksMTEgQEAKICAqCXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIHZlcnNpb24gMi4KICAqLwogCisvKiBVcGRhdGVkOiBLYWlHYWkgS29oZWksIDxrYWln YWlAYWsuanAubmVjLmNvbT4KKyAqICAgICAgQWRkZWQgaW5oZXJpdGVkIHR5cGUgZXh0ZW5z aW9ucyBhbmQgJ0AnIHByZWZpeC4gKDIwMDUvMDMvMjEpCisgKi8KKworCiAvKiBGTEFTSyAq LwogCiAlewpAQCAtNzMsNyArNzgsNyBAQCBzdGF0aWMgaW50IGRlZmluZV9sZXZlbChpbnQg cmFuZ2UpOwogc3RhdGljIGludCBkZWZpbmVfYXR0cmliKHZvaWQpOwogc3RhdGljIGludCBk ZWZpbmVfdHlwZWFsaWFzKHZvaWQpOwogc3RhdGljIGludCBkZWZpbmVfdHlwZWF0dHJpYnV0 ZSh2b2lkKTsKLXN0YXRpYyBpbnQgZGVmaW5lX3R5cGUoaW50IGFsaWFzKTsKK3N0YXRpYyBp bnQgZGVmaW5lX3R5cGUoaW50IGFsaWFzLCBpbnQgZXh0ZW5kcyk7CiBzdGF0aWMgaW50IGRl ZmluZV9jb21wdXRlX3R5cGUoaW50IHdoaWNoKTsKIHN0YXRpYyBpbnQgZGVmaW5lX3RlX2F2 dGFiKGludCB3aGljaCk7CiBzdGF0aWMgaW50IGRlZmluZV9yb2xlX3R5cGVzKHZvaWQpOwpA QCAtMTMzLDYgKzEzOCw3IEBAIHN0YXRpYyBpbnQgZGVmaW5lX2lwdjZfbm9kZV9jb250ZXh0 KHZvaWQKICV0b2tlbiBUWVBFCiAldG9rZW4gVFlQRVMKICV0b2tlbiBBTElBUworJXRva2Vu IEVYVEVORFMKICV0b2tlbiBBVFRSSUJVVEUKICV0b2tlbiBCT09MCiAldG9rZW4gSUYKQEAg LTI5Nyw5ICszMDMsMTMgQEAgYXR0cmlidXRlX2RlZiAgICAgICAgICAgOiBBVFRSSUJVVEUg aWRlbgogICAgICAgICAgICAgICAgICAgICAgICAgeyBpZiAoZGVmaW5lX2F0dHJpYigpKSBy ZXR1cm4gLTE7fQogICAgICAgICAgICAgICAgICAgICAgICAgOwogdHlwZV9kZWYJCTogVFlQ RSBpZGVudGlmaWVyIGFsaWFzX2RlZiBvcHRfYXR0cl9saXN0ICc7JwotICAgICAgICAgICAg ICAgICAgICAgICAge2lmIChkZWZpbmVfdHlwZSgxKSkgcmV0dXJuIC0xO30KKyAgICAgICAg ICAgICAgICAgICAgICAgIHtpZiAoZGVmaW5lX3R5cGUoMSwgMCkpIHJldHVybiAtMTt9CiAJ ICAgICAgICAgICAgICAgIHwgVFlQRSBpZGVudGlmaWVyIG9wdF9hdHRyX2xpc3QgJzsnCi0g ICAgICAgICAgICAgICAgICAgICAgICB7aWYgKGRlZmluZV90eXBlKDApKSByZXR1cm4gLTE7 fQorICAgICAgICAgICAgICAgICAgICAgICAge2lmIChkZWZpbmVfdHlwZSgwLCAwKSkgcmV0 dXJuIC0xO30KKwkJCXwgVFlQRSBpZGVudGlmaWVyIGFsaWFzX2RlZiBvcHRfZXh0ZW5kc19s aXN0ICc7JworCQkJe2lmIChkZWZpbmVfdHlwZSgxLCAxKSkgcmV0dXJuIC0xO30KKwkJCXwg VFlQRSBpZGVudGlmaWVyIG9wdF9leHRlbmRzX2xpc3QgJzsnCisJCQl7aWYgKGRlZmluZV90 eXBlKDAsIDEpKSByZXR1cm4gLTE7fQogICAgIAkJCTsKIHR5cGVhbGlhc19kZWYgICAgICAg ICAgIDogVFlQRUFMSUFTIGlkZW50aWZpZXIgYWxpYXNfZGVmICc7JwogCQkJe2lmIChkZWZp bmVfdHlwZWFsaWFzKCkpIHJldHVybiAtMTt9CkBAIC0zMTAsNiArMzIwLDggQEAgdHlwZWF0 dHJpYnV0ZV9kZWYJOiBUWVBFQVRUUklCVVRFIGlkZW50aQogb3B0X2F0dHJfbGlzdCAgICAg ICAgICAgOiAnLCcgaWRfY29tbWFfbGlzdAogCQkJfCAKIAkJCTsKK29wdF9leHRlbmRzX2xp c3QJOiBFWFRFTkRTIGlkX2NvbW1hX2xpc3QKKwkJCTsKIGJvb2xfZGVmICAgICAgICAgICAg ICAgIDogQk9PTCBpZGVudGlmaWVyIGJvb2xfdmFsICc7JwogICAgICAgICAgICAgICAgICAg ICAgICAge2lmIChkZWZpbmVfYm9vbCgpKSByZXR1cm4gLTE7fQogICAgICAgICAgICAgICAg ICAgICAgICAgOwpAQCAtNTExLDEzICs1MjMsMTMgQEAgY2V4cHJfcHJpbQkJOiBVMSBvcCBV MgogCQkJfCBSMyBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1cm4gLTE7IH0g bmFtZXNfcHVzaAogCQkJeyAkJCA9IGRlZmluZV9jZXhwcihDRVhQUl9OQU1FUywgKENFWFBS X1JPTEUgfCBDRVhQUl9YVEFSR0VUKSwgJDIpOwogCQkJICBpZiAoJCQgPT0gMCkgcmV0dXJu IC0xOyB9Ci0JCQl8IFQxIG9wIHsgaWYgKGluc2VydF9zZXBhcmF0b3IoMSkpIHJldHVybiAt MTsgfSBuYW1lc19wdXNoCisJCQl8IFQxIG9wIHsgaWYgKGluc2VydF9zZXBhcmF0b3IoMSkp IHJldHVybiAtMTsgfSB0eXBlX25hbWVzX3B1c2gKIAkJCXsgJCQgPSBkZWZpbmVfY2V4cHIo Q0VYUFJfTkFNRVMsIENFWFBSX1RZUEUsICQyKTsKIAkJCSAgaWYgKCQkID09IDApIHJldHVy biAtMTsgfQotCQkJfCBUMiBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1cm4g LTE7IH0gbmFtZXNfcHVzaAorCQkJfCBUMiBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9yKDEp KSByZXR1cm4gLTE7IH0gdHlwZV9uYW1lc19wdXNoCiAJCQl7ICQkID0gZGVmaW5lX2NleHBy KENFWFBSX05BTUVTLCAoQ0VYUFJfVFlQRSB8IENFWFBSX1RBUkdFVCksICQyKTsKIAkJCSAg aWYgKCQkID09IDApIHJldHVybiAtMTsgfQotCQkJfCBUMyBvcCB7IGlmIChpbnNlcnRfc2Vw YXJhdG9yKDEpKSByZXR1cm4gLTE7IH0gbmFtZXNfcHVzaAorCQkJfCBUMyBvcCB7IGlmIChp bnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1cm4gLTE7IH0gdHlwZV9uYW1lc19wdXNoCiAJCQl7 ICQkID0gZGVmaW5lX2NleHByKENFWFBSX05BTUVTLCAoQ0VYUFJfVFlQRSB8IENFWFBSX1hU QVJHRVQpLCAkMik7CiAJCQkgIGlmICgkJCA9PSAwKSByZXR1cm4gLTE7IH0KIAkJCXwgU0FN RVVTRVIKQEAgLTUzMiwxMCArNTQ0LDEwIEBAIGNleHByX3ByaW0JCTogVTEgb3AgVTIKIAkJ CXwgUk9MRSByb2xlX21sc19vcAogCQkJeyAkJCA9IGRlZmluZV9jZXhwcihDRVhQUl9BVFRS LCBDRVhQUl9ST0xFLCAkMik7CiAJCQkgIGlmICgkJCA9PSAwKSByZXR1cm4gLTE7IH0KLQkJ CXwgU09VUkNFIFRZUEUgeyBpZiAoaW5zZXJ0X3NlcGFyYXRvcigxKSkgcmV0dXJuIC0xOyB9 IG5hbWVzX3B1c2gKKwkJCXwgU09VUkNFIFRZUEUgeyBpZiAoaW5zZXJ0X3NlcGFyYXRvcigx KSkgcmV0dXJuIC0xOyB9IHR5cGVfbmFtZXNfcHVzaAogCQkJeyAkJCA9IGRlZmluZV9jZXhw cihDRVhQUl9OQU1FUywgQ0VYUFJfVFlQRSwgQ0VYUFJfRVEpOwogCQkJICBpZiAoJCQgPT0g MCkgcmV0dXJuIC0xOyB9Ci0JCQl8IFRBUkdFVCBUWVBFIHsgaWYgKGluc2VydF9zZXBhcmF0 b3IoMSkpIHJldHVybiAtMTsgfSBuYW1lc19wdXNoCisJCQl8IFRBUkdFVCBUWVBFIHsgaWYg KGluc2VydF9zZXBhcmF0b3IoMSkpIHJldHVybiAtMTsgfSB0eXBlX25hbWVzX3B1c2gKIAkJ CXsgJCQgPSBkZWZpbmVfY2V4cHIoQ0VYUFJfTkFNRVMsIChDRVhQUl9UWVBFIHwgQ0VYUFJf VEFSR0VUKSwgQ0VYUFJfRVEpOwogCQkJICBpZiAoJCQgPT0gMCkgcmV0dXJuIC0xOyB9CiAJ CQl8IEwxIHJvbGVfbWxzX29wIEwyCkBAIC02OTUsMjAgKzcwNywyNyBAQCB0aWxkZQkJCTog J34nCiAJCQk7CiBhc3RlcmlzawkJOiAnKicKIAkJCTsKLW5hbWVzICAgICAgICAgICAJOiBp ZGVudGlmaWVyCithdG1hcmsJCQk6ICdAJworCQkJOwordHlwZV9pZGVudGlmaWVyCQk6IElE RU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCh5eXRleHQsIDApKSByZXR1cm4gLTE7IH0K KwkJCXwgYXRtYXJrIElERU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCgiQCIsIDApIHx8 IGluc2VydF9pZCh5eXRleHQsIDApKSByZXR1cm4gLTE7IH0KKwkJCTsKK25hbWVzICAgICAg ICAgICAJOiB0eXBlX2lkZW50aWZpZXIKIAkJCXsgaWYgKGluc2VydF9zZXBhcmF0b3IoMCkp IHJldHVybiAtMTsgfQogCQkJfCBuZXN0ZWRfaWRfc2V0CiAJCQl7IGlmIChpbnNlcnRfc2Vw YXJhdG9yKDApKSByZXR1cm4gLTE7IH0KIAkJCXwgYXN0ZXJpc2sKICAgICAgICAgICAgICAg ICAgICAgICAgIHsgaWYgKGluc2VydF9pZCgiKiIsIDApKSByZXR1cm4gLTE7IAogCQkJICBp ZiAoaW5zZXJ0X3NlcGFyYXRvcigwKSkgcmV0dXJuIC0xOyB9Ci0JCQl8IHRpbGRlIGlkZW50 aWZpZXIKKwkJCXwgdGlsZGUgdHlwZV9pZGVudGlmaWVyCiAgICAgICAgICAgICAgICAgICAg ICAgICB7IGlmIChpbnNlcnRfaWQoIn4iLCAwKSkgcmV0dXJuIC0xOwogCQkJICBpZiAoaW5z ZXJ0X3NlcGFyYXRvcigwKSkgcmV0dXJuIC0xOyB9CiAJCQl8IHRpbGRlIG5lc3RlZF9pZF9z ZXQKLQkgCQl7IGlmIChpbnNlcnRfaWQoIn4iLCAwKSkgcmV0dXJuIC0xOyAKKwkJCXsgaWYg KGluc2VydF9pZCgifiIsIDApKSByZXR1cm4gLTE7CiAJCQkgIGlmIChpbnNlcnRfc2VwYXJh dG9yKDApKSByZXR1cm4gLTE7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHwgaWRlbnRp ZmllciAnLScgeyBpZiAoaW5zZXJ0X2lkKCItIiwgMCkpIHJldHVybiAtMTsgfSBpZGVudGlm aWVyIAorCQkJfCB0eXBlX2lkZW50aWZpZXIgJy0nIHsgaWYgKGluc2VydF9pZCgiLSIsIDAp KSByZXR1cm4gLTE7IH0gdHlwZV9pZGVudGlmaWVyIAogCQkJeyBpZiAoaW5zZXJ0X3NlcGFy YXRvcigwKSkgcmV0dXJuIC0xOyB9CiAJCQk7CiB0aWxkZV9wdXNoICAgICAgICAgICAgICA6 IHRpbGRlCkBAIC03MTcsNiArNzM2LDE5IEBAIHRpbGRlX3B1c2ggICAgICAgICAgICAgIDog dGlsZGUKIGFzdGVyaXNrX3B1c2ggICAgICAgICAgIDogYXN0ZXJpc2sKICAgICAgICAgICAg ICAgICAgICAgICAgIHsgaWYgKGluc2VydF9pZCgiKiIsIDEpKSByZXR1cm4gLTE7IH0KIAkJ CTsKK3R5cGVfbmFtZXNfcHVzaAkJOiB0eXBlX2lkZW50aWZpZXJfcHVzaAorCQkJfCAneycg dHlwZV9pZGVudGlmaWVyX2xpc3RfcHVzaCAnfScKKwkJCXwgdGlsZGVfcHVzaCB0eXBlX2lk ZW50aWZpZXJfcHVzaAorCQkJfCB0aWxkZV9wdXNoICd7JyB0eXBlX2lkZW50aWZpZXJfbGlz dF9wdXNoICd9JworCQkJOwordHlwZV9pZGVudGlmaWVyX2xpc3RfcHVzaAk6IHR5cGVfaWRl bnRpZmllcl9wdXNoCisJCQkJfCB0eXBlX2lkZW50aWZpZXJfbGlzdF9wdXNoIHR5cGVfaWRl bnRpZmllcl9wdXNoCisJCQkJOwordHlwZV9pZGVudGlmaWVyX3B1c2gJOiBJREVOVElGSUVS CisJCQl7IGlmIChpbnNlcnRfaWQoeXl0ZXh0LDEpKSByZXR1cm4gLTE7IH0KKwkJCXwgYXRt YXJrIElERU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCh5eXRleHQsMSl8fGluc2VydF9p ZCgiQCIsMSkpIHJldHVybiAtMTt9CisJCQk7CiBuYW1lc19wdXNoCQk6IGlkZW50aWZpZXJf cHVzaAogCQkJfCAneycgaWRlbnRpZmllcl9saXN0X3B1c2ggJ30nCiAJCQl8IGFzdGVyaXNr X3B1c2gKQEAgLTczNiw3ICs3NjgsOSBAQCBuZXN0ZWRfaWRfc2V0ICAgICAgICAgICA6ICd7 JyBuZXN0ZWRfaWRfCiAgICAgICAgICAgICAgICAgICAgICAgICA7CiBuZXN0ZWRfaWRfbGlz dCAgICAgICAgICA6IG5lc3RlZF9pZF9lbGVtZW50IHwgbmVzdGVkX2lkX2xpc3QgbmVzdGVk X2lkX2VsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgIDsKLW5lc3RlZF9pZF9lbGVt ZW50ICAgICAgIDogaWRlbnRpZmllciB8ICctJyB7IGlmIChpbnNlcnRfaWQoIi0iLCAwKSkg cmV0dXJuIC0xOyB9IGlkZW50aWZpZXIgfCBuZXN0ZWRfaWRfc2V0CituZXN0ZWRfaWRfZWxl bWVudCAgICAgICA6IHR5cGVfaWRlbnRpZmllcgorCQkJfCAnLScgeyBpZiAoaW5zZXJ0X2lk KCItIiwgMCkpIHJldHVybiAtMTsgfSB0eXBlX2lkZW50aWZpZXIKKwkJCXwgbmVzdGVkX2lk X3NldAogICAgICAgICAgICAgICAgICAgICAgICAgOwogaWRlbnRpZmllcgkJOiBJREVOVElG SUVSCiAJCQl7IGlmIChpbnNlcnRfaWQoeXl0ZXh0LDApKSByZXR1cm4gLTE7IH0KQEAgLTE1 OTYsMTAgKzE2MzAsMTAgQEAgc3RhdGljIGludCBkZWZpbmVfdHlwZWF0dHJpYnV0ZSh2b2lk KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGRlZmluZV90eXBlKGludCBhbGlhcykK K3N0YXRpYyBpbnQgZGVmaW5lX3R5cGUoaW50IGFsaWFzLCBpbnQgZXh0ZW5kcykKIHsKIAlj aGFyICppZDsKLQl0eXBlX2RhdHVtX3QgKmRhdHVtLCAqYWxpYXNkYXR1bSwgKmF0dHI7CisJ dHlwZV9kYXR1bV90ICpkYXR1bSwgKmFsaWFzZGF0dW0sICppbmhlcml0OwogCWludCByZXQs IG5ld2F0dHIgPSAwOwogCiAKQEAgLTE2NzcsOSArMTcxMSwxMCBAQCBzdGF0aWMgaW50IGRl ZmluZV90eXBlKGludCBhbGlhcykKIAl9CiAKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3Zl KGlkX3F1ZXVlKSkpIHsKLQkJYXR0ciA9IGhhc2h0YWJfc2VhcmNoKHBvbGljeWRicC0+cF90 eXBlcy50YWJsZSwgaWQpOwotCQlpZiAoIWF0dHIpIHsKLQkJCXNwcmludGYoZXJyb3Jtc2cs ICJhdHRyaWJ1dGUgJXMgaXMgbm90IGRlY2xhcmVkIiwgaWQpOworCQlpbmhlcml0ID0gaGFz aHRhYl9zZWFyY2gocG9saWN5ZGJwLT5wX3R5cGVzLnRhYmxlLCBpZCk7CisJCWlmICghaW5o ZXJpdCkgeworCQkJc3ByaW50ZihlcnJvcm1zZywgIiVzYXR0cmlidXRlICVzIGlzIG5vdCBk ZWNsYXJlZCIsCisJCQkgICAgICAgIChleHRlbmRzKT8idHlwZS8iOiIiLCBpZCk7CiAjaWYg MQogCQkJLyogdHJlYXQgaXQgYXMgYSBmYXRhbCBlcnJvciAqLwogCQkJeXllcnJvcihlcnJv cm1zZyk7CkBAIC0xNzA4LDcgKzE3NDMsNyBAQCBzdGF0aWMgaW50IGRlZmluZV90eXBlKGlu dCBhbGlhcykKIAkJCW5ld2F0dHIgPSAwOwogCQl9CiAKLQkJaWYgKCFhdHRyLT5pc2F0dHIp IHsKKwkJaWYgKCFleHRlbmRzICYmICFpbmhlcml0LT5pc2F0dHIpIHsKIAkJCXNwcmludGYo ZXJyb3Jtc2csICIlcyBpcyBhIHR5cGUsIG5vdCBhbiBhdHRyaWJ1dGUiLCBpZCk7CiAJCQl5 eWVycm9yKGVycm9ybXNnKTsKIAkJCXJldHVybiAtMTsKQEAgLTE3MTcsNyArMTc1Miw3IEBA IHN0YXRpYyBpbnQgZGVmaW5lX3R5cGUoaW50IGFsaWFzKQogCQlpZiAoIW5ld2F0dHIpCiAJ CQlmcmVlKGlkKTsKIAotCQllYml0bWFwX3NldF9iaXQoJmF0dHItPnR5cGVzLCBkYXR1bS0+ dmFsdWUgLSAxLCBUUlVFKTsKKwkJZWJpdG1hcF9zZXRfYml0KCZpbmhlcml0LT50eXBlcywg ZGF0dW0tPnZhbHVlIC0gMSwgVFJVRSk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xNzU5LDEx ICsxNzk0LDEzIEBAIHN0YXRpYyBjaGFyICp0eXBlX3ZhbF90b19uYW1lKHVuc2lnbmVkIGkK IAogc3RhdGljIGludCBzZXRfdHlwZXMoZWJpdG1hcF90ICpzZXQsCiAJCSAgICAgZWJpdG1h cF90ICpuZWdzZXQsCisJCSAgICAgZWJpdG1hcF90ICppbmhlcml0LAogCQkgICAgIGNoYXIg KmlkLAogCQkgICAgIGludCAqYWRkKQogewogCXR5cGVfZGF0dW1fdCAqdDsKIAl1bnNpZ25l ZCBpbnQgaTsKKwllYml0bWFwX3QgdGVtcDsKIAogCWlmIChzdHJjbXAoaWQsICIqIikgPT0g MCkgewogCQkvKiBzZXQgYWxsIHR5cGVzIG5vdCBpbiBuZWdzZXQgKi8KQEAgLTE3ODgsMTAg KzE4MjUsMTYgQEAgc3RhdGljIGludCBzZXRfdHlwZXMoZWJpdG1hcF90ICpzZXQsCiAJfQog CiAJaWYgKHN0cmNtcChpZCwgIi0iKSA9PSAwKSB7Ci0JCSphZGQgPSAwOworCQkqYWRkICY9 IDB4ZmZmZTsgLyogY2xlYXIgYml0IDAqLworCQlmcmVlKGlkKTsKKwkJcmV0dXJuIDA7CisJ fQorCisJaWYgKHN0cmNtcChpZCwgIkAiKSA9PSAwKSB7CisJCSphZGQgfD0gMHgwMDAyOyAv KiBzZXQgYml0IDEgKi8KIAkJZnJlZShpZCk7CiAJCXJldHVybiAwOwotCX0JCisJfQogCiAJ dCA9IGhhc2h0YWJfc2VhcmNoKHBvbGljeWRicC0+cF90eXBlcy50YWJsZSwgaWQpOwogCWlm ICghdCkgewpAQCAtMTgwMCw0MiArMTg0MywyOCBAQCBzdGF0aWMgaW50IHNldF90eXBlcyhl Yml0bWFwX3QgKnNldCwKIAkJZnJlZShpZCk7CiAJCXJldHVybiAtMTsKIAl9CisJaWYgKGlu aGVyaXQgJiYgKCgqYWRkKSYweDAwMDIpIT0wICkKKwkJZWJpdG1hcF9zZXRfYml0KGluaGVy aXQsIHQtPnZhbHVlIC0gMSwgVFJVRSk7CiAKLQlpZiAodC0+aXNhdHRyKSB7Ci0JCS8qIHNl dCBvciBjbGVhciBhbGwgdHlwZXMgd2l0aCB0aGlzIGF0dHJpYnV0ZSwKLQkJICAgYnV0IGRv IG5vdCBzZXQgYW55dGhpbmcgZXhwbGljaXRseSBjbGVhcmVkIHByZXZpb3VzbHkgKi8KLQkJ Zm9yIChpID0gZWJpdG1hcF9zdGFydGJpdCgmdC0+dHlwZXMpOyBpIDwgZWJpdG1hcF9sZW5n dGgoJnQtPnR5cGVzKTsgaSsrKSB7Ci0JCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdC0+dHlw ZXMsIGkpKSAKLQkJCQljb250aW51ZTsJCQotCQkJaWYgKCEoKmFkZCkpIHsKLQkJCQllYml0 bWFwX3NldF9iaXQoc2V0LCBpLCBGQUxTRSk7Ci0JCQkJZWJpdG1hcF9zZXRfYml0KG5lZ3Nl dCwgaSwgVFJVRSk7Ci0JCQl9IGVsc2UgaWYgKCFlYml0bWFwX2dldF9iaXQobmVnc2V0LCBp KSkgewotCQkJCWViaXRtYXBfc2V0X2JpdChzZXQsIGksIFRSVUUpOwotI2lmIFZFUkJPU0UK LQkJCX0gZWxzZSB7Ci0JCQkJY2hhciAqbmFtZSA9IHR5cGVfdmFsX3RvX25hbWUoaSsxKTsK LQkJCQlzcHJpbnRmKGVycm9ybXNnLCAiaWdub3JpbmcgJXMgZHVlIHRvIHByaW9yIC0lcyIs IG5hbWUsIG5hbWUpOwotCQkJCXl5d2FybihlcnJvcm1zZyk7Ci0jZW5kaWYKLQkJCX0KLQkJ fQotCX0gZWxzZSB7Ci0JCS8qIHNldCBvciBjbGVhciBvbmUgdHlwZSwgYnV0IGRvIG5vdCBz ZXQgYW55dGhpbmcKLQkJICAgZXhwbGljaXRseSBjbGVhcmVkIHByZXZpb3VzbHkgKi8JCi0J CWlmICghKCphZGQpKSB7Ci0JCQllYml0bWFwX3NldF9iaXQoc2V0LCB0LT52YWx1ZSAtIDEs IEZBTFNFKTsKLQkJCWViaXRtYXBfc2V0X2JpdChuZWdzZXQsIHQtPnZhbHVlIC0gMSwgVFJV RSk7Ci0JCX0gZWxzZSBpZiAoIWViaXRtYXBfZ2V0X2JpdChuZWdzZXQsIHQtPnZhbHVlIC0g MSkpIHsKLQkJCWViaXRtYXBfc2V0X2JpdChzZXQsIHQtPnZhbHVlIC0gMSwgVFJVRSk7CisJ ZWJpdG1hcF9pbml0KCZ0ZW1wKTsKKwlnZXRfY2hpbGRfdHlwZXMoJnRlbXAsIHQsICgqYWRk KSYweDAwMDIpOworCWZvciAoaSA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBpIDwgZWJp dG1hcF9sZW5ndGgoJnRlbXApOyBpKyspIHsKKwkJaWYgKCFlYml0bWFwX2dldF9iaXQoJnRl bXAsIGkpKQorCQkJY29udGludWU7CisJCWlmICghKCgqYWRkKSYweDAwMDEpKSB7CisJCQll Yml0bWFwX3NldF9iaXQoc2V0LCBpLCBGQUxTRSk7CisJCQllYml0bWFwX3NldF9iaXQobmVn c2V0LCBpLCBUUlVFKTsKKwkJfSBlbHNlIGlmICghZWJpdG1hcF9nZXRfYml0KG5lZ3NldCwg aSkpIHsKKwkJCWViaXRtYXBfc2V0X2JpdChzZXQsIGksIFRSVUUpOwogI2lmIFZFUkJPU0UK IAkJfSBlbHNlIHsKLQkJCXNwcmludGYoZXJyb3Jtc2csICJpZ25vcmluZyAlcyBkdWUgdG8g cHJpb3IgLSVzIiwgaWQsIGlkKTsKKwkJCWNoYXIgKm5hbWUgPSB0eXBlX3ZhbF90b19uYW1l KGkrMSk7CisJCQlzcHJpbnRmKGVycm9ybXNnLCAiaWdub3JpbmcgJXMgZHVlIHRvIHByaW9y IC0lcyIsIG5hbWUsIG5hbWUpOwogCQkJeXl3YXJuKGVycm9ybXNnKTsKICNlbmRpZgogCQl9 CiAJfQotCisJZWJpdG1hcF9kZXN0cm95KCZ0ZW1wKTsKIAlmcmVlKGlkKTsKIAkqYWRkID0g MTsKIAlyZXR1cm4gMDsKQEAgLTE4NzIsMTQgKzE5MDEsMTQgQEAgc3RhdGljIGludCBkZWZp bmVfY29tcHV0ZV90eXBlKGludCB3aGljaAogCiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwog CXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5 cGVzKCZzdHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90eXBlcygmc3R5 cGVzLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4gLTE7CiAJfQogCWVi aXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKIAogCWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3 aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBl cygmdHR5cGVzLCAmbmVnc2V0LCBpZCwgJmFkZCkpCisJCWlmIChzZXRfdHlwZXMoJnR0eXBl cywgJm5lZ3NldCwgTlVMTCwgaWQsICZhZGQpKQogCQkJcmV0dXJuIC0xOwogCX0KIAllYml0 bWFwX2Rlc3Ryb3koJm5lZ3NldCk7CkBAIC0yMDEyLDE0ICsyMDQxLDE0IEBAIHN0YXRpYyBj b25kX2F2X2xpc3RfdCAqZGVmaW5lX2NvbmRfY29tcHUKIAogCWViaXRtYXBfaW5pdCgmbmVn c2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYg KHNldF90eXBlcygmc3R5cGVzLCAmbmVnc2V0LCBpZCwgJmFkZCkpCisJCWlmIChzZXRfdHlw ZXMoJnN0eXBlcywgJm5lZ3NldCwgTlVMTCwgaWQsICZhZGQpKQogCQkJcmV0dXJuICBDT05E X0VSUjsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwogCiAJZWJpdG1hcF9pbml0 KCZuZWdzZXQpOwogCXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkgewot CQlpZiAoc2V0X3R5cGVzKCZ0dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNl dF90eXBlcygmdHR5cGVzLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4g Q09ORF9FUlI7CiAJfQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKQEAgLTI0MTksOSAr MjQ0OCwxMCBAQCBzdGF0aWMgY29uZF9hdl9saXN0X3QgKmRlZmluZV9jb25kX3RlX2F2CiAJ Y29uZF9hdl9saXN0X3QgKnN1Yl9saXN0LCAqZmluYWxfbGlzdCwgKnRhaWw7CiAJY2xhc3Nf ZGF0dW1fdCAqY2xhZGF0dW07CiAJcGVybV9kYXR1bV90ICpwZXJkYXR1bTsKLQllYml0bWFw X3Qgc3R5cGVzLCB0dHlwZXMsIHRjbGFzc2VzLCBuZWdzZXQ7CisJdHlwZV9kYXR1bV90ICp0 eXBlZGF0dW07CisJZWJpdG1hcF90IHN0eXBlcywgdHR5cGVzLCB0Y2xhc3NlcywgdGVtcCwg aW5oZXJpdCwgbmVnc2V0OwogCWFjY2Vzc192ZWN0b3JfdCAqYXZwOwotCWludCBpLCBqLCBo aWNsYXNzLCBzZWxmID0gMCwgYWRkID0gMTsKKwlpbnQgaSwgaiwgaywgaGljbGFzcywgc2Vs ZiA9IDAsIGFkZCA9IDE7CiAJaW50IHN1cHByZXNzID0gMDsKIAogCWlmIChwYXNzID09IDEp IHsKQEAgLTI0MzksMTAgKzI0NjksMTEgQEAgc3RhdGljIGNvbmRfYXZfbGlzdF90ICpkZWZp bmVfY29uZF90ZV9hdgogCWViaXRtYXBfaW5pdCgmc3R5cGVzKTsKIAllYml0bWFwX2luaXQo JnR0eXBlcyk7CiAJZWJpdG1hcF9pbml0KCZ0Y2xhc3Nlcyk7CisJZWJpdG1hcF9pbml0KCZp bmhlcml0KTsKIAogCWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVl dWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygmc3R5cGVzLCAmbmVn c2V0LCBpZCwgJmFkZCkpCisJCWlmIChzZXRfdHlwZXMoJnN0eXBlcywgJm5lZ3NldCwgJmlu aGVyaXQsIGlkLCAmYWRkKSkKIAkJCXJldHVybiBDT05EX0VSUjsKIAl9CiAJZWJpdG1hcF9k ZXN0cm95KCZuZWdzZXQpOwpAQCAtMjQ1Myw3ICsyNDg0LDcgQEAgc3RhdGljIGNvbmRfYXZf bGlzdF90ICpkZWZpbmVfY29uZF90ZV9hdgogCQkJc2VsZiA9IDE7CiAJCQljb250aW51ZTsK IAkJfQotCQlpZiAoc2V0X3R5cGVzKCZ0dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJ aWYgKHNldF90eXBlcygmdHR5cGVzLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQly ZXR1cm4gQ09ORF9FUlI7CiAJfQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKQEAgLTI1 NDIsMTkgKzI1NzMsMzYgQEAgc3RhdGljIGNvbmRfYXZfbGlzdF90ICpkZWZpbmVfY29uZF90 ZV9hdgogCQlmb3IgKGkgPSBlYml0bWFwX3N0YXJ0Yml0KCZzdHlwZXMpOyBpIDwgZWJpdG1h cF9sZW5ndGgoJnN0eXBlcyk7IGkrKykgewogCQkJaWYgKCFlYml0bWFwX2dldF9iaXQoJnN0 eXBlcywgaSkpIAogCQkJCWNvbnRpbnVlOwotCQkJaWYgKHNlbGYpIHsKLQkJCQlpZiAoKHN1 Yl9saXN0ID0gY29uZF90ZV9hdnRhYl9oZWxwZXIod2hpY2gsIGksIGksICZ0Y2xhc3Nlcywg YXZwICkpID09IENPTkRfRVJSKQotCQkJCQlyZXR1cm4gQ09ORF9FUlI7Ci0JCQkJaWYgKGZp bmFsX2xpc3QpIHsKLQkJCQkJdGFpbC0+bmV4dCA9IHN1Yl9saXN0OwotCQkJCQl3aGlsZSAo dGFpbC0+bmV4dCAhPSBOVUxMKQotCQkJCQkJdGFpbCA9IHRhaWwtPm5leHQ7Ci0JCQkJfSBl bHNlIHsKLQkJCQkJZmluYWxfbGlzdCA9IHN1Yl9saXN0OwotCQkJCQl0YWlsID0gZmluYWxf bGlzdDsKLQkJCQkJd2hpbGUgKHRhaWwtPm5leHQgIT0gTlVMTCkKLQkJCQkJCXRhaWwgPSB0 YWlsLT5uZXh0OworCQkJdHlwZWRhdHVtID0gZ2V0X3R5cGUoaSsxKTsKKwkJCWlmICghdHlw ZWRhdHVtKQorCQkJCXJldHVybiBDT05EX0VSUjsKKwkJCWViaXRtYXBfaW5pdCgmdGVtcCk7 CisJCQkvKiBJZiB0aGUgc291cmNlIHR5cGUgaXMgZ2l2ZW4gd2l0aCAnQCcgcHJlZml4LAor CQkJICAgJ3NlbGYnIGFsc28gaW5jbHVkZXMgb3duIGNoaWxkIHR5cGVzLiAqLworCQkJZ2V0 X2NoaWxkX3R5cGVzKCZ0ZW1wLCB0eXBlZGF0dW0sIGViaXRtYXBfZ2V0X2JpdCgmaW5oZXJp dCxpKSk7CisJCQlmb3IgKGogPSBlYml0bWFwX3N0YXJ0Yml0KCZ0ZW1wKTsgaiA8IGViaXRt YXBfbGVuZ3RoKCZ0ZW1wKTsgaisrKSB7CisJCQkJaWYoIWViaXRtYXBfZ2V0X2JpdCgmdGVt cCwgaikpCisJCQkJCWNvbnRpbnVlOworCQkJCWZvciAoayA9IGViaXRtYXBfc3RhcnRiaXQo JnRlbXApOyBrIDwgZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBrKyspIHsKKwkJCQkJaWYoIWVi aXRtYXBfZ2V0X2JpdCgmdGVtcCwgaykpCisJCQkJCQljb250aW51ZTsKKwkJCQkJc3ViX2xp c3QgPSBjb25kX3RlX2F2dGFiX2hlbHBlcih3aGljaCwgaiwgaywgJnRjbGFzc2VzLCBhdnAp OworCQkJCQlpZiAoc3ViX2xpc3Q9PUNPTkRfRVJSKSB7CisJCQkJCQllYml0bWFwX2Rlc3Ry b3koJnRlbXApOworCQkJCQkJcmV0dXJuIENPTkRfRVJSOworCQkJCQl9CisJCQkJCWlmIChm aW5hbF9saXN0KSB7CisJCQkJCQl0YWlsLT5uZXh0ID0gc3ViX2xpc3Q7CisJCQkJCQl3aGls ZSAodGFpbC0+bmV4dCAhPSBOVUxMKQorCQkJCQkJCXRhaWwgPSB0YWlsLT5uZXh0OworCQkJ CQl9IGVsc2UgeworCQkJCQkJZmluYWxfbGlzdCA9IHN1Yl9saXN0OworCQkJCQkJdGFpbCA9 IGZpbmFsX2xpc3Q7CisJCQkJCQl3aGlsZSAodGFpbC0+bmV4dCAhPSBOVUxMKQorCQkJCQkJ CXRhaWwgPSB0YWlsLT5uZXh0OworCQkJCQl9CiAJCQkJfQorCQkJCWViaXRtYXBfZGVzdHJv eSgmdGVtcCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0yNTk1LDkgKzI2NDMsMTAgQEAgc3RhdGlj IGludCBkZWZpbmVfdGVfYXZ0YWIoaW50IHdoaWNoKQogCWNoYXIgKmlkOwogCWNsYXNzX2Rh dHVtX3QgKmNsYWRhdHVtOwogCXBlcm1fZGF0dW1fdCAqcGVyZGF0dW07Ci0JZWJpdG1hcF90 IHN0eXBlcywgdHR5cGVzLCB0Y2xhc3NlcywgbmVnc2V0OworCXR5cGVfZGF0dW1fdCAqdHlw ZWRhdHVtOworCWViaXRtYXBfdCBzdHlwZXMsIHR0eXBlcywgdGNsYXNzZXMsIHRlbXAsIGlu aGVyaXQsIG5lZ3NldDsKIAlhY2Nlc3NfdmVjdG9yX3QgKmF2cDsKLQl1bnNpZ25lZCBpbnQg aSwgaiwgaGljbGFzczsKKwl1bnNpZ25lZCBpbnQgaSwgaiwgaywgaGljbGFzczsKIAlpbnQg c2VsZiA9IDAsIGFkZCA9IDE7CiAJdGVfYXNzZXJ0X3QgKm5ld2Fzc2VydDsKIAlpbnQgc3Vw cHJlc3MgPSAwOwpAQCAtMjYxNywxMCArMjY2NiwxMSBAQCBzdGF0aWMgaW50IGRlZmluZV90 ZV9hdnRhYihpbnQgd2hpY2gpCiAJZWJpdG1hcF9pbml0KCZzdHlwZXMpOwogCWViaXRtYXBf aW5pdCgmdHR5cGVzKTsKIAllYml0bWFwX2luaXQoJnRjbGFzc2VzKTsKKwllYml0bWFwX2lu aXQoJmluaGVyaXQpOwogCiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwogCXdoaWxlICgoaWQg PSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5cGVzKCZzdHlwZXMs ICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90eXBlcygmc3R5cGVzLCAmbmVnc2V0 LCAmaW5oZXJpdCwgaWQsICZhZGQpKQogCQkJcmV0dXJuIC0xOwogCX0KIAllYml0bWFwX2Rl c3Ryb3koJm5lZ3NldCk7CkBAIC0yNjMxLDcgKzI2ODEsNyBAQCBzdGF0aWMgaW50IGRlZmlu ZV90ZV9hdnRhYihpbnQgd2hpY2gpCiAJCQlzZWxmID0gMTsKIAkJCWNvbnRpbnVlOwogCQl9 Ci0JCWlmIChzZXRfdHlwZXMoJnR0eXBlcywgJm5lZ3NldCwgaWQsICZhZGQpKQorCQlpZiAo c2V0X3R5cGVzKCZ0dHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRkKSkKIAkJCXJldHVy biAtMTsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwpAQCAtMjcyMyw2ICsyNzcz LDcgQEAgc3RhdGljIGludCBkZWZpbmVfdGVfYXZ0YWIoaW50IHdoaWNoKQogCQluZXdhc3Nl cnQtPnN0eXBlcyA9IHN0eXBlczsKIAkJbmV3YXNzZXJ0LT50dHlwZXMgPSB0dHlwZXM7CiAJ CW5ld2Fzc2VydC0+dGNsYXNzZXMgPSB0Y2xhc3NlczsKKwkJbmV3YXNzZXJ0LT5pbmhlcml0 ID0gaW5oZXJpdDsKIAkJbmV3YXNzZXJ0LT5zZWxmID0gc2VsZjsKIAkJbmV3YXNzZXJ0LT5h dnAgPSBhdnA7CiAJCW5ld2Fzc2VydC0+bGluZSA9IHBvbGljeWRiX2xpbmVubzsKQEAgLTI3 MzUsOCArMjc4NiwyNiBAQCBzdGF0aWMgaW50IGRlZmluZV90ZV9hdnRhYihpbnQgd2hpY2gp CiAJCWlmICghZWJpdG1hcF9nZXRfYml0KCZzdHlwZXMsIGkpKSAKIAkJCWNvbnRpbnVlOwog CQlpZiAoc2VsZikgewotCQkJaWYgKHRlX2F2dGFiX2hlbHBlcih3aGljaCwgaSwgaSwgJnRj bGFzc2VzLCBhdnApKQorCQkJdHlwZWRhdHVtID0gZ2V0X3R5cGUoaSsxKTsKKwkJCWlmICgh dHlwZWRhdHVtKQogCQkJCXJldHVybiAtMTsKKwkJCWViaXRtYXBfaW5pdCgmdGVtcCk7CisJ CQkvKiBJZiB0aGUgc291cmNlIHR5cGUgaXMgZ2l2ZW4gd2l0aCAnQCcgcHJlZml4LAorCQkJ ICAgJ3NlbGYnIG1lYW5zIG93biBjaGlsZCB0eXBlcy4gKi8KKwkJCWdldF9jaGlsZF90eXBl cygmdGVtcCwgdHlwZWRhdHVtLCBlYml0bWFwX2dldF9iaXQoJmluaGVyaXQsIGkpKTsKKwkJ CWZvciAoaiA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBqIDwgZWJpdG1hcF9sZW5ndGgo JnRlbXApOyBqKyspIHsKKwkJCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdGVtcCwgaikpCisJ CQkJCWNvbnRpbnVlOworCQkJCWZvciAoayA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBr IDwgZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBrKyspIHsKKwkJCQkJaWYgKCFlYml0bWFwX2dl dF9iaXQoJnRlbXAsIGspKQorCQkJCQkJY29udGludWU7CisJCQkJCWlmICh0ZV9hdnRhYl9o ZWxwZXIod2hpY2gsIGosIGssICZ0Y2xhc3NlcywgYXZwKSkgeworCQkJCQkJZWJpdG1hcF9k ZXN0cm95KCZ0ZW1wKTsKKwkJCQkJCXJldHVybiAtMTsKKwkJCQkJfQorCQkJCX0KKwkJCX0K KwkJCWViaXRtYXBfZGVzdHJveSgmdGVtcCk7CiAJCX0KIAkJZm9yIChqID0gZWJpdG1hcF9z dGFydGJpdCgmdHR5cGVzKTsgaiA8IGViaXRtYXBfbGVuZ3RoKCZ0dHlwZXMpOyBqKyspIHsK IAkJCWlmICghZWJpdG1hcF9nZXRfYml0KCZ0dHlwZXMsIGopKSAKQEAgLTI4MjcsNyArMjg5 Niw3IEBAIHN0YXRpYyBpbnQgZGVmaW5lX3JvbGVfdHlwZXModm9pZCkKIAogCWViaXRtYXBf aW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkp IHsKLQkJaWYgKHNldF90eXBlcygmcm9sZS0+dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkK KwkJaWYgKHNldF90eXBlcygmcm9sZS0+dHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRk KSkKIAkJCXJldHVybiAtMTsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwpAQCAt MzA0Miw3ICszMTExLDcgQEAgc3RhdGljIGludCBkZWZpbmVfcm9sZV90cmFucyh2b2lkKQog CiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwogCXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1vdmUo aWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5cGVzKCZ0eXBlcywgJm5lZ3NldCwgaWQsICZh ZGQpKQorCQlpZiAoc2V0X3R5cGVzKCZ0eXBlcywgJm5lZ3NldCwgTlVMTCwgaWQsICZhZGQp KQogCQkJcmV0dXJuIC0xOwogCX0KIAllYml0bWFwX2Rlc3Ryb3koJm5lZ3NldCk7CkBAIC0z NDY3LDcgKzM1MzYsNyBAQCBzdGF0aWMgdWludHB0cl90CiAJCQkJfQogCQkJCXZhbCA9IHJv bGUtPnZhbHVlOwogCQkJfSBlbHNlIGlmIChleHByLT5hdHRyICYgQ0VYUFJfVFlQRSkgewot CQkJCWlmIChzZXRfdHlwZXMoJmV4cHItPm5hbWVzLCAmbmVnc2V0LCBpZCwgJmFkZCkpIHsK KwkJCQlpZiAoc2V0X3R5cGVzKCZleHByLT5uYW1lcywgJm5lZ3NldCwgTlVMTCwgaWQsICZh ZGQpKSB7CiAJCQkJCWZyZWUoZXhwcik7CiAJCQkJCXJldHVybiAwOwogCQkJCX0KQEAgLTQ5 MDMsMTQgKzQ5NzIsMTQgQEAgc3RhdGljIGludCBkZWZpbmVfcmFuZ2VfdHJhbnModm9pZCkK IAogCWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3Zl KGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygmZG9tcywgJm5lZ3NldCwgaWQsICZh ZGQpKQorCQlpZiAoc2V0X3R5cGVzKCZkb21zLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkp CiAJCQlyZXR1cm4gLTE7CiAJfQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKIAogCWVi aXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1 ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygmdHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkK KwkJaWYgKHNldF90eXBlcygmdHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRkKSkKIAkJ CXJldHVybiAtMTsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwo= --------------040507070209010604080408-- -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with the words "unsubscribe selinux" without quotes as the message.