From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <42412635.4030108@ak.jp.nec.com> Date: Wed, 23 Mar 2005 17:17:57 +0900 From: Kaigai Kohei MIME-Version: 1.0 To: Stephen Smalley Cc: 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> <423E9CFF.3080808@kaigai.gr.jp> <1111420782.13101.16.camel@moss-spartans.epoch.ncsc.mil> In-Reply-To: <1111420782.13101.16.camel@moss-spartans.epoch.ncsc.mil> Content-Type: multipart/mixed; boundary="------------070305060305010206040005" Sender: owner-selinux@tycho.nsa.gov List-Id: selinux@tycho.nsa.gov This is a multi-part message in MIME format. --------------070305060305010206040005 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi, The attached (3rd) patch implements TYPEEXTENDS statement in addition to the latest patch. Because TYPE ... EXTENDS statements can not handle forwarding loopup, TYPEEXTENDS statement is necessary to represent inheritance-relationship not to depend on the definition placement. TYPEEXTENDS EXTENDS , , ... ; (*) and must have been defined. This is almost the same as TYPEATTRIBUTE. > Thanks for this revised patch. I think at this point we need some > concrete examples of how this new language extension can be applied to > solve real problems in a manner that is superior to the use of macros > (or alternatively, if the language supported them, templates of some > kind). That will help us determine whether this language extension is > justified. I tried to modify the Fedora-C3's strict policy for quick testing, and represent a unified file type of HTTPd/Samba/FTPd. I intend to access /var/www/ftp via HTTP and FTP, /var/www/samba via HTTP and Samba. The following configuration was necessary for this purpose. BTW, since any macros (such as apache) were so complex for me, the following configuration may be insufficiency in a precise sense. But it's easily understandable as a configuration sample for real application, I think. Thanks, o samba.te was modified as follows: --- policy.orig/domains/program/samba.te 2005-03-23 03:52:39.000000000 -0500 +++ policy.kaigai/domains/program/samba.te 2005-03-23 04:04:45.000000000 -0500 @@ -75,6 +75,8 @@ # Access Samba shares. -allow smbd_t samba_share_t:dir create_dir_perms; -allow smbd_t samba_share_t:file create_file_perms; +attribute samba_share_path; +allow smbd_t samba_share_path:dir {getattr search}; +allow smbd_t @samba_share_t:dir create_dir_perms; +allow smbd_t @samba_share_t:file create_file_perms; ifdef(`logrotate.te', ` o apache_macros.te was modified as follows: --- policy.orig/macros/program/apache_macros.te 2005-03-23 03:52:39.000000000 -0500 +++ policy.kaigai/macros/program/apache_macros.te 2005-03-23 03:39:57.000000000 -0500 @@ -172,9 +172,9 @@ # Allow the web server to run scripts and serve pages ############################################################## -r_dir_file(httpd_t, httpd_$1_content_t) +r_dir_file(httpd_t, @httpd_$1_content_t) -allow httpd_t httpd_$1_htaccess_t: file r_file_perms; +allow httpd_t @httpd_$1_htaccess_t: file r_file_perms; -r_dir_file(httpd_t, httpd_$1_script_rw_t) +r_dir_file(httpd_t, @httpd_$1_script_rw_t) ############################################ o ftpd.te was modified as follows: --- policy.orig/domains/program/ftpd.te 2005-03-23 03:52:38.000000000 -0500 +++ policy.kaigai/domains/program/ftpd.te 2005-03-23 04:03:11.000000000 -0500 @@ -105,2 +105,9 @@ ')dnl end if nfs_home_dirs dontaudit ftpd_t selinux_config_t:dir { search }; + +attribute ftp_content_path; +type ftp_content_t alias ftpd_anon_t extends ftp_content_path; +allow ftpd_t @ftp_content_path:dir {getattr search}; +r_dir_file(ftpd_t, @ftp_content_t); +file_type_auto_trans(ftpd_t, @ftp_content_t, ftp_content_t) + o And, private additional configuration is as follows: --- /dev/null 2005-03-22 18:46:01.562514976 -0500 +++ policy.kaigai/inaddition.te 2005-03-23 04:06:49.576548144 -0500 @@ -0,0 +1,7 @@ +# necessity for access path +typeattribute var_t ftp_content_path, samba_share_path; +typeattribute httpd_sys_content_t ftp_content_path, samba_share_path; +# definition of unified file type +type httpd_ftp_t extends httpd_sys_content_t, ftp_content_t; +type httpd_samba_t extends httpd_sys_content_t, samba_share_t; o File labeling /var system_u:object_r:var_t /var/www system_u:object_r:httpd_sys_content_t /var/www/ftp system_u:object_r:httpd_ftp_t /var/www/ftp/index.html system_u:object_r:httpd_ftp_t /var/www/samba system_u:object_r:httpd_samba_t /var/www/samba/index.html system_u:object_r:httpd_samba_t -- Linux Promotion Center, NEC KaiGai Kohei --------------070305060305010206040005 Content-Type: text/plain; name="checkpolicy-1.22-type_extends.3rd.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="checkpolicy-1.22-type_extends.3rd.patch" LS0tIGNoZWNrcG9saWN5LTEuMjIvY2hlY2twb2xpY3kuaAkyMDA1LTAxLTI3IDA0OjE2OjIw LjAwMDAwMDAwMCArMDkwMAorKysgY2hlY2twb2xpY3ktMS4yMi5leHRlbmRzLjNyZC9jaGVj a3BvbGljeS5oCTIwMDUtMDMtMjMgMDg6MzE6MDMuMDAwMDAwMDAwICswOTAwCkBAIC03LDYg KzcsNyBAQCB0eXBlZGVmIHN0cnVjdCB0ZV9hc3NlcnQgeyAKIAllYml0bWFwX3Qgc3R5cGVz OwogCWViaXRtYXBfdCB0dHlwZXM7CiAJZWJpdG1hcF90IHRjbGFzc2VzOworCWViaXRtYXBf dCBpbmhlcml0OwogICAgICAgICBpbnQgc2VsZjsKIAlhY2Nlc3NfdmVjdG9yX3QgKmF2cDsK IAl1bnNpZ25lZCBsb25nIGxpbmU7CkBAIC0xOCw0ICsxOSwxNiBAQCB0ZV9hc3NlcnRfdCAq dGVfYXNzZXJ0aW9uczsKIGV4dGVybiB1bnNpZ25lZCBpbnQgcG9saWN5dmVyczsKIGV4dGVy biB1bnNpZ25lZCBpbnQgbWxzcG9sOwogCisvKiB0eXBlIHdhcyBub3QgaW5kZXhlZCBpbiBw b2xpY3lkYiwKKyAgIGJ1dCBpdCdzIG5lY2Vzc2FyeSBmb3IgZXh0ZW5kcyBzdXBwb3J0LiAq LworZXh0ZXJuIHR5cGVfZGF0dW1fdCAqKnR5cGVfdmFsX3RvX3N0cnVjdDsKK2V4dGVybiBp bnQgbnVtX3R5cGVfdmFsX3RvX3N0cnVjdDsKK2V4dGVybiB2b2lkIGdldF9jaGlsZF90eXBl cyhlYml0bWFwX3QgKnNldCwgdHlwZV9kYXR1bV90ICp0LCBpbnQgcmVjdXJzaXZlKTsKKwor c3RhdGljIGlubGluZSB0eXBlX2RhdHVtX3QgKmdldF90eXBlKGludCB0eXBldmFsKSB7CisJ aWYgKCF0eXBlX3ZhbF90b19zdHJ1Y3QgfHwgdHlwZXZhbDwxIHx8IHR5cGV2YWw+bnVtX3R5 cGVfdmFsX3RvX3N0cnVjdCkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIHR5cGVfdmFsX3Rv X3N0cnVjdFt0eXBldmFsLTFdOworfQorCiAjZW5kaWYKLS0tIGNoZWNrcG9saWN5LTEuMjIv Y2hlY2twb2xpY3kuYwkyMDA1LTAxLTI3IDA0OjE2OjIwLjAwMDAwMDAwMCArMDkwMAorKysg Y2hlY2twb2xpY3ktMS4yMi5leHRlbmRzLjNyZC9jaGVja3BvbGljeS5jCTIwMDUtMDMtMjMg MDg6MzE6MDMuMDAwMDAwMDAwICswOTAwCkBAIC0zNDQsOCArMzQ0LDEwIEBAIHZvaWQgY2hl 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 MDUtMDItMTcgMjM6NTk6MjMuMDAwMDAwMDAwICswOTAwCisrKyBjaGVja3BvbGljeS0xLjIy LmV4dGVuZHMuM3JkL3BvbGljeV9zY2FuLmwJMjAwNS0wMy0yMyAwODozMTo0Ny4wMDAwMDAw MDAgKzA5MDAKQEAgLTY4LDYgKzY4LDggQEAgVFlQRUFMSUFTIHwKIHR5cGVhbGlhcwkJCXsg cmV0dXJuKFRZUEVBTElBUyk7IH0KIFRZUEVBVFRSSUJVVEUgfAogdHlwZWF0dHJpYnV0ZQkJ CXsgcmV0dXJuKFRZUEVBVFRSSUJVVEUpOyB9CitUWVBFRVhURU5EUyB8Cit0eXBlZXh0ZW5k cwkJCXsgcmV0dXJuKFRZUEVFWFRFTkRTKTsgfQogVFlQRSB8CiB0eXBlCQkJCXsgcmV0dXJu KFRZUEUpOyB9CiBCT09MIHwKQEAgLTc4LDYgKzgwLDggQEAgRUxTRSB8CiBlbHNlCQkJCXsg cmV0dXJuKEVMU0UpOyB9CiBBTElBUyB8CiBhbGlhcwkJCQl7IHJldHVybihBTElBUyk7IH0K K0VYVEVORFMgfAorZXh0ZW5kcwkJCQl7IHJldHVybihFWFRFTkRTKTsgfQogQVRUUklCVVRF IHwKIGF0dHJpYnV0ZQkJCXsgcmV0dXJuKEFUVFJJQlVURSk7IH0KIFRZUEVfVFJBTlNJVElP TiB8CkBAIC0yMTEsNyArMjE1LDggQEAgSDIJCQkJeyByZXR1cm4oSDIpOyB9CiAiLiIgfAog Il0iIHwKICJ+IiB8Ci0iKiIJCQkJeyByZXR1cm4oeXl0ZXh0WzBdKTsgfSAKKyIqIiB8Cisi QCIJCQkJeyByZXR1cm4oeXl0ZXh0WzBdKTsgfSAKIC4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB5eXdhcm4oInVucmVjb2duaXplZCBjaGFyYWN0ZXIiKTt9CiAlJQogaW50 IHl5ZXJyb3IoY2hhciAqbXNnKQotLS0gY2hlY2twb2xpY3ktMS4yMi9wb2xpY3lfcGFyc2Uu eQkyMDA1LTAyLTE3IDIzOjU5OjIzLjAwMDAwMDAwMCArMDkwMAorKysgY2hlY2twb2xpY3kt MS4yMi5leHRlbmRzLjNyZC9wb2xpY3lfcGFyc2UueQkyMDA1LTAzLTIzIDA5OjExOjQyLjAw MDAwMDAwMCArMDkwMApAQCAtMTksNiArMTksMTEgQEAKICAqCXRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIHZlcnNpb24gMi4KICAqLwogCisvKiBVcGRhdGVkOiBLYWlHYWkgS29o ZWksIDxrYWlnYWlAYWsuanAubmVjLmNvbT4KKyAqICAgICAgQWRkZWQgaW5oZXJpdGVkIHR5 cGUgZXh0ZW5zaW9ucyBhbmQgJ0AnIHByZWZpeC4gKDIwMDUvMDMvMjEpCisgKi8KKworCiAv KiBGTEFTSyAqLwogCiAlewpAQCAtNzIsOCArNzcsOCBAQCBzdGF0aWMgaW50IGRlZmluZV9j YXRlZ29yeSh2b2lkKTsKIHN0YXRpYyBpbnQgZGVmaW5lX2xldmVsKGludCByYW5nZSk7CiBz dGF0aWMgaW50IGRlZmluZV9hdHRyaWIodm9pZCk7CiBzdGF0aWMgaW50IGRlZmluZV90eXBl YWxpYXModm9pZCk7Ci1zdGF0aWMgaW50IGRlZmluZV90eXBlYXR0cmlidXRlKHZvaWQpOwot c3RhdGljIGludCBkZWZpbmVfdHlwZShpbnQgYWxpYXMpOworc3RhdGljIGludCBkZWZpbmVf dHlwZWF0dHJpYnV0ZShpbnQgZXh0ZW5kcyk7CitzdGF0aWMgaW50IGRlZmluZV90eXBlKGlu dCBhbGlhcywgaW50IGV4dGVuZHMpOwogc3RhdGljIGludCBkZWZpbmVfY29tcHV0ZV90eXBl KGludCB3aGljaCk7CiBzdGF0aWMgaW50IGRlZmluZV90ZV9hdnRhYihpbnQgd2hpY2gpOwog c3RhdGljIGludCBkZWZpbmVfcm9sZV90eXBlcyh2b2lkKTsKQEAgLTEzMCw5ICsxMzUsMTEg QEAgc3RhdGljIGludCBkZWZpbmVfaXB2Nl9ub2RlX2NvbnRleHQodm9pZAogJXRva2VuIFJP TEVTCiAldG9rZW4gVFlQRUFMSUFTCiAldG9rZW4gVFlQRUFUVFJJQlVURQorJXRva2VuIFRZ UEVFWFRFTkRTCiAldG9rZW4gVFlQRQogJXRva2VuIFRZUEVTCiAldG9rZW4gQUxJQVMKKyV0 b2tlbiBFWFRFTkRTCiAldG9rZW4gQVRUUklCVVRFCiAldG9rZW4gQk9PTAogJXRva2VuIElG CkBAIC0yODcsNiArMjk0LDcgQEAgdGVfZGVjbAkJCTogYXR0cmlidXRlX2RlZgogICAgICAg ICAgICAgICAgICAgICAgICAgfCB0eXBlX2RlZgogICAgICAgICAgICAgICAgICAgICAgICAg fCB0eXBlYWxpYXNfZGVmCiAgICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGVhdHRyaWJ1 dGVfZGVmCisJCQl8IHR5cGVleHRlbmRzX2RlZgogICAgICAgICAgICAgICAgICAgICAgICAg fCBib29sX2RlZgogICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2l0aW9uX2RlZgog ICAgICAgICAgICAgICAgICAgICAgICAgfCByYW5nZV90cmFuc19kZWYKQEAgLTI5NywxOSAr MzA1LDI4IEBAIGF0dHJpYnV0ZV9kZWYgICAgICAgICAgIDogQVRUUklCVVRFIGlkZW4KICAg ICAgICAgICAgICAgICAgICAgICAgIHsgaWYgKGRlZmluZV9hdHRyaWIoKSkgcmV0dXJuIC0x O30KICAgICAgICAgICAgICAgICAgICAgICAgIDsKIHR5cGVfZGVmCQk6IFRZUEUgaWRlbnRp ZmllciBhbGlhc19kZWYgb3B0X2F0dHJfbGlzdCAnOycKLSAgICAgICAgICAgICAgICAgICAg ICAgIHtpZiAoZGVmaW5lX3R5cGUoMSkpIHJldHVybiAtMTt9CisgICAgICAgICAgICAgICAg ICAgICAgICB7aWYgKGRlZmluZV90eXBlKDEsIDApKSByZXR1cm4gLTE7fQogCSAgICAgICAg ICAgICAgICB8IFRZUEUgaWRlbnRpZmllciBvcHRfYXR0cl9saXN0ICc7JwotICAgICAgICAg ICAgICAgICAgICAgICAge2lmIChkZWZpbmVfdHlwZSgwKSkgcmV0dXJuIC0xO30KKyAgICAg ICAgICAgICAgICAgICAgICAgIHtpZiAoZGVmaW5lX3R5cGUoMCwgMCkpIHJldHVybiAtMTt9 CisJCQl8IFRZUEUgaWRlbnRpZmllciBhbGlhc19kZWYgb3B0X2V4dGVuZHNfbGlzdCAnOycK KwkJCXtpZiAoZGVmaW5lX3R5cGUoMSwgMSkpIHJldHVybiAtMTt9CisJCQl8IFRZUEUgaWRl bnRpZmllciBvcHRfZXh0ZW5kc19saXN0ICc7JworCQkJe2lmIChkZWZpbmVfdHlwZSgwLCAx KSkgcmV0dXJuIC0xO30KICAgICAJCQk7CiB0eXBlYWxpYXNfZGVmICAgICAgICAgICA6IFRZ UEVBTElBUyBpZGVudGlmaWVyIGFsaWFzX2RlZiAnOycKIAkJCXtpZiAoZGVmaW5lX3R5cGVh bGlhcygpKSByZXR1cm4gLTE7fQogCQkJOwogdHlwZWF0dHJpYnV0ZV9kZWYJOiBUWVBFQVRU UklCVVRFIGlkZW50aWZpZXIgaWRfY29tbWFfbGlzdCAnOycKLQkJCXtpZiAoZGVmaW5lX3R5 cGVhdHRyaWJ1dGUoKSkgcmV0dXJuIC0xO30KKwkJCXtpZiAoZGVmaW5lX3R5cGVhdHRyaWJ1 dGUoMCkpIHJldHVybiAtMTt9CisJCQk7Cit0eXBlZXh0ZW5kc19kZWYJCTogVFlQRUVYVEVO RFMgaWRlbnRpZmllciBFWFRFTkRTIGlkX2NvbW1hX2xpc3QgJzsnCisJCQl7aWYgKGRlZmlu ZV90eXBlYXR0cmlidXRlKDEpKSByZXR1cm4gLTE7fQogCQkJOwogb3B0X2F0dHJfbGlzdCAg ICAgICAgICAgOiAnLCcgaWRfY29tbWFfbGlzdAogCQkJfCAKIAkJCTsKK29wdF9leHRlbmRz X2xpc3QJOiBFWFRFTkRTIGlkX2NvbW1hX2xpc3QKKwkJCTsKIGJvb2xfZGVmICAgICAgICAg ICAgICAgIDogQk9PTCBpZGVudGlmaWVyIGJvb2xfdmFsICc7JwogICAgICAgICAgICAgICAg ICAgICAgICAge2lmIChkZWZpbmVfYm9vbCgpKSByZXR1cm4gLTE7fQogICAgICAgICAgICAg ICAgICAgICAgICAgOwpAQCAtNTExLDEzICs1MjgsMTMgQEAgY2V4cHJfcHJpbQkJOiBVMSBv cCBVMgogCQkJfCBSMyBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1cm4gLTE7 IH0gbmFtZXNfcHVzaAogCQkJeyAkJCA9IGRlZmluZV9jZXhwcihDRVhQUl9OQU1FUywgKENF WFBSX1JPTEUgfCBDRVhQUl9YVEFSR0VUKSwgJDIpOwogCQkJICBpZiAoJCQgPT0gMCkgcmV0 dXJuIC0xOyB9Ci0JCQl8IFQxIG9wIHsgaWYgKGluc2VydF9zZXBhcmF0b3IoMSkpIHJldHVy biAtMTsgfSBuYW1lc19wdXNoCisJCQl8IFQxIG9wIHsgaWYgKGluc2VydF9zZXBhcmF0b3Io MSkpIHJldHVybiAtMTsgfSB0eXBlX25hbWVzX3B1c2gKIAkJCXsgJCQgPSBkZWZpbmVfY2V4 cHIoQ0VYUFJfTkFNRVMsIENFWFBSX1RZUEUsICQyKTsKIAkJCSAgaWYgKCQkID09IDApIHJl dHVybiAtMTsgfQotCQkJfCBUMiBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1 cm4gLTE7IH0gbmFtZXNfcHVzaAorCQkJfCBUMiBvcCB7IGlmIChpbnNlcnRfc2VwYXJhdG9y KDEpKSByZXR1cm4gLTE7IH0gdHlwZV9uYW1lc19wdXNoCiAJCQl7ICQkID0gZGVmaW5lX2Nl eHByKENFWFBSX05BTUVTLCAoQ0VYUFJfVFlQRSB8IENFWFBSX1RBUkdFVCksICQyKTsKIAkJ CSAgaWYgKCQkID09IDApIHJldHVybiAtMTsgfQotCQkJfCBUMyBvcCB7IGlmIChpbnNlcnRf c2VwYXJhdG9yKDEpKSByZXR1cm4gLTE7IH0gbmFtZXNfcHVzaAorCQkJfCBUMyBvcCB7IGlm IChpbnNlcnRfc2VwYXJhdG9yKDEpKSByZXR1cm4gLTE7IH0gdHlwZV9uYW1lc19wdXNoCiAJ CQl7ICQkID0gZGVmaW5lX2NleHByKENFWFBSX05BTUVTLCAoQ0VYUFJfVFlQRSB8IENFWFBS X1hUQVJHRVQpLCAkMik7CiAJCQkgIGlmICgkJCA9PSAwKSByZXR1cm4gLTE7IH0KIAkJCXwg U0FNRVVTRVIKQEAgLTUzMiwxMCArNTQ5LDEwIEBAIGNleHByX3ByaW0JCTogVTEgb3AgVTIK IAkJCXwgUk9MRSByb2xlX21sc19vcAogCQkJeyAkJCA9IGRlZmluZV9jZXhwcihDRVhQUl9B VFRSLCBDRVhQUl9ST0xFLCAkMik7CiAJCQkgIGlmICgkJCA9PSAwKSByZXR1cm4gLTE7IH0K LQkJCXwgU09VUkNFIFRZUEUgeyBpZiAoaW5zZXJ0X3NlcGFyYXRvcigxKSkgcmV0dXJuIC0x OyB9IG5hbWVzX3B1c2gKKwkJCXwgU09VUkNFIFRZUEUgeyBpZiAoaW5zZXJ0X3NlcGFyYXRv cigxKSkgcmV0dXJuIC0xOyB9IHR5cGVfbmFtZXNfcHVzaAogCQkJeyAkJCA9IGRlZmluZV9j ZXhwcihDRVhQUl9OQU1FUywgQ0VYUFJfVFlQRSwgQ0VYUFJfRVEpOwogCQkJICBpZiAoJCQg PT0gMCkgcmV0dXJuIC0xOyB9Ci0JCQl8IFRBUkdFVCBUWVBFIHsgaWYgKGluc2VydF9zZXBh cmF0b3IoMSkpIHJldHVybiAtMTsgfSBuYW1lc19wdXNoCisJCQl8IFRBUkdFVCBUWVBFIHsg aWYgKGluc2VydF9zZXBhcmF0b3IoMSkpIHJldHVybiAtMTsgfSB0eXBlX25hbWVzX3B1c2gK IAkJCXsgJCQgPSBkZWZpbmVfY2V4cHIoQ0VYUFJfTkFNRVMsIChDRVhQUl9UWVBFIHwgQ0VY UFJfVEFSR0VUKSwgQ0VYUFJfRVEpOwogCQkJICBpZiAoJCQgPT0gMCkgcmV0dXJuIC0xOyB9 CiAJCQl8IEwxIHJvbGVfbWxzX29wIEwyCkBAIC02OTUsMjAgKzcxMiwyNyBAQCB0aWxkZQkJ CTogJ34nCiAJCQk7CiBhc3RlcmlzawkJOiAnKicKIAkJCTsKLW5hbWVzICAgICAgICAgICAJ OiBpZGVudGlmaWVyCithdG1hcmsJCQk6ICdAJworCQkJOwordHlwZV9pZGVudGlmaWVyCQk6 IElERU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCh5eXRleHQsIDApKSByZXR1cm4gLTE7 IH0KKwkJCXwgYXRtYXJrIElERU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCgiQCIsIDAp IHx8IGluc2VydF9pZCh5eXRleHQsIDApKSByZXR1cm4gLTE7IH0KKwkJCTsKK25hbWVzICAg ICAgICAgICAJOiB0eXBlX2lkZW50aWZpZXIKIAkJCXsgaWYgKGluc2VydF9zZXBhcmF0b3Io MCkpIHJldHVybiAtMTsgfQogCQkJfCBuZXN0ZWRfaWRfc2V0CiAJCQl7IGlmIChpbnNlcnRf c2VwYXJhdG9yKDApKSByZXR1cm4gLTE7IH0KIAkJCXwgYXN0ZXJpc2sKICAgICAgICAgICAg ICAgICAgICAgICAgIHsgaWYgKGluc2VydF9pZCgiKiIsIDApKSByZXR1cm4gLTE7IAogCQkJ ICBpZiAoaW5zZXJ0X3NlcGFyYXRvcigwKSkgcmV0dXJuIC0xOyB9Ci0JCQl8IHRpbGRlIGlk ZW50aWZpZXIKKwkJCXwgdGlsZGUgdHlwZV9pZGVudGlmaWVyCiAgICAgICAgICAgICAgICAg ICAgICAgICB7IGlmIChpbnNlcnRfaWQoIn4iLCAwKSkgcmV0dXJuIC0xOwogCQkJICBpZiAo aW5zZXJ0X3NlcGFyYXRvcigwKSkgcmV0dXJuIC0xOyB9CiAJCQl8IHRpbGRlIG5lc3RlZF9p ZF9zZXQKLQkgCQl7IGlmIChpbnNlcnRfaWQoIn4iLCAwKSkgcmV0dXJuIC0xOyAKKwkJCXsg aWYgKGluc2VydF9pZCgifiIsIDApKSByZXR1cm4gLTE7CiAJCQkgIGlmIChpbnNlcnRfc2Vw YXJhdG9yKDApKSByZXR1cm4gLTE7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHwgaWRl bnRpZmllciAnLScgeyBpZiAoaW5zZXJ0X2lkKCItIiwgMCkpIHJldHVybiAtMTsgfSBpZGVu dGlmaWVyIAorCQkJfCB0eXBlX2lkZW50aWZpZXIgJy0nIHsgaWYgKGluc2VydF9pZCgiLSIs IDApKSByZXR1cm4gLTE7IH0gdHlwZV9pZGVudGlmaWVyIAogCQkJeyBpZiAoaW5zZXJ0X3Nl cGFyYXRvcigwKSkgcmV0dXJuIC0xOyB9CiAJCQk7CiB0aWxkZV9wdXNoICAgICAgICAgICAg ICA6IHRpbGRlCkBAIC03MTcsNiArNzQxLDE5IEBAIHRpbGRlX3B1c2ggICAgICAgICAgICAg IDogdGlsZGUKIGFzdGVyaXNrX3B1c2ggICAgICAgICAgIDogYXN0ZXJpc2sKICAgICAgICAg ICAgICAgICAgICAgICAgIHsgaWYgKGluc2VydF9pZCgiKiIsIDEpKSByZXR1cm4gLTE7IH0K IAkJCTsKK3R5cGVfbmFtZXNfcHVzaAkJOiB0eXBlX2lkZW50aWZpZXJfcHVzaAorCQkJfCAn eycgdHlwZV9pZGVudGlmaWVyX2xpc3RfcHVzaCAnfScKKwkJCXwgdGlsZGVfcHVzaCB0eXBl X2lkZW50aWZpZXJfcHVzaAorCQkJfCB0aWxkZV9wdXNoICd7JyB0eXBlX2lkZW50aWZpZXJf bGlzdF9wdXNoICd9JworCQkJOwordHlwZV9pZGVudGlmaWVyX2xpc3RfcHVzaAk6IHR5cGVf aWRlbnRpZmllcl9wdXNoCisJCQkJfCB0eXBlX2lkZW50aWZpZXJfbGlzdF9wdXNoIHR5cGVf aWRlbnRpZmllcl9wdXNoCisJCQkJOwordHlwZV9pZGVudGlmaWVyX3B1c2gJOiBJREVOVElG SUVSCisJCQl7IGlmIChpbnNlcnRfaWQoeXl0ZXh0LDEpKSByZXR1cm4gLTE7IH0KKwkJCXwg YXRtYXJrIElERU5USUZJRVIKKwkJCXsgaWYgKGluc2VydF9pZCh5eXRleHQsMSl8fGluc2Vy dF9pZCgiQCIsMSkpIHJldHVybiAtMTt9CisJCQk7CiBuYW1lc19wdXNoCQk6IGlkZW50aWZp ZXJfcHVzaAogCQkJfCAneycgaWRlbnRpZmllcl9saXN0X3B1c2ggJ30nCiAJCQl8IGFzdGVy aXNrX3B1c2gKQEAgLTczNiw3ICs3NzMsOSBAQCBuZXN0ZWRfaWRfc2V0ICAgICAgICAgICA6 ICd7JyBuZXN0ZWRfaWRfCiAgICAgICAgICAgICAgICAgICAgICAgICA7CiBuZXN0ZWRfaWRf bGlzdCAgICAgICAgICA6IG5lc3RlZF9pZF9lbGVtZW50IHwgbmVzdGVkX2lkX2xpc3QgbmVz dGVkX2lkX2VsZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgIDsKLW5lc3RlZF9pZF9l bGVtZW50ICAgICAgIDogaWRlbnRpZmllciB8ICctJyB7IGlmIChpbnNlcnRfaWQoIi0iLCAw KSkgcmV0dXJuIC0xOyB9IGlkZW50aWZpZXIgfCBuZXN0ZWRfaWRfc2V0CituZXN0ZWRfaWRf ZWxlbWVudCAgICAgICA6IHR5cGVfaWRlbnRpZmllcgorCQkJfCAnLScgeyBpZiAoaW5zZXJ0 X2lkKCItIiwgMCkpIHJldHVybiAtMTsgfSB0eXBlX2lkZW50aWZpZXIKKwkJCXwgbmVzdGVk X2lkX3NldAogICAgICAgICAgICAgICAgICAgICAgICAgOwogaWRlbnRpZmllcgkJOiBJREVO VElGSUVSCiAJCQl7IGlmIChpbnNlcnRfaWQoeXl0ZXh0LDApKSByZXR1cm4gLTE7IH0KQEAg LTE1NDMsMTAgKzE1ODIsMzUgQEAgc3RhdGljIGludCBkZWZpbmVfdHlwZWFsaWFzKHZvaWQp CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZGVmaW5lX3R5cGVhdHRyaWJ1dGUodm9p ZCkKK3N0YXRpYyBpbnQgY2hlY2tfbG9vcF9pbmhlcml0YW5jZSh0eXBlX2RhdHVtX3QgKnRk LCBpbnQgcGFyZW50X3R5cGV2YWwpCit7CisJdHlwZV9kYXR1bV90ICpjaGlsZDsKKwlpbnQg aTsKKworCS8qIGF0dHJpYnV0ZSBuZXZlciBoYXZlIGluaGVyaXRhbmNlIGxvb3AgKi8KKwlp ZiAodGQtPmlzYXR0cikKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGkgPSBlYml0bWFwX3N0YXJ0 Yml0KCZ0ZC0+dHlwZXMpOyBpIDwgZWJpdG1hcF9sZW5ndGgoJnRkLT50eXBlcyk7IGkrKykg eworCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdGQtPnR5cGVzLCBpKSkKKwkJCWNvbnRpbnVl OworCQlpZiAoIHBhcmVudF90eXBldmFsIC0gMSA9PSBpICkKKwkJCXJldHVybiAtMTsgLyog TG9vcCBpbmhlcml0YW5jZSBkZXRlY3RlZCAqLworCQljaGlsZCA9IGdldF90eXBlKGkrMSk7 CisJCWlmICghY2hpbGQpIHsKKwkJCXl5ZXJyb3IoIkJVRzogdW5yZWdpc3RlcmVkIHR5cGUi KTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlpZiAoY2hlY2tfbG9vcF9pbmhlcml0YW5jZShj aGlsZCwgcGFyZW50X3R5cGV2YWwpKQorCQkJcmV0dXJuIC0xOworCX0KKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBkZWZpbmVfdHlwZWF0dHJpYnV0ZShpbnQgZXh0ZW5kcykKIHsK IAljaGFyICppZDsKLQl0eXBlX2RhdHVtX3QgKnQsICphdHRyOworCXR5cGVfZGF0dW1fdCAq dCwgKmluaGVyaXQ7CiAKIAlpZiAocGFzcyA9PSAyKSB7CiAJCXdoaWxlICgoaWQgPSBxdWV1 ZV9yZW1vdmUoaWRfcXVldWUpKSkKQEAgLTE1NjksMTYgKzE2MzMsMTcgQEAgc3RhdGljIGlu dCBkZWZpbmVfdHlwZWF0dHJpYnV0ZSh2b2lkKQogCX0KIAogCXdoaWxlICgoaWQgPSBxdWV1 ZV9yZW1vdmUoaWRfcXVldWUpKSkgewotCQlhdHRyID0gaGFzaHRhYl9zZWFyY2gocG9saWN5 ZGJwLT5wX3R5cGVzLnRhYmxlLCBpZCk7Ci0JCWlmICghYXR0cikgewotCQkJc3ByaW50Zihl cnJvcm1zZywgImF0dHJpYnV0ZSAlcyBpcyBub3QgZGVjbGFyZWQiLCBpZCk7CisJCWluaGVy aXQgPSBoYXNodGFiX3NlYXJjaChwb2xpY3lkYnAtPnBfdHlwZXMudGFibGUsIGlkKTsKKwkJ aWYgKCFpbmhlcml0KSB7CisJCQlzcHJpbnRmKGVycm9ybXNnLCAiJXNhdHRyaWJ1dGUgJXMg aXMgbm90IGRlY2xhcmVkIiwKKwkJCQkoZXh0ZW5kcyA/ICJ0eXBlLyIgOiAiIiksIGlkKTsK IAkJCS8qIHRyZWF0IGl0IGFzIGEgZmF0YWwgZXJyb3IgKi8KIAkJCXl5ZXJyb3IoZXJyb3Jt c2cpOwogCQkJZnJlZShpZCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAotCQlpZiAoIWF0dHIt PmlzYXR0cikgeworCQlpZiAoIWV4dGVuZHMgJiYgIWluaGVyaXQtPmlzYXR0cikgewogCQkJ c3ByaW50ZihlcnJvcm1zZywgIiVzIGlzIGEgdHlwZSwgbm90IGFuIGF0dHJpYnV0ZSIsIGlk KTsKIAkJCXl5ZXJyb3IoZXJyb3Jtc2cpOwogCQkJZnJlZShpZCk7CkBAIC0xNTg3LDcgKzE2 NTIsMTIgQEAgc3RhdGljIGludCBkZWZpbmVfdHlwZWF0dHJpYnV0ZSh2b2lkKQogCiAJCWZy ZWUoaWQpOwogCi0JCWlmIChlYml0bWFwX3NldF9iaXQoJmF0dHItPnR5cGVzLCAodC0+dmFs dWUgLSAxKSwgVFJVRSkpIHsKKwkJaWYgKGNoZWNrX2xvb3BfaW5oZXJpdGFuY2UodCwgaW5o ZXJpdC0+dmFsdWUpKSB7CisJCQl5eWVycm9yKCJpbmhlcml0YW5jZSBsb29wIGlzIGRldGVj dGVkIik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlpZiAoZWJpdG1hcF9zZXRfYml0KCZp bmhlcml0LT50eXBlcywgKHQtPnZhbHVlIC0gMSksIFRSVUUpKSB7CiAJCQl5eWVycm9yKCJv dXQgb2YgbWVtb3J5Iik7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTE1OTYsMTAgKzE2NjYs MTAgQEAgc3RhdGljIGludCBkZWZpbmVfdHlwZWF0dHJpYnV0ZSh2b2lkKQogCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IGRlZmluZV90eXBlKGludCBhbGlhcykKK3N0YXRpYyBpbnQg ZGVmaW5lX3R5cGUoaW50IGFsaWFzLCBpbnQgZXh0ZW5kcykKIHsKIAljaGFyICppZDsKLQl0 eXBlX2RhdHVtX3QgKmRhdHVtLCAqYWxpYXNkYXR1bSwgKmF0dHI7CisJdHlwZV9kYXR1bV90 ICpkYXR1bSwgKmFsaWFzZGF0dW0sICppbmhlcml0OwogCWludCByZXQsIG5ld2F0dHIgPSAw OwogCiAKQEAgLTE2NzcsOSArMTc0NywxMCBAQCBzdGF0aWMgaW50IGRlZmluZV90eXBlKGlu dCBhbGlhcykKIAl9CiAKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkp IHsKLQkJYXR0ciA9IGhhc2h0YWJfc2VhcmNoKHBvbGljeWRicC0+cF90eXBlcy50YWJsZSwg aWQpOwotCQlpZiAoIWF0dHIpIHsKLQkJCXNwcmludGYoZXJyb3Jtc2csICJhdHRyaWJ1dGUg JXMgaXMgbm90IGRlY2xhcmVkIiwgaWQpOworCQlpbmhlcml0ID0gaGFzaHRhYl9zZWFyY2go cG9saWN5ZGJwLT5wX3R5cGVzLnRhYmxlLCBpZCk7CisJCWlmICghaW5oZXJpdCkgeworCQkJ c3ByaW50ZihlcnJvcm1zZywgIiVzYXR0cmlidXRlICVzIGlzIG5vdCBkZWNsYXJlZCIsCisJ CQkgICAgICAgIChleHRlbmRzKT8idHlwZS8iOiIiLCBpZCk7CiAjaWYgMQogCQkJLyogdHJl YXQgaXQgYXMgYSBmYXRhbCBlcnJvciAqLwogCQkJeXllcnJvcihlcnJvcm1zZyk7CkBAIC0x NzA4LDcgKzE3NzksNyBAQCBzdGF0aWMgaW50IGRlZmluZV90eXBlKGludCBhbGlhcykKIAkJ CW5ld2F0dHIgPSAwOwogCQl9CiAKLQkJaWYgKCFhdHRyLT5pc2F0dHIpIHsKKwkJaWYgKCFl eHRlbmRzICYmICFpbmhlcml0LT5pc2F0dHIpIHsKIAkJCXNwcmludGYoZXJyb3Jtc2csICIl cyBpcyBhIHR5cGUsIG5vdCBhbiBhdHRyaWJ1dGUiLCBpZCk7CiAJCQl5eWVycm9yKGVycm9y bXNnKTsKIAkJCXJldHVybiAtMTsKQEAgLTE3MTcsNyArMTc4OCw3IEBAIHN0YXRpYyBpbnQg ZGVmaW5lX3R5cGUoaW50IGFsaWFzKQogCQlpZiAoIW5ld2F0dHIpCiAJCQlmcmVlKGlkKTsK IAotCQllYml0bWFwX3NldF9iaXQoJmF0dHItPnR5cGVzLCBkYXR1bS0+dmFsdWUgLSAxLCBU UlVFKTsKKwkJZWJpdG1hcF9zZXRfYml0KCZpbmhlcml0LT50eXBlcywgZGF0dW0tPnZhbHVl IC0gMSwgVFJVRSk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xNzU5LDExICsxODMwLDEzIEBA IHN0YXRpYyBjaGFyICp0eXBlX3ZhbF90b19uYW1lKHVuc2lnbmVkIGkKIAogc3RhdGljIGlu dCBzZXRfdHlwZXMoZWJpdG1hcF90ICpzZXQsCiAJCSAgICAgZWJpdG1hcF90ICpuZWdzZXQs CisJCSAgICAgZWJpdG1hcF90ICppbmhlcml0LAogCQkgICAgIGNoYXIgKmlkLAogCQkgICAg IGludCAqYWRkKQogewogCXR5cGVfZGF0dW1fdCAqdDsKIAl1bnNpZ25lZCBpbnQgaTsKKwll Yml0bWFwX3QgdGVtcDsKIAogCWlmIChzdHJjbXAoaWQsICIqIikgPT0gMCkgewogCQkvKiBz ZXQgYWxsIHR5cGVzIG5vdCBpbiBuZWdzZXQgKi8KQEAgLTE3ODgsMTAgKzE4NjEsMTYgQEAg c3RhdGljIGludCBzZXRfdHlwZXMoZWJpdG1hcF90ICpzZXQsCiAJfQogCiAJaWYgKHN0cmNt cChpZCwgIi0iKSA9PSAwKSB7Ci0JCSphZGQgPSAwOworCQkqYWRkICY9IDB4ZmZmZTsgLyog Y2xlYXIgYml0IDAqLworCQlmcmVlKGlkKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHN0 cmNtcChpZCwgIkAiKSA9PSAwKSB7CisJCSphZGQgfD0gMHgwMDAyOyAvKiBzZXQgYml0IDEg Ki8KIAkJZnJlZShpZCk7CiAJCXJldHVybiAwOwotCX0JCisJfQogCiAJdCA9IGhhc2h0YWJf c2VhcmNoKHBvbGljeWRicC0+cF90eXBlcy50YWJsZSwgaWQpOwogCWlmICghdCkgewpAQCAt MTgwMCw0MiArMTg3OSwyOCBAQCBzdGF0aWMgaW50IHNldF90eXBlcyhlYml0bWFwX3QgKnNl dCwKIAkJZnJlZShpZCk7CiAJCXJldHVybiAtMTsKIAl9CisJaWYgKGluaGVyaXQgJiYgKCgq YWRkKSYweDAwMDIpIT0wICkKKwkJZWJpdG1hcF9zZXRfYml0KGluaGVyaXQsIHQtPnZhbHVl IC0gMSwgVFJVRSk7CiAKLQlpZiAodC0+aXNhdHRyKSB7Ci0JCS8qIHNldCBvciBjbGVhciBh bGwgdHlwZXMgd2l0aCB0aGlzIGF0dHJpYnV0ZSwKLQkJICAgYnV0IGRvIG5vdCBzZXQgYW55 dGhpbmcgZXhwbGljaXRseSBjbGVhcmVkIHByZXZpb3VzbHkgKi8KLQkJZm9yIChpID0gZWJp dG1hcF9zdGFydGJpdCgmdC0+dHlwZXMpOyBpIDwgZWJpdG1hcF9sZW5ndGgoJnQtPnR5cGVz KTsgaSsrKSB7Ci0JCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdC0+dHlwZXMsIGkpKSAKLQkJ CQljb250aW51ZTsJCQotCQkJaWYgKCEoKmFkZCkpIHsKLQkJCQllYml0bWFwX3NldF9iaXQo c2V0LCBpLCBGQUxTRSk7Ci0JCQkJZWJpdG1hcF9zZXRfYml0KG5lZ3NldCwgaSwgVFJVRSk7 Ci0JCQl9IGVsc2UgaWYgKCFlYml0bWFwX2dldF9iaXQobmVnc2V0LCBpKSkgewotCQkJCWVi aXRtYXBfc2V0X2JpdChzZXQsIGksIFRSVUUpOwotI2lmIFZFUkJPU0UKLQkJCX0gZWxzZSB7 Ci0JCQkJY2hhciAqbmFtZSA9IHR5cGVfdmFsX3RvX25hbWUoaSsxKTsKLQkJCQlzcHJpbnRm KGVycm9ybXNnLCAiaWdub3JpbmcgJXMgZHVlIHRvIHByaW9yIC0lcyIsIG5hbWUsIG5hbWUp OwotCQkJCXl5d2FybihlcnJvcm1zZyk7Ci0jZW5kaWYKLQkJCX0KLQkJfQotCX0gZWxzZSB7 Ci0JCS8qIHNldCBvciBjbGVhciBvbmUgdHlwZSwgYnV0IGRvIG5vdCBzZXQgYW55dGhpbmcK LQkJICAgZXhwbGljaXRseSBjbGVhcmVkIHByZXZpb3VzbHkgKi8JCi0JCWlmICghKCphZGQp KSB7Ci0JCQllYml0bWFwX3NldF9iaXQoc2V0LCB0LT52YWx1ZSAtIDEsIEZBTFNFKTsKLQkJ CWViaXRtYXBfc2V0X2JpdChuZWdzZXQsIHQtPnZhbHVlIC0gMSwgVFJVRSk7Ci0JCX0gZWxz ZSBpZiAoIWViaXRtYXBfZ2V0X2JpdChuZWdzZXQsIHQtPnZhbHVlIC0gMSkpIHsKLQkJCWVi aXRtYXBfc2V0X2JpdChzZXQsIHQtPnZhbHVlIC0gMSwgVFJVRSk7CisJZWJpdG1hcF9pbml0 KCZ0ZW1wKTsKKwlnZXRfY2hpbGRfdHlwZXMoJnRlbXAsIHQsICgqYWRkKSYweDAwMDIpOwor CWZvciAoaSA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBpIDwgZWJpdG1hcF9sZW5ndGgo JnRlbXApOyBpKyspIHsKKwkJaWYgKCFlYml0bWFwX2dldF9iaXQoJnRlbXAsIGkpKQorCQkJ Y29udGludWU7CisJCWlmICghKCgqYWRkKSYweDAwMDEpKSB7CisJCQllYml0bWFwX3NldF9i aXQoc2V0LCBpLCBGQUxTRSk7CisJCQllYml0bWFwX3NldF9iaXQobmVnc2V0LCBpLCBUUlVF KTsKKwkJfSBlbHNlIGlmICghZWJpdG1hcF9nZXRfYml0KG5lZ3NldCwgaSkpIHsKKwkJCWVi aXRtYXBfc2V0X2JpdChzZXQsIGksIFRSVUUpOwogI2lmIFZFUkJPU0UKIAkJfSBlbHNlIHsK LQkJCXNwcmludGYoZXJyb3Jtc2csICJpZ25vcmluZyAlcyBkdWUgdG8gcHJpb3IgLSVzIiwg aWQsIGlkKTsKKwkJCWNoYXIgKm5hbWUgPSB0eXBlX3ZhbF90b19uYW1lKGkrMSk7CisJCQlz cHJpbnRmKGVycm9ybXNnLCAiaWdub3JpbmcgJXMgZHVlIHRvIHByaW9yIC0lcyIsIG5hbWUs IG5hbWUpOwogCQkJeXl3YXJuKGVycm9ybXNnKTsKICNlbmRpZgogCQl9CiAJfQotCisJZWJp dG1hcF9kZXN0cm95KCZ0ZW1wKTsKIAlmcmVlKGlkKTsKIAkqYWRkID0gMTsKIAlyZXR1cm4g MDsKQEAgLTE4NzIsMTQgKzE5MzcsMTQgQEAgc3RhdGljIGludCBkZWZpbmVfY29tcHV0ZV90 eXBlKGludCB3aGljaAogCiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwogCXdoaWxlICgoaWQg PSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5cGVzKCZzdHlwZXMs ICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90eXBlcygmc3R5cGVzLCAmbmVnc2V0 LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4gLTE7CiAJfQogCWViaXRtYXBfZGVzdHJv eSgmbmVnc2V0KTsKIAogCWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0g cXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygmdHR5cGVzLCAm bmVnc2V0LCBpZCwgJmFkZCkpCisJCWlmIChzZXRfdHlwZXMoJnR0eXBlcywgJm5lZ3NldCwg TlVMTCwgaWQsICZhZGQpKQogCQkJcmV0dXJuIC0xOwogCX0KIAllYml0bWFwX2Rlc3Ryb3ko Jm5lZ3NldCk7CkBAIC0yMDEyLDE0ICsyMDc3LDE0IEBAIHN0YXRpYyBjb25kX2F2X2xpc3Rf dCAqZGVmaW5lX2NvbmRfY29tcHUKIAogCWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGls ZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygm c3R5cGVzLCAmbmVnc2V0LCBpZCwgJmFkZCkpCisJCWlmIChzZXRfdHlwZXMoJnN0eXBlcywg Jm5lZ3NldCwgTlVMTCwgaWQsICZhZGQpKQogCQkJcmV0dXJuICBDT05EX0VSUjsKIAl9CiAJ ZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwogCiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwog CXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5 cGVzKCZ0dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90eXBlcygmdHR5 cGVzLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4gQ09ORF9FUlI7CiAJ fQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKQEAgLTI0MTksOSArMjQ4NCwxMCBAQCBz dGF0aWMgY29uZF9hdl9saXN0X3QgKmRlZmluZV9jb25kX3RlX2F2CiAJY29uZF9hdl9saXN0 X3QgKnN1Yl9saXN0LCAqZmluYWxfbGlzdCwgKnRhaWw7CiAJY2xhc3NfZGF0dW1fdCAqY2xh ZGF0dW07CiAJcGVybV9kYXR1bV90ICpwZXJkYXR1bTsKLQllYml0bWFwX3Qgc3R5cGVzLCB0 dHlwZXMsIHRjbGFzc2VzLCBuZWdzZXQ7CisJdHlwZV9kYXR1bV90ICp0eXBlZGF0dW07CisJ ZWJpdG1hcF90IHN0eXBlcywgdHR5cGVzLCB0Y2xhc3NlcywgdGVtcCwgaW5oZXJpdCwgbmVn c2V0OwogCWFjY2Vzc192ZWN0b3JfdCAqYXZwOwotCWludCBpLCBqLCBoaWNsYXNzLCBzZWxm ID0gMCwgYWRkID0gMTsKKwlpbnQgaSwgaiwgaywgaGljbGFzcywgc2VsZiA9IDAsIGFkZCA9 IDE7CiAJaW50IHN1cHByZXNzID0gMDsKIAogCWlmIChwYXNzID09IDEpIHsKQEAgLTI0Mzks MTAgKzI1MDUsMTEgQEAgc3RhdGljIGNvbmRfYXZfbGlzdF90ICpkZWZpbmVfY29uZF90ZV9h dgogCWViaXRtYXBfaW5pdCgmc3R5cGVzKTsKIAllYml0bWFwX2luaXQoJnR0eXBlcyk7CiAJ ZWJpdG1hcF9pbml0KCZ0Y2xhc3Nlcyk7CisJZWJpdG1hcF9pbml0KCZpbmhlcml0KTsKIAog CWViaXRtYXBfaW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlk X3F1ZXVlKSkpIHsKLQkJaWYgKHNldF90eXBlcygmc3R5cGVzLCAmbmVnc2V0LCBpZCwgJmFk ZCkpCisJCWlmIChzZXRfdHlwZXMoJnN0eXBlcywgJm5lZ3NldCwgJmluaGVyaXQsIGlkLCAm YWRkKSkKIAkJCXJldHVybiBDT05EX0VSUjsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdz ZXQpOwpAQCAtMjQ1Myw3ICsyNTIwLDcgQEAgc3RhdGljIGNvbmRfYXZfbGlzdF90ICpkZWZp bmVfY29uZF90ZV9hdgogCQkJc2VsZiA9IDE7CiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAo c2V0X3R5cGVzKCZ0dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90eXBl cygmdHR5cGVzLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4gQ09ORF9F UlI7CiAJfQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKQEAgLTI1NDIsMTkgKzI2MDks MzYgQEAgc3RhdGljIGNvbmRfYXZfbGlzdF90ICpkZWZpbmVfY29uZF90ZV9hdgogCQlmb3Ig KGkgPSBlYml0bWFwX3N0YXJ0Yml0KCZzdHlwZXMpOyBpIDwgZWJpdG1hcF9sZW5ndGgoJnN0 eXBlcyk7IGkrKykgewogCQkJaWYgKCFlYml0bWFwX2dldF9iaXQoJnN0eXBlcywgaSkpIAog CQkJCWNvbnRpbnVlOwotCQkJaWYgKHNlbGYpIHsKLQkJCQlpZiAoKHN1Yl9saXN0ID0gY29u ZF90ZV9hdnRhYl9oZWxwZXIod2hpY2gsIGksIGksICZ0Y2xhc3NlcywgYXZwICkpID09IENP TkRfRVJSKQotCQkJCQlyZXR1cm4gQ09ORF9FUlI7Ci0JCQkJaWYgKGZpbmFsX2xpc3QpIHsK LQkJCQkJdGFpbC0+bmV4dCA9IHN1Yl9saXN0OwotCQkJCQl3aGlsZSAodGFpbC0+bmV4dCAh PSBOVUxMKQotCQkJCQkJdGFpbCA9IHRhaWwtPm5leHQ7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJ ZmluYWxfbGlzdCA9IHN1Yl9saXN0OwotCQkJCQl0YWlsID0gZmluYWxfbGlzdDsKLQkJCQkJ d2hpbGUgKHRhaWwtPm5leHQgIT0gTlVMTCkKLQkJCQkJCXRhaWwgPSB0YWlsLT5uZXh0Owor CQkJdHlwZWRhdHVtID0gZ2V0X3R5cGUoaSsxKTsKKwkJCWlmICghdHlwZWRhdHVtKQorCQkJ CXJldHVybiBDT05EX0VSUjsKKwkJCWViaXRtYXBfaW5pdCgmdGVtcCk7CisJCQkvKiBJZiB0 aGUgc291cmNlIHR5cGUgaXMgZ2l2ZW4gd2l0aCAnQCcgcHJlZml4LAorCQkJICAgJ3NlbGYn IGFsc28gaW5jbHVkZXMgb3duIGNoaWxkIHR5cGVzLiAqLworCQkJZ2V0X2NoaWxkX3R5cGVz KCZ0ZW1wLCB0eXBlZGF0dW0sIGViaXRtYXBfZ2V0X2JpdCgmaW5oZXJpdCxpKSk7CisJCQlm b3IgKGogPSBlYml0bWFwX3N0YXJ0Yml0KCZ0ZW1wKTsgaiA8IGViaXRtYXBfbGVuZ3RoKCZ0 ZW1wKTsgaisrKSB7CisJCQkJaWYoIWViaXRtYXBfZ2V0X2JpdCgmdGVtcCwgaikpCisJCQkJ CWNvbnRpbnVlOworCQkJCWZvciAoayA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBrIDwg ZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBrKyspIHsKKwkJCQkJaWYoIWViaXRtYXBfZ2V0X2Jp dCgmdGVtcCwgaykpCisJCQkJCQljb250aW51ZTsKKwkJCQkJc3ViX2xpc3QgPSBjb25kX3Rl X2F2dGFiX2hlbHBlcih3aGljaCwgaiwgaywgJnRjbGFzc2VzLCBhdnApOworCQkJCQlpZiAo c3ViX2xpc3Q9PUNPTkRfRVJSKSB7CisJCQkJCQllYml0bWFwX2Rlc3Ryb3koJnRlbXApOwor CQkJCQkJcmV0dXJuIENPTkRfRVJSOworCQkJCQl9CisJCQkJCWlmIChmaW5hbF9saXN0KSB7 CisJCQkJCQl0YWlsLT5uZXh0ID0gc3ViX2xpc3Q7CisJCQkJCQl3aGlsZSAodGFpbC0+bmV4 dCAhPSBOVUxMKQorCQkJCQkJCXRhaWwgPSB0YWlsLT5uZXh0OworCQkJCQl9IGVsc2Ugewor CQkJCQkJZmluYWxfbGlzdCA9IHN1Yl9saXN0OworCQkJCQkJdGFpbCA9IGZpbmFsX2xpc3Q7 CisJCQkJCQl3aGlsZSAodGFpbC0+bmV4dCAhPSBOVUxMKQorCQkJCQkJCXRhaWwgPSB0YWls LT5uZXh0OworCQkJCQl9CiAJCQkJfQorCQkJCWViaXRtYXBfZGVzdHJveSgmdGVtcCk7CiAJ CQl9CiAJCX0KIAl9CkBAIC0yNTk1LDkgKzI2NzksMTAgQEAgc3RhdGljIGludCBkZWZpbmVf dGVfYXZ0YWIoaW50IHdoaWNoKQogCWNoYXIgKmlkOwogCWNsYXNzX2RhdHVtX3QgKmNsYWRh dHVtOwogCXBlcm1fZGF0dW1fdCAqcGVyZGF0dW07Ci0JZWJpdG1hcF90IHN0eXBlcywgdHR5 cGVzLCB0Y2xhc3NlcywgbmVnc2V0OworCXR5cGVfZGF0dW1fdCAqdHlwZWRhdHVtOworCWVi aXRtYXBfdCBzdHlwZXMsIHR0eXBlcywgdGNsYXNzZXMsIHRlbXAsIGluaGVyaXQsIG5lZ3Nl dDsKIAlhY2Nlc3NfdmVjdG9yX3QgKmF2cDsKLQl1bnNpZ25lZCBpbnQgaSwgaiwgaGljbGFz czsKKwl1bnNpZ25lZCBpbnQgaSwgaiwgaywgaGljbGFzczsKIAlpbnQgc2VsZiA9IDAsIGFk ZCA9IDE7CiAJdGVfYXNzZXJ0X3QgKm5ld2Fzc2VydDsKIAlpbnQgc3VwcHJlc3MgPSAwOwpA QCAtMjYxNywxMCArMjcwMiwxMSBAQCBzdGF0aWMgaW50IGRlZmluZV90ZV9hdnRhYihpbnQg d2hpY2gpCiAJZWJpdG1hcF9pbml0KCZzdHlwZXMpOwogCWViaXRtYXBfaW5pdCgmdHR5cGVz KTsKIAllYml0bWFwX2luaXQoJnRjbGFzc2VzKTsKKwllYml0bWFwX2luaXQoJmluaGVyaXQp OwogCiAJZWJpdG1hcF9pbml0KCZuZWdzZXQpOwogCXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1v dmUoaWRfcXVldWUpKSkgewotCQlpZiAoc2V0X3R5cGVzKCZzdHlwZXMsICZuZWdzZXQsIGlk LCAmYWRkKSkKKwkJaWYgKHNldF90eXBlcygmc3R5cGVzLCAmbmVnc2V0LCAmaW5oZXJpdCwg aWQsICZhZGQpKQogCQkJcmV0dXJuIC0xOwogCX0KIAllYml0bWFwX2Rlc3Ryb3koJm5lZ3Nl dCk7CkBAIC0yNjMxLDcgKzI3MTcsNyBAQCBzdGF0aWMgaW50IGRlZmluZV90ZV9hdnRhYihp bnQgd2hpY2gpCiAJCQlzZWxmID0gMTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCWlmIChzZXRf dHlwZXMoJnR0eXBlcywgJm5lZ3NldCwgaWQsICZhZGQpKQorCQlpZiAoc2V0X3R5cGVzKCZ0 dHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRkKSkKIAkJCXJldHVybiAtMTsKIAl9CiAJ ZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwpAQCAtMjcyMyw2ICsyODA5LDcgQEAgc3RhdGlj IGludCBkZWZpbmVfdGVfYXZ0YWIoaW50IHdoaWNoKQogCQluZXdhc3NlcnQtPnN0eXBlcyA9 IHN0eXBlczsKIAkJbmV3YXNzZXJ0LT50dHlwZXMgPSB0dHlwZXM7CiAJCW5ld2Fzc2VydC0+ dGNsYXNzZXMgPSB0Y2xhc3NlczsKKwkJbmV3YXNzZXJ0LT5pbmhlcml0ID0gaW5oZXJpdDsK IAkJbmV3YXNzZXJ0LT5zZWxmID0gc2VsZjsKIAkJbmV3YXNzZXJ0LT5hdnAgPSBhdnA7CiAJ CW5ld2Fzc2VydC0+bGluZSA9IHBvbGljeWRiX2xpbmVubzsKQEAgLTI3MzUsOCArMjgyMiwy NiBAQCBzdGF0aWMgaW50IGRlZmluZV90ZV9hdnRhYihpbnQgd2hpY2gpCiAJCWlmICghZWJp dG1hcF9nZXRfYml0KCZzdHlwZXMsIGkpKSAKIAkJCWNvbnRpbnVlOwogCQlpZiAoc2VsZikg ewotCQkJaWYgKHRlX2F2dGFiX2hlbHBlcih3aGljaCwgaSwgaSwgJnRjbGFzc2VzLCBhdnAp KQorCQkJdHlwZWRhdHVtID0gZ2V0X3R5cGUoaSsxKTsKKwkJCWlmICghdHlwZWRhdHVtKQog CQkJCXJldHVybiAtMTsKKwkJCWViaXRtYXBfaW5pdCgmdGVtcCk7CisJCQkvKiBJZiB0aGUg c291cmNlIHR5cGUgaXMgZ2l2ZW4gd2l0aCAnQCcgcHJlZml4LAorCQkJICAgJ3NlbGYnIG1l YW5zIG93biBjaGlsZCB0eXBlcy4gKi8KKwkJCWdldF9jaGlsZF90eXBlcygmdGVtcCwgdHlw ZWRhdHVtLCBlYml0bWFwX2dldF9iaXQoJmluaGVyaXQsIGkpKTsKKwkJCWZvciAoaiA9IGVi aXRtYXBfc3RhcnRiaXQoJnRlbXApOyBqIDwgZWJpdG1hcF9sZW5ndGgoJnRlbXApOyBqKysp IHsKKwkJCQlpZiAoIWViaXRtYXBfZ2V0X2JpdCgmdGVtcCwgaikpCisJCQkJCWNvbnRpbnVl OworCQkJCWZvciAoayA9IGViaXRtYXBfc3RhcnRiaXQoJnRlbXApOyBrIDwgZWJpdG1hcF9s ZW5ndGgoJnRlbXApOyBrKyspIHsKKwkJCQkJaWYgKCFlYml0bWFwX2dldF9iaXQoJnRlbXAs IGspKQorCQkJCQkJY29udGludWU7CisJCQkJCWlmICh0ZV9hdnRhYl9oZWxwZXIod2hpY2gs IGosIGssICZ0Y2xhc3NlcywgYXZwKSkgeworCQkJCQkJZWJpdG1hcF9kZXN0cm95KCZ0ZW1w KTsKKwkJCQkJCXJldHVybiAtMTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWViaXRtYXBf ZGVzdHJveSgmdGVtcCk7CiAJCX0KIAkJZm9yIChqID0gZWJpdG1hcF9zdGFydGJpdCgmdHR5 cGVzKTsgaiA8IGViaXRtYXBfbGVuZ3RoKCZ0dHlwZXMpOyBqKyspIHsKIAkJCWlmICghZWJp dG1hcF9nZXRfYml0KCZ0dHlwZXMsIGopKSAKQEAgLTI4MjcsNyArMjkzMiw3IEBAIHN0YXRp YyBpbnQgZGVmaW5lX3JvbGVfdHlwZXModm9pZCkKIAogCWViaXRtYXBfaW5pdCgmbmVnc2V0 KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJaWYgKHNl dF90eXBlcygmcm9sZS0+dHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90 eXBlcygmcm9sZS0+dHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRkKSkKIAkJCXJldHVy biAtMTsKIAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwpAQCAtMzA0Miw3ICszMTQ3 LDcgQEAgc3RhdGljIGludCBkZWZpbmVfcm9sZV90cmFucyh2b2lkKQogCiAJZWJpdG1hcF9p bml0KCZuZWdzZXQpOwogCXdoaWxlICgoaWQgPSBxdWV1ZV9yZW1vdmUoaWRfcXVldWUpKSkg ewotCQlpZiAoc2V0X3R5cGVzKCZ0eXBlcywgJm5lZ3NldCwgaWQsICZhZGQpKQorCQlpZiAo c2V0X3R5cGVzKCZ0eXBlcywgJm5lZ3NldCwgTlVMTCwgaWQsICZhZGQpKQogCQkJcmV0dXJu IC0xOwogCX0KIAllYml0bWFwX2Rlc3Ryb3koJm5lZ3NldCk7CkBAIC0zNDY3LDcgKzM1NzIs NyBAQCBzdGF0aWMgdWludHB0cl90CiAJCQkJfQogCQkJCXZhbCA9IHJvbGUtPnZhbHVlOwog CQkJfSBlbHNlIGlmIChleHByLT5hdHRyICYgQ0VYUFJfVFlQRSkgewotCQkJCWlmIChzZXRf dHlwZXMoJmV4cHItPm5hbWVzLCAmbmVnc2V0LCBpZCwgJmFkZCkpIHsKKwkJCQlpZiAoc2V0 X3R5cGVzKCZleHByLT5uYW1lcywgJm5lZ3NldCwgTlVMTCwgaWQsICZhZGQpKSB7CiAJCQkJ CWZyZWUoZXhwcik7CiAJCQkJCXJldHVybiAwOwogCQkJCX0KQEAgLTQ5MDMsMTQgKzUwMDgs MTQgQEAgc3RhdGljIGludCBkZWZpbmVfcmFuZ2VfdHJhbnModm9pZCkKIAogCWViaXRtYXBf aW5pdCgmbmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkp IHsKLQkJaWYgKHNldF90eXBlcygmZG9tcywgJm5lZ3NldCwgaWQsICZhZGQpKQorCQlpZiAo c2V0X3R5cGVzKCZkb21zLCAmbmVnc2V0LCBOVUxMLCBpZCwgJmFkZCkpCiAJCQlyZXR1cm4g LTE7CiAJfQogCWViaXRtYXBfZGVzdHJveSgmbmVnc2V0KTsKIAogCWViaXRtYXBfaW5pdCgm bmVnc2V0KTsKIAl3aGlsZSAoKGlkID0gcXVldWVfcmVtb3ZlKGlkX3F1ZXVlKSkpIHsKLQkJ aWYgKHNldF90eXBlcygmdHlwZXMsICZuZWdzZXQsIGlkLCAmYWRkKSkKKwkJaWYgKHNldF90 eXBlcygmdHlwZXMsICZuZWdzZXQsIE5VTEwsIGlkLCAmYWRkKSkKIAkJCXJldHVybiAtMTsK IAl9CiAJZWJpdG1hcF9kZXN0cm95KCZuZWdzZXQpOwo= --------------070305060305010206040005-- -- 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.