From mboxrd@z Thu Jan 1 00:00:00 1970 From: Noel Power Subject: Re: Kerberized mount.cifs with SMB>1? Date: Fri, 24 Jul 2015 11:09:11 +0100 Message-ID: <55B20EC7.5040502@suse.com> Reply-To: noel.power-IBi9RG/b67k@public.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050707050402040809010405" To: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Return-path: Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: This is a multi-part message in MIME format. --------------050707050402040809010405 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi Steve, * I came across this thread http://thread.gmane.org/gmane.linux.kernel.cifs/10081/focus=10305 when investigating why mount.cifs wasn't working with smb2. I have tried to follow the information there and have created a patch. I have tested this successfully against SMB2.0, SMB2.1, SMB3.0, SMB3.02. Regarding the patch I followed as much as I could sess_auth_kerberos method in cifs.c[1]. Some things I didn't quite see how to handle as they don't seem relevant in SMB2 e.g. the unicode_oslm_strings, unicode_domain_string, ascii_ssetup_strings handling, also I only just noticed I missed the "bad security blob length" check (but not sure if it is needed for smb1+) Anyway be interested in a review of the patch :-) thanks, Noel [1] actually I followed CIFS_SessSetup of an older cifs version but then when rebasing glanced at the new 'sess_auth_kerberos' --------------050707050402040809010405 Content-Type: application/mbox; name="0001-kerberos-mount-for-SMB2-SMB3.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-kerberos-mount-for-SMB2-SMB3.patch" RnJvbSBjOTI3MGVkNzIwODY1ZDhmYTc0OGFkZjY5MDhiY2I5YzgwNzRjNzg1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOb2VsIFBvd2VyIDxub2VsLnBvd2VyQHN1c2UuY29t PgpEYXRlOiBNb24sIDIwIEp1bCAyMDE1IDEyOjA2OjA3ICswMTAwClN1YmplY3Q6IFtQQVRD SF0ga2VyYmVyb3MgbW91bnQgZm9yIFNNQjIsIFNNQjMKClBhdGNoIGJhc2VkIG9uIHRoZSBp bmZvcm1hdGlvbiBkZXRhaWxlZCBpbgpodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5s aW51eC5rZXJuZWwuY2lmcy8xMDA4MS9mb2N1cz0xMDMwNwp0byBlbmFibGUgU01CMi9TTUIz IGtlcmJlcm96aWVkLgoKYSkgU01CMl9uZWdvdGlhdGU6IGVuYWJsZS91c2UgZGVjb2RlX25l Z1Rva2VuSW5pdCBpbiBTTUIyX25lZ290aWF0ZQpiKSBTTUIyX3Nlc3Nfc2V0dXA6IGhhbmRs ZSBLZXJiZXJvcyBzZWN0eXBlIGFuZCByZXBsaWNhdGUgS2VyYmVyb3MKICAgU01CMSBwcm9j ZXNzaW5nIGRvbmUgaW4gc2Vzc19hdXRoX2tlcmJlcm9zCgpTaWduZWQtb2ZmLWJ5OiBOb2Vs IFBvd2VyIDxub2VsLnBvd2VyQHN1c2UuY29tPgotLS0KIGZzL2NpZnMvc21iMnBkdS5jIHwg MTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJwZHUuYyBiL2ZzL2NpZnMvc21iMnBkdS5j CmluZGV4IGI4YjRmMDguLjg4MzM3ODMgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvc21iMnBkdS5j CisrKyBiL2ZzL2NpZnMvc21iMnBkdS5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAi c21iMnN0YXR1cy5oIgogI2luY2x1ZGUgInNtYjJnbG9iLmgiCiAjaW5jbHVkZSAiY2lmc3Bk dS5oIgorI2luY2x1ZGUgImNpZnNfc3BuZWdvLmgiCiAKIC8qCiAgKiAgVGhlIGZvbGxvd2lu ZyB0YWJsZSBkZWZpbmVzIHRoZSBleHBlY3RlZCAiU3RydWN0dXJlU2l6ZSIgb2YgU01CMiBy ZXF1ZXN0cwpAQCAtNDg2LDcgKzQ4Nyw2IEBAIFNNQjJfbmVnb3RpYXRlKGNvbnN0IHVuc2ln bmVkIGludCB4aWQsIHN0cnVjdCBjaWZzX3NlcyAqc2VzKQogCQljaWZzX2RiZyhGWUksICJt aXNzaW5nIHNlY3VyaXR5IGJsb2Igb24gbmVncHJvdFxuIik7CiAKIAlyYyA9IGNpZnNfZW5h YmxlX3NpZ25pbmcoc2VydmVyLCBzZXMtPnNpZ24pOwotI2lmZGVmIENPTkZJR19TTUIyX0FT TjEgIC8qIEJCIFJFTU9WRU1FIHdoZW4gdXBkYXRlZCBhc24xLmMgcmVhZHkgKi8KIAlpZiAo cmMpCiAJCWdvdG8gbmVnX2V4aXQ7CiAJaWYgKGJsb2JfbGVuZ3RoKQpAQCAtNDk3LDcgKzQ5 Nyw2IEBAIFNNQjJfbmVnb3RpYXRlKGNvbnN0IHVuc2lnbmVkIGludCB4aWQsIHN0cnVjdCBj aWZzX3NlcyAqc2VzKQogCQlyYyA9IC1FSU87CiAJCWdvdG8gbmVnX2V4aXQ7CiAJfQotI2Vu ZGlmCiAKIG5lZ19leGl0OgogCWZyZWVfcnNwX2J1ZihyZXNwX2J1ZnR5cGUsIHJzcCk7CkBA IC01OTIsOSArNTkxLDEwIEBAIFNNQjJfc2Vzc19zZXR1cChjb25zdCB1bnNpZ25lZCBpbnQg eGlkLCBzdHJ1Y3QgY2lmc19zZXMgKnNlcywKIAlfX2xlMzIgcGhhc2UgPSBOdExtTmVnb3Rp YXRlOyAvKiBOVExNU1NQLCBpZiBuZWVkZWQsIGlzIG11bHRpc3RhZ2UgKi8KIAlzdHJ1Y3Qg VENQX1NlcnZlcl9JbmZvICpzZXJ2ZXIgPSBzZXMtPnNlcnZlcjsKIAl1MTYgYmxvYl9sZW5n dGggPSAwOwotCWNoYXIgKnNlY3VyaXR5X2Jsb2I7CisJY2hhciAqc2VjdXJpdHlfYmxvYiA9 IE5VTEw7CiAJY2hhciAqbnRsbXNzcF9ibG9iID0gTlVMTDsKIAlib29sIHVzZV9zcG5lZ28g PSBmYWxzZTsgLyogZWxzZSB1c2UgcmF3IG50bG1zc3AgKi8KKwlzdHJ1Y3Qga2V5ICpzcG5l Z29fa2V5ID0gTlVMTDsKIAogCWNpZnNfZGJnKEZZSSwgIlNlc3Npb24gU2V0dXBcbiIpOwog CkBAIC02MjAsNyArNjIwLDggQEAgU01CMl9zZXNzX3NldHVwKGNvbnN0IHVuc2lnbmVkIGlu dCB4aWQsIHN0cnVjdCBjaWZzX3NlcyAqc2VzLAogCXNlcy0+bnRsbXNzcC0+c2Vzc2tleV9w ZXJfc21ic2VzcyA9IHRydWU7CiAKIAkvKiBGSVhNRTogYWxsb3cgZm9yIG90aGVyIGF1dGgg dHlwZXMgYmVzaWRlcyBOVExNU1NQIChlLmcuIGtyYjUpICovCi0Jc2VzLT5zZWN0eXBlID0g UmF3TlRMTVNTUDsKKwlpZiAoc2VzLT5zZWN0eXBlICE9IEtlcmJlcm9zICYmIHNlcy0+c2Vj dHlwZSAhPSBSYXdOVExNU1NQKQorCQlzZXMtPnNlY3R5cGUgPSBSYXdOVExNU1NQOwogCiBz c2V0dXBfbnRsbXNzcF9hdXRoZW50aWNhdGU6CiAJaWYgKHBoYXNlID09IE50TG1DaGFsbGVu Z2UpCkBAIC02NDksNjAgKzY1MCwxMDQgQEAgc3NldHVwX250bG1zc3BfYXV0aGVudGljYXRl OgogCWlvdlswXS5pb3ZfYmFzZSA9IChjaGFyICopcmVxOwogCS8qIDQgZm9yIHJmYzEwMDIg bGVuZ3RoIGZpZWxkIGFuZCAxIGZvciBwYWQgKi8KIAlpb3ZbMF0uaW92X2xlbiA9IGdldF9y ZmMxMDAyX2xlbmd0aChyZXEpICsgNCAtIDE7Ci0JaWYgKHBoYXNlID09IE50TG1OZWdvdGlh dGUpIHsKLQkJbnRsbXNzcF9ibG9iID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IF9ORUdPVElB VEVfTUVTU0FHRSksCi0JCQkJICAgICAgIEdGUF9LRVJORUwpOwotCQlpZiAobnRsbXNzcF9i bG9iID09IE5VTEwpIHsKLQkJCXJjID0gLUVOT01FTTsKKworCWlmIChzZXMtPnNlY3R5cGUg PT0gUmF3TlRMTVNTUCkgeworCQlpZiAocGhhc2UgPT0gTnRMbU5lZ290aWF0ZSkgeworCQkJ bnRsbXNzcF9ibG9iID0KKwkJCQlrbWFsbG9jKHNpemVvZihzdHJ1Y3QgX05FR09USUFURV9N RVNTQUdFKSwKKwkJCQkJICAgICAgIEdGUF9LRVJORUwpOworCQkJaWYgKG50bG1zc3BfYmxv YiA9PSBOVUxMKSB7CisJCQkJcmMgPSAtRU5PTUVNOworCQkJCWdvdG8gc3NldHVwX2V4aXQ7 CisJCQl9CisJCQlidWlsZF9udGxtc3NwX25lZ290aWF0ZV9ibG9iKG50bG1zc3BfYmxvYiwg c2VzKTsKKwkJCWlmICh1c2Vfc3BuZWdvKSB7CisJCQkJLyogYmxvYl9sZW5ndGggPSBidWls ZF9zcG5lZ29fbnRsbXNzcF9ibG9iKAorCQkJCQkJJnNlY3VyaXR5X2Jsb2IsCisJCQkJCQlz aXplb2Yoc3RydWN0IF9ORUdPVElBVEVfTUVTU0FHRSksCisJCQkJCQludGxtc3NwX2Jsb2Ip OyAqLworCQkJCS8qIEJCIGV2ZW50dWFsbHkgbmVlZCB0byBhZGQgdGhpcyAqLworCQkJCWNp ZnNfZGJnKFZGUywKKwkJCQkJInNwbmVnbyBub3Qgc3VwcG9ydGVkIGZvciBTTUIyIHlldFxu Iik7CisJCQkJcmMgPSAtRU9QTk9UU1VQUDsKKwkJCQlrZnJlZShudGxtc3NwX2Jsb2IpOwor CQkJCWdvdG8gc3NldHVwX2V4aXQ7CisJCQl9IGVsc2UgeworCQkJCWJsb2JfbGVuZ3RoID0g c2l6ZW9mKHN0cnVjdCBfTkVHT1RJQVRFX01FU1NBR0UpOworCQkJCS8qIHdpdGggcmF3IE5U TE1TU1Agd2UgZG9uJ3QgZW5jYXBzdWxhdGUgaW4gU1BORUdPICovCisJCQkJc2VjdXJpdHlf YmxvYiA9IG50bG1zc3BfYmxvYjsKKwkJCX0KKwkJfSBlbHNlIGlmIChwaGFzZSA9PSBOdExt QXV0aGVudGljYXRlKSB7CisJCQlyZXEtPmhkci5TZXNzaW9uSWQgPSBzZXMtPlN1aWQ7CisJ CQludGxtc3NwX2Jsb2IgPQorCQkJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBfTkVHT1RJQVRF X01FU1NBR0UpICsgNTAwLAorCQkJCQkgICAgICAgR0ZQX0tFUk5FTCk7CisJCQlpZiAobnRs bXNzcF9ibG9iID09IE5VTEwpIHsKKwkJCQlyYyA9IC1FTk9NRU07CisJCQkJZ290byBzc2V0 dXBfZXhpdDsKKwkJCX0KKwkJCXJjID0gYnVpbGRfbnRsbXNzcF9hdXRoX2Jsb2IobnRsbXNz cF9ibG9iLCAmYmxvYl9sZW5ndGgsCisJCQkJCQkgICAgIHNlcywgbmxzX2NwKTsKKwkJCWlm IChyYykgeworCQkJCWNpZnNfZGJnKEZZSSwKKwkJCQkJICJidWlsZF9udGxtc3NwX2F1dGhf YmxvYiBmYWlsZWQgJWRcbiIsCisJCQkJCSByYyk7CisJCQkJZ290byBzc2V0dXBfZXhpdDsg LyogQkIgZG91YmxlIGNoZWNrIGVycm9yIGhhbmRsaW5nICovCisJCQl9CisJCQlpZiAodXNl X3NwbmVnbykgeworCQkJCS8qIGJsb2JfbGVuZ3RoID0gYnVpbGRfc3BuZWdvX250bG1zc3Bf YmxvYigKKwkJCQkJCQkJJnNlY3VyaXR5X2Jsb2IsCisJCQkJCQkJCWJsb2JfbGVuZ3RoLAor CQkJCQkJCQludGxtc3NwX2Jsb2IpOyAqLworCQkJCWNpZnNfZGJnKFZGUywKKwkJCQkJICJz cG5lZ28gbm90IHN1cHBvcnRlZCBmb3IgU01CMiB5ZXRcbiIpOworCQkJCXJjID0gLUVPUE5P VFNVUFA7CisJCQkJa2ZyZWUobnRsbXNzcF9ibG9iKTsKKwkJCQlnb3RvIHNzZXR1cF9leGl0 OworCQkJfSBlbHNlIHsKKwkJCQlzZWN1cml0eV9ibG9iID0gbnRsbXNzcF9ibG9iOworCQkJ fQorCQl9IGVsc2UgeworCQkJY2lmc19kYmcoVkZTLCAiaWxsZWdhbCBudGxtc3NwIHBoYXNl XG4iKTsKKwkJCXJjID0gLUVJTzsKIAkJCWdvdG8gc3NldHVwX2V4aXQ7CiAJCX0KLQkJYnVp bGRfbnRsbXNzcF9uZWdvdGlhdGVfYmxvYihudGxtc3NwX2Jsb2IsIHNlcyk7Ci0JCWlmICh1 c2Vfc3BuZWdvKSB7Ci0JCQkvKiBibG9iX2xlbmd0aCA9IGJ1aWxkX3NwbmVnb19udGxtc3Nw X2Jsb2IoCi0JCQkJCSZzZWN1cml0eV9ibG9iLAotCQkJCQlzaXplb2Yoc3RydWN0IF9ORUdP VElBVEVfTUVTU0FHRSksCi0JCQkJCW50bG1zc3BfYmxvYik7ICovCi0JCQkvKiBCQiBldmVu dHVhbGx5IG5lZWQgdG8gYWRkIHRoaXMgKi8KLQkJCWNpZnNfZGJnKFZGUywgInNwbmVnbyBu b3Qgc3VwcG9ydGVkIGZvciBTTUIyIHlldFxuIik7Ci0JCQlyYyA9IC1FT1BOT1RTVVBQOwot CQkJa2ZyZWUobnRsbXNzcF9ibG9iKTsKKwkJaW92WzFdLmlvdl9iYXNlID0gc2VjdXJpdHlf YmxvYjsKKwkJaW92WzFdLmlvdl9sZW4gPSBibG9iX2xlbmd0aDsKKwl9IGVsc2UgaWYgKHNl cy0+c2VjdHlwZSA9PSBLZXJiZXJvcykgeworCQlzdHJ1Y3QgY2lmc19zcG5lZ29fbXNnICpt c2c7CisKKwkJc3BuZWdvX2tleSA9IGNpZnNfZ2V0X3NwbmVnb19rZXkoc2VzKTsKKwkJaWYg KElTX0VSUihzcG5lZ29fa2V5KSkgeworCQkJcmMgPSBQVFJfRVJSKHNwbmVnb19rZXkpOwor CQkJc3BuZWdvX2tleSA9IE5VTEw7CiAJCQlnb3RvIHNzZXR1cF9leGl0OwotCQl9IGVsc2Ug ewotCQkJYmxvYl9sZW5ndGggPSBzaXplb2Yoc3RydWN0IF9ORUdPVElBVEVfTUVTU0FHRSk7 Ci0JCQkvKiB3aXRoIHJhdyBOVExNU1NQIHdlIGRvbid0IGVuY2Fwc3VsYXRlIGluIFNQTkVH TyAqLwotCQkJc2VjdXJpdHlfYmxvYiA9IG50bG1zc3BfYmxvYjsKIAkJfQotCX0gZWxzZSBp ZiAocGhhc2UgPT0gTnRMbUF1dGhlbnRpY2F0ZSkgewotCQlyZXEtPmhkci5TZXNzaW9uSWQg PSBzZXMtPlN1aWQ7Ci0JCW50bG1zc3BfYmxvYiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBf TkVHT1RJQVRFX01FU1NBR0UpICsgNTAwLAotCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKLQkJ aWYgKG50bG1zc3BfYmxvYiA9PSBOVUxMKSB7Ci0JCQlyYyA9IC1FTk9NRU07CisKKwkJbXNn ID0gc3BuZWdvX2tleS0+cGF5bG9hZC5kYXRhOworCQkvKiBjaGVjayB2ZXJzaW9uIGZpZWxk IHRvIG1ha2Ugc3VyZSB0aGF0IGNpZnMudXBjYWxsIGlzCisJCSAgIHNlbmRpbmcgdXMgYSBy ZXNwb25zZSBpbiBhbiBleHBlY3RlZCBmb3JtICovCisJCWlmIChtc2ctPnZlcnNpb24gIT0g Q0lGU19TUE5FR09fVVBDQUxMX1ZFUlNJT04pIHsKKwkJCWNpZnNfZGJnKFZGUywgImluY29y cmVjdCB2ZXJzaW9uIG9mIGNpZnMudXBjYWxsICIKKwkJCQkgICAiZXhwZWN0ZWQgJWQgYnV0 IGdvdCAlZCkiLAorCQkJCSAgIENJRlNfU1BORUdPX1VQQ0FMTF9WRVJTSU9OLCBtc2ctPnZl cnNpb24pOworCQkJcmMgPSAtRUtFWVJFSkVDVEVEOwogCQkJZ290byBzc2V0dXBfZXhpdDsK IAkJfQotCQlyYyA9IGJ1aWxkX250bG1zc3BfYXV0aF9ibG9iKG50bG1zc3BfYmxvYiwgJmJs b2JfbGVuZ3RoLCBzZXMsCi0JCQkJCSAgICAgbmxzX2NwKTsKLQkJaWYgKHJjKSB7Ci0JCQlj aWZzX2RiZyhGWUksICJidWlsZF9udGxtc3NwX2F1dGhfYmxvYiBmYWlsZWQgJWRcbiIsCi0J CQkJIHJjKTsKLQkJCWdvdG8gc3NldHVwX2V4aXQ7IC8qIEJCIGRvdWJsZSBjaGVjayBlcnJv ciBoYW5kbGluZyAqLwotCQl9Ci0JCWlmICh1c2Vfc3BuZWdvKSB7Ci0JCQkvKiBibG9iX2xl bmd0aCA9IGJ1aWxkX3NwbmVnb19udGxtc3NwX2Jsb2IoCi0JCQkJCQkJJnNlY3VyaXR5X2Js b2IsCi0JCQkJCQkJYmxvYl9sZW5ndGgsCi0JCQkJCQkJbnRsbXNzcF9ibG9iKTsgKi8KLQkJ CWNpZnNfZGJnKFZGUywgInNwbmVnbyBub3Qgc3VwcG9ydGVkIGZvciBTTUIyIHlldFxuIik7 Ci0JCQlyYyA9IC1FT1BOT1RTVVBQOwotCQkJa2ZyZWUobnRsbXNzcF9ibG9iKTsKKworCQlz ZXMtPmF1dGhfa2V5LnJlc3BvbnNlID0ga21lbWR1cChtc2ctPmRhdGEsIG1zZy0+c2Vzc2tl eV9sZW4sCisJCQkJCQkgR0ZQX0tFUk5FTCk7CisJCWlmICghc2VzLT5hdXRoX2tleS5yZXNw b25zZSkgeworCQkJY2lmc19kYmcoVkZTLAorCQkJCSJLZXJiZXJvcyBjYW4ndCBhbGxvY2F0 ZSAoJXUgYnl0ZXMpIG1lbW9yeSIsCisJCQkJbXNnLT5zZXNza2V5X2xlbik7CisJCQlyYyA9 IC1FTk9NRU07CiAJCQlnb3RvIHNzZXR1cF9leGl0OwotCQl9IGVsc2UgewotCQkJc2VjdXJp dHlfYmxvYiA9IG50bG1zc3BfYmxvYjsKIAkJfQotCX0gZWxzZSB7Ci0JCWNpZnNfZGJnKFZG UywgImlsbGVnYWwgbnRsbXNzcCBwaGFzZVxuIik7Ci0JCXJjID0gLUVJTzsKLQkJZ290byBz c2V0dXBfZXhpdDsKKwkJc2VzLT5hdXRoX2tleS5sZW4gPSBtc2ctPnNlc3NrZXlfbGVuOwor CQlibG9iX2xlbmd0aCA9IG1zZy0+c2VjYmxvYl9sZW47CisJCWlvdlsxXS5pb3ZfYmFzZSA9 IG1zZy0+ZGF0YSArIG1zZy0+c2Vzc2tleV9sZW47OworCQlpb3ZbMV0uaW92X2xlbiA9IGJs b2JfbGVuZ3RoOwogCX0KIAogCS8qIFRlc3Rpbmcgc2hvd3MgdGhhdCBidWZmZXIgb2Zmc2V0 IG11c3QgYmUgYXQgbG9jYXRpb24gb2YgQnVmZmVyWzBdICovCkBAIC03MTAsOCArNzU1LDYg QEAgc3NldHVwX250bG1zc3BfYXV0aGVudGljYXRlOgogCQkJCWNwdV90b19sZTE2KHNpemVv ZihzdHJ1Y3Qgc21iMl9zZXNzX3NldHVwX3JlcSkgLQogCQkJCQkgICAgMSAvKiBwYWQgKi8g LSA0IC8qIHJmYzEwMDEgbGVuICovKTsKIAlyZXEtPlNlY3VyaXR5QnVmZmVyTGVuZ3RoID0g Y3B1X3RvX2xlMTYoYmxvYl9sZW5ndGgpOwotCWlvdlsxXS5pb3ZfYmFzZSA9IHNlY3VyaXR5 X2Jsb2I7Ci0JaW92WzFdLmlvdl9sZW4gPSBibG9iX2xlbmd0aDsKIAogCWluY19yZmMxMDAx X2xlbihyZXEsIGJsb2JfbGVuZ3RoIC0gMSAvKiBwYWQgKi8pOwogCkBAIC03MjIsNiArNzY1 LDcgQEAgc3NldHVwX250bG1zc3BfYXV0aGVudGljYXRlOgogCiAJa2ZyZWUoc2VjdXJpdHlf YmxvYik7CiAJcnNwID0gKHN0cnVjdCBzbWIyX3Nlc3Nfc2V0dXBfcnNwICopaW92WzBdLmlv dl9iYXNlOworCXNlcy0+U3VpZCA9IHJzcC0+aGRyLlNlc3Npb25JZDsKIAlpZiAocmVzcF9i dWZ0eXBlICE9IENJRlNfTk9fQlVGRkVSICYmCiAJICAgIHJzcC0+aGRyLlN0YXR1cyA9PSBT VEFUVVNfTU9SRV9QUk9DRVNTSU5HX1JFUVVJUkVEKSB7CiAJCWlmIChwaGFzZSAhPSBOdExt TmVnb3RpYXRlKSB7CkBAIC03MzksNyArNzgzLDYgQEAgc3NldHVwX250bG1zc3BfYXV0aGVu dGljYXRlOgogCQkvKiBOVExNU1NQIE5lZ290aWF0ZSBzZW50IG5vdyBwcm9jZXNzaW5nIGNo YWxsZW5nZSAocmVzcG9uc2UpICovCiAJCXBoYXNlID0gTnRMbUNoYWxsZW5nZTsgLyogcHJv Y2VzcyBudGxtc3NwIGNoYWxsZW5nZSAqLwogCQlyYyA9IDA7IC8qIE1PUkVfUFJPQ0VTU0lO RyBpcyBub3QgYW4gZXJyb3IgaGVyZSBidXQgZXhwZWN0ZWQgKi8KLQkJc2VzLT5TdWlkID0g cnNwLT5oZHIuU2Vzc2lvbklkOwogCQlyYyA9IGRlY29kZV9udGxtc3NwX2NoYWxsZW5nZShy c3AtPkJ1ZmZlciwKIAkJCQlsZTE2X3RvX2NwdShyc3AtPlNlY3VyaXR5QnVmZmVyTGVuZ3Ro KSwgc2VzKTsKIAl9CkBAIC03OTYsNiArODM5LDEwIEBAIGtleWdlbl9leGl0OgogCQlrZnJl ZShzZXMtPmF1dGhfa2V5LnJlc3BvbnNlKTsKIAkJc2VzLT5hdXRoX2tleS5yZXNwb25zZSA9 IE5VTEw7CiAJfQorCWlmIChzcG5lZ29fa2V5KSB7CisJCWtleV9pbnZhbGlkYXRlKHNwbmVn b19rZXkpOworCQlrZXlfcHV0KHNwbmVnb19rZXkpOworCX0KIAlrZnJlZShzZXMtPm50bG1z c3ApOwogCiAJcmV0dXJuIHJjOwotLSAKMS44LjUuNgoK --------------050707050402040809010405--