From: Ole John Aske Date: February 7 2011 9:48am Subject: bzr push into mysql-5.1 branch (ole.john.aske:3578 to 3579) Bug#59308 List-Archive: http://lists.mysql.com/commits/130535 X-Bug: 59308 Message-Id: <20110207094818.3BB48223@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1NzkgT2xlIEpvaG4gQXNrZQkyMDExLTAyLTA3CiAgICAgIEZpeCBmb3IgYnVnIzU5MzA4OiBJ bmNvcnJlY3QgcmVzdWx0IGZvciBTRUxFQ1QgRElTVElOQ1QgPGNvbD4uLi4gT1JERVIgQlkgPGNv bD4gREVTQy4KICAgICAgICAgICAgCiAgICAgIEFsc28gZml4IGJ1ZyM1OTExMDogTWVtb3J5IGxl YWsgb2YgUVVJQ0tfU0VMRUNUX0kgYWxsb2NhdGVkIG1lbW9yeS4KICAgICAgSW5jbHVkZXMgSsO4 cmdlbiBMw7hsYW5kcyByZXZpZXcgY29tbWVudHMuCiAgICAgICAgICAgIAogICAgICBSb290IGNh dXNlIG9mIHRoZXNlIGJ1Z3MgYXJlIHRoYXQgdGVzdF9pZl9za2lwX3NvcnRfb3JkZXIoKSBkZWNp ZGVkIHRvCiAgICAgIHJldmVydCB0aGUgJ3NraXBfc29ydF9vcmRlcicgZGVzY2lzaW9uIChhbmQg dXNlIGZpbGVzb3J0KSBhZnRlciB0aGUKICAgICAgcXVlcnkgcGxhbiBoYXMgYmVlbiB1cGRhdGVk IHRvIHJlZmxlY3QgYSAnc2tpcCcgb2YgdGhlIHNvcnQgb3JkZXIuCiAgICAgICAgICAgIAogICAg ICBUaGlzIG1pZ2h0IGhhcHBlbiBpbiAnY2hlY2tfcmV2ZXJzZV9vcmRlcjonIGlmIHdlIGhhdmUg YSAKICAgICAgc2VsZWN0LT5xdWljayB3aGljaCBjb3VsZCBub3QgYmUgbWFkZSBkZXNjZW5kaW5n IGJ5IGFwcGVuZGluZyAKICAgICAgYSBRVUlDS19TRUxFQ1RfREVTQy4gKCkuCiAgICAgICAgICAg IAogICAgICBUaGUgb3JpZ2luYWwgJ3NhdmVfcXVpY2snIHdhcyB0aGVuIHJlc3RvcmVkIGFmdGVy IHRoZSBRRVAgaGFzIGJlZW4gbW9kaWZpZWQsCiAgICAgIHdoaWNoIGNhdXNlZDoKICAgICAgICAg ICAgCiAgICAgICAgLSBBbiBpbmNvcnJlY3QgJ3ByZWNvbXB1dGVkX2dyb3VwX2J5PSBUUlVFJyBt YXkgaGF2ZSBiZWVuIHNldCwgCiAgICAgICAgICBhbmQgbm90IHJldmVydGVkLCBhcyBwYXJ0IG9m IHRoZSBhbHJlYWR5IG1vZGlmaWZpZWQgUUVQIChCdWcjNTkzMDgpCiAgICAgICAgLSBBICdzZWxl Y3QtPnF1aWNrJyBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCB3aGljaCB3ZSBmYWlsIHRvIGRlbGV0 ZSAoYnVnIzU5MTEwKS4KICAgICAgICAgICAgCiAgICAgIFRoaXMgZml4IGlzIGEgcmVmYWN0b3Jp Y2F0aW9uIG9mIHRlc3RfaWZfc2tpcF9zb3J0X29yZGVyKCkgd2hlcmUgYWxsIGxvZ2ljCiAgICAg IHJlbGF0ZWQgdG8gbW9kaWZpY2F0aW9uIG9mIFFFUCAoY29udHJvbGxlZCBieSBhcmd1bWVudCAn Ym9vbCBub19jaGFuZ2VzJyksIGlzCiAgICAgIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGVzdF9pZl9z a2lwX3NvcnRfb3JkZXIoKSwgYW5kIGRvbmUgYWZ0ZXIgKmFsbCogJ3Rlc3RfaWZfc2tpcCcKICAg ICAgY2hlY2tzIGhhcyBiZWVuIHBlcmZvcm1lZCAtIGluY2x1ZGluZyB0aGUgJ2NoZWNrX3JldmVy c2Vfb3JkZXI6JyBjaGVja3MuCiAgICAgICAgICAgIAogICAgICBUaGUgcmVmYWN0b3JpY2F0aW9u IGFib3ZlIGNvbnRhaW5zIG5vdyBpbnRlbnRpb25hbCBjaGFuZ2VzIHRvIHRoZSBsb2dpYyB3aGlj aCAKICAgICAgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCiAgICAg ICAgICAgIAogICAgICBGdXJ0aGVybW9yZSwgYSBzbWFsbGVyIHBhcnQgb2YgdGhlIGZpeCBhZGRy ZXNzIHRoZSBoYW5kbGluZyBvZiB0aGUgCiAgICAgIHNlbGVjdC0+cXVpY2sgb2JqZWN0cyB3aGlj aCBtYXkgYWxyZWFkeSBleGlzdHMgd2hlbiB3ZSBjYWxsIAogICAgICAndGVzdF9pZl9za2lwX3Nv cnRfb3JkZXIoKScgKHNhdmVfcXVpY2spIC1hbmQKICAgICAgbmV3IHNlbGVjdC0+cXVpY2sncyBj cmVhdGVkIGR1cmluZyB0ZXN0X2lmX3NraXBfc29ydF9vcmRlcigpOgogICAgICAgICAgICAKICAg ICAgICAtIEJlZm9yZSBuZXcgc2VsZWN0LT5xdWljayBtYXkgYmUgY3JlYXRlZCBieSBjYWxsaW5n IDo6dGVzdF9xdWlja19zZWxlY3QoKSwgd2UKICAgICAgICAgIHNldCAnc2VsZWN0LT5xdWljaz0g MCcgdG8gYXZvaWQgdGhhdCA6OnRlc3RfcXVpY2tfc2VsZWN0KCkgcHJlbWF0dXJlbHkKICAgICAg ICAgIGRlbGV0ZSB0aGUgc2F2ZV9xdWljaydzLiAoQWZ0ZXIgdGhpcyBjYWxsIHdlIG1heSBoYXZl IGJvdGggYSAnc2F2ZV9xdWljaycgCiAgICAgICAgICBhbmQgJ3NlbGVjdC0+cXVpY2snKQogICAg ICAgICAgICAKICAgICAgICAtIEFsbCByZXR1cm5zIGZyb20gOjp0ZXN0X2lmX3NraXBfc29ydF9v cmRlcigpIHdoZXJlIHdlIG1heSBoYXZlIGJvdGggYQogICAgICAgICAgJ3NhdmVfcXVpY2snIGFu ZCBhICdzZWxlY3QtPnF1aWNrJyBoYXMgYmVlbiBjaGFuZ2VkIHRvIGdvdG8ncyB0byB0aGUKICAg ICAgICAgIGV4aXQgcG9pbnRzICdza2lwZWRfc29ydF9vcmRlcjonIG9yICduZWVkX2ZpbGVzb3J0 Oicgd2hlcmUgd2UKICAgICAgICAgIGRlY2lkZSB3aGljaCBvZiB0aGUgUVVJQ0tfU0VMRUNUJ3Mg dG8ga2VlcCwgYW5kIGRlbGV0ZSB0aGUgb3RoZXIuCgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3Fs LXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L29yZGVyX2J5LnRlc3QK ICAgICAgc3FsL3NxbF9zZWxlY3QuY2MKIDM1NzggVmluYXkgRmlzcmVrYXIJMjAxMS0wMi0wNwog ICAgICBCdWcjNTk5NTUgLSBlbmdpbmVzL2Z1bmNzL3BzX3N0cmluZ19ub3RfbnVsbCB0ZXN0IG5l ZWRzIGJldHRlciBjbGVhbnVwCiAgICAgIAogICAgICBDb3JyZWN0aW5nIGNsZWFuIHVwIGNvbW1h bmQgYXQgdGhlIHN0YXJ0IG9mIHRlc3QuCgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvZW5naW5lcy9mdW5jcy9yL3BzX3N0cmluZ19ub3RfbnVsbC5yZXN1bHQKICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvcHNfc3RyaW5nX25vdF9udWxsLnRlc3QKPT09 IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQnCi0tLSBhL215c3Fs LXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQJMjAxMC0wOS0xMyAxMTozMzoxOSArMDAwMAorKysgYi9t eXNxbC10ZXN0L3Ivb3JkZXJfYnkucmVzdWx0CTIwMTEtMDItMDcgMDk6MzY6MjEgKzAwMDAKQEAg LTE2MzgsNCArMTYzOCwyOSBAQCBpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBvc3NpYmxlX2tl eXMJCiAxCVNJTVBMRQl0MQlpbmRleAlOVUxMCWEJOAlOVUxMCTEwCVVzaW5nIGluZGV4OyBVc2lu ZyB0ZW1wb3Jhcnk7IFVzaW5nIGZpbGVzb3J0CiAxCVNJTVBMRQl0MgllcV9yZWYJUFJJTUFSWQlQ UklNQVJZCTQJdGVzdC50MS5iCTEJVXNpbmcgd2hlcmUKIERST1AgVEFCTEUgdDEsIHQyOworIwor IyBCdWcgIzU5MTEwOiBNZW1vcnkgbGVhayBvZiBRVUlDS19TRUxFQ1RfSSBhbGxvY2F0ZWQgbWVt b3J5IAorIyAgYW5kCisjIEJ1ZyAjNTkzMDg6IEluY29ycmVjdCByZXN1bHQgZm9yIAorU0VMRUNU IERJU1RJTkNUIDxjb2w+Li4uIE9SREVSIEJZIDxjb2w+IERFU0MgCisKKyMgVXNlIFZhbGdyaW5k IHRvIGRldGVjdCAjNTkxMTAhCisjCitDUkVBVEUgVEFCTEUgdDEgKGEgSU5ULEtFWSAoYSkpOwor SU5TRVJUIElOVE8gdDEgVkFMVUVTICgxKSwoMiksKDMpLCg0KSwoNSksKDYpLCg3KSwoOCksKDkp LCgxMCk7CitFWFBMQUlOIFNFTEVDVCBESVNUSU5DVCBhLDEgRlJPTSB0MSBXSEVSRSBhIDw+IDEg T1JERVIgQlkgYSBERVNDOworaWQJc2VsZWN0X3R5cGUJdGFibGUJdHlwZQlwb3NzaWJsZV9rZXlz CWtleQlrZXlfbGVuCXJlZglyb3dzCUV4dHJhCisxCVNJTVBMRQl0MQlpbmRleAlhCWEJNQlOVUxM CTEwCVVzaW5nIHdoZXJlOyBVc2luZyBpbmRleDsgVXNpbmcgZmlsZXNvcnQKK1NFTEVDVCBESVNU SU5DVCBhLDEgRlJPTSB0MSBXSEVSRSBhIDw+IDEgT1JERVIgQlkgYSBERVNDOworYQkxCisxMAkx Cis5CTEKKzgJMQorNwkxCis2CTEKKzUJMQorNAkxCiszCTEKKzIJMQorRFJPUCBUQUJMRSB0MTsK IEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Qvb3JkZXJf YnkudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L29yZGVyX2J5LnRlc3QJMjAxMC0wOS0xMyAxMToz MzoxOSArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qvb3JkZXJfYnkudGVzdAkyMDExLTAyLTA3IDA5 OjM2OjIxICswMDAwCkBAIC0xNDkyLDQgKzE0OTIsMjEgQEAgTElNSVQgMjsKIERST1AgVEFCTEUg dDEsIHQyOwogCiAKKy0tZWNobyAjCistLWVjaG8gIyBCdWcgIzU5MTEwOiBNZW1vcnkgbGVhayBv ZiBRVUlDS19TRUxFQ1RfSSBhbGxvY2F0ZWQgbWVtb3J5IAorLS1lY2hvICMgIGFuZAorLS1lY2hv ICMgQnVnICM1OTMwODogSW5jb3JyZWN0IHJlc3VsdCBmb3IgCistLWVjaG8gICAgICAgICAgICAg ICBTRUxFQ1QgRElTVElOQ1QgPGNvbD4uLi4gT1JERVIgQlkgPGNvbD4gREVTQyAKKy0tZWNobwor LS1lY2hvICMgVXNlIFZhbGdyaW5kIHRvIGRldGVjdCAjNTkxMTAhCistLWVjaG8gIworCitDUkVB VEUgVEFCTEUgdDEgKGEgSU5ULEtFWSAoYSkpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxKSwo MiksKDMpLCg0KSwoNSksKDYpLCg3KSwoOCksKDkpLCgxMCk7CisKK0VYUExBSU4gU0VMRUNUIERJ U1RJTkNUIGEsMSBGUk9NIHQxIFdIRVJFIGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7CitTRUxFQ1Qg RElTVElOQ1QgYSwxIEZST00gdDEgV0hFUkUgYSA8PiAxIE9SREVSIEJZIGEgREVTQzsKKworRFJP UCBUQUJMRSB0MTsKKwogLS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxl ICdzcWwvc3FsX3NlbGVjdC5jYycKLS0tIGEvc3FsL3NxbF9zZWxlY3QuY2MJMjAxMS0wMi0wMSAx MjoyMDoxNiArMDAwMAorKysgYi9zcWwvc3FsX3NlbGVjdC5jYwkyMDExLTAyLTA3IDA5OjM2OjIx ICswMDAwCkBAIC0xMzM2NCwxMiArMTMzNjQsMTQgQEAgdGVzdF9pZl9za2lwX3NvcnRfb3JkZXIo Sk9JTl9UQUIgKnRhYixPUgogewogICBpbnQgcmVmX2tleTsKICAgdWludCByZWZfa2V5X3BhcnRz OwotICBpbnQgb3JkZXJfZGlyZWN0aW9uOworICBpbnQgb3JkZXJfZGlyZWN0aW9uPSAwOwogICB1 aW50IHVzZWRfa2V5X3BhcnRzOwogICBUQUJMRSAqdGFibGU9dGFiLT50YWJsZTsKICAgU1FMX1NF TEVDVCAqc2VsZWN0PXRhYi0+c2VsZWN0OwogICBrZXlfbWFwIHVzYWJsZV9rZXlzOwogICBRVUlD S19TRUxFQ1RfSSAqc2F2ZV9xdWljaz0gMDsKKyAgaW50IGJlc3Rfa2V5PSAtMTsKKwogICBEQlVH X0VOVEVSKCJ0ZXN0X2lmX3NraXBfc29ydF9vcmRlciIpOwogICBMSU5UX0lOSVQocmVmX2tleV9w YXJ0cyk7CiAKQEAgLTEzNDczLDEzICsxMzQ3NSwxNCBAQCB0ZXN0X2lmX3NraXBfc29ydF9vcmRl cihKT0lOX1RBQiAqdGFiLE9SCiAgICAgICAgICAgbmV3X3JlZl9rZXlfbWFwLmNsZWFyX2FsbCgp OyAgLy8gRm9yY2UgdGhlIGNyZWF0aW9uIG9mIHF1aWNrIHNlbGVjdAogICAgICAgICAgIG5ld19y ZWZfa2V5X21hcC5zZXRfYml0KG5ld19yZWZfa2V5KTsgLy8gb25seSBmb3IgbmV3X3JlZl9rZXku CiAKKyAgICAgICAgICBzZWxlY3QtPnF1aWNrPSAwOwogICAgICAgICAgIGlmIChzZWxlY3QtPnRl c3RfcXVpY2tfc2VsZWN0KHRhYi0+am9pbi0+dGhkLCBuZXdfcmVmX2tleV9tYXAsIDAsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYi0+am9pbi0+c2VsZWN0X29w dGlvbnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRJT05f Rk9VTkRfUk9XUykgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhB X1BPU19FUlJPUiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFi LT5qb2luLT51bml0LT5zZWxlY3RfbGltaXRfY250LDApIDw9CiAgICAgICAgICAgICAgIDApCi0g ICAgICAgICAgICBEQlVHX1JFVFVSTigwKTsKKyAgICAgICAgICAgIGdvdG8gdXNlX2ZpbGVzb3J0 OwogCX0KICAgICAgICAgcmVmX2tleT0gbmV3X3JlZl9rZXk7CiAgICAgICB9CkBAIC0xMzUwNCw3 ICsxMzUwNyw2IEBAIHRlc3RfaWZfc2tpcF9zb3J0X29yZGVyKEpPSU5fVEFCICp0YWIsT1IKICAg ICBpbnQgYmVzdF9rZXlfZGlyZWN0aW9uPSAwOwogICAgIGhhX3Jvd3MgYmVzdF9yZWNvcmRzPSAw OwogICAgIGRvdWJsZSByZWFkX3RpbWU7Ci0gICAgaW50IGJlc3Rfa2V5PSAtMTsKICAgICBib29s IGlzX2Jlc3RfY292ZXJpbmc9IEZBTFNFOwogICAgIGRvdWJsZSBmYW5vdXQ9IDE7CiAgICAgSk9J TiAqam9pbj0gdGFiLT5qb2luOwpAQCAtMTM2ODEsNzIgKzEzNjgzLDIxIEBAIHRlc3RfaWZfc2tp cF9zb3J0X29yZGVyKEpPSU5fVEFCICp0YWIsT1IKICAgICAgICAgIHRhYi0+am9pbi0+dGFibGVz ID4gdGFiLT5qb2luLT5jb25zdF90YWJsZXMgKyAxKSAmJgogICAgICAgICAgKCh1bnNpZ25lZCkg YmVzdF9rZXkgIT0gdGFibGUtPnMtPnByaW1hcnlfa2V5IHx8CiAgICAgICAgICAgIXRhYmxlLT5m aWxlLT5wcmltYXJ5X2tleV9pc19jbHVzdGVyZWQoKSkpCi0gICAgICBEQlVHX1JFVFVSTigwKTsK KyAgICAgIGdvdG8gdXNlX2ZpbGVzb3J0OwogCiAgICAgaWYgKGJlc3Rfa2V5ID49IDApCiAgICAg ewotICAgICAgYm9vbCBxdWlja19jcmVhdGVkPSBGQUxTRTsKICAgICAgIGlmICh0YWJsZS0+cXVp Y2tfa2V5cy5pc19zZXQoYmVzdF9rZXkpICYmIGJlc3Rfa2V5ICE9IHJlZl9rZXkpCiAgICAgICB7 CiAgICAgICAgIGtleV9tYXAgbWFwOwogICAgICAgICBtYXAuY2xlYXJfYWxsKCk7ICAgICAgIC8v IEZvcmNlIHRoZSBjcmVhdGlvbiBvZiBxdWljayBzZWxlY3QKICAgICAgICAgbWFwLnNldF9iaXQo YmVzdF9rZXkpOyAvLyBvbmx5IGJlc3Rfa2V5LgotICAgICAgICBxdWlja19jcmVhdGVkPSAgICAg ICAgIAotICAgICAgICAgIHNlbGVjdC0+dGVzdF9xdWlja19zZWxlY3Qoam9pbi0+dGhkLCBtYXAs IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luLT5zZWxlY3Rfb3B0 aW9ucyAmIE9QVElPTl9GT1VORF9ST1dTID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEhBX1BPU19FUlJPUiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBqb2luLT51bml0LT5zZWxlY3RfbGltaXRfY250LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCkgPiAwOwotICAgICAgfQotICAgICAgaWYgKCFub19jaGFuZ2VzKQotICAg ICAgewotICAgICAgICAvKiAKLSAgICAgICAgICAgSWYgcmVmX2tleSB1c2VkIGluZGV4IHRyZWUg cmVhZGluZyBvbmx5ICgnVXNpbmcgaW5kZXgnIGluIEVYUExBSU4pLAotICAgICAgICAgICBhbmQg YmVzdF9rZXkgZG9lc24ndCwgdGhlbiByZXZlcnQgdGhlIGRlY2lzaW9uLgotICAgICAgICAqLwot ICAgICAgICBpZiAoIXRhYmxlLT5jb3ZlcmluZ19rZXlzLmlzX3NldChiZXN0X2tleSkpCi0gICAg ICAgICAgdGFibGUtPnNldF9rZXlyZWFkKEZBTFNFKTsKLSAgICAgICAgaWYgKCFxdWlja19jcmVh dGVkKQotCXsKLSAgICAgICAgICB0YWItPmluZGV4PSBiZXN0X2tleTsKLSAgICAgICAgICB0YWIt PnJlYWRfZmlyc3RfcmVjb3JkPSBiZXN0X2tleV9kaXJlY3Rpb24gPiAwID8KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBqb2luX3JlYWRfZmlyc3Q6am9pbl9yZWFkX2xhc3Q7Ci0g ICAgICAgICAgdGFiLT50eXBlPUpUX05FWFQ7ICAgICAgICAgICAvLyBSZWFkIHdpdGggaW5kZXhf Zmlyc3QoKSwgaW5kZXhfbmV4dCgpCi0gICAgICAgICAgaWYgKHNlbGVjdCAmJiBzZWxlY3QtPnF1 aWNrKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZSBzZWxlY3QtPnF1aWNrOwotICAg ICAgICAgICAgc2VsZWN0LT5xdWljaz0gMDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHRh YmxlLT5jb3ZlcmluZ19rZXlzLmlzX3NldChiZXN0X2tleSkpCi0gICAgICAgICAgICB0YWJsZS0+ c2V0X2tleXJlYWQoVFJVRSk7Ci0gICAgICAgICAgdGFibGUtPmZpbGUtPmhhX2luZGV4X29yX3Ju ZF9lbmQoKTsKLSAgICAgICAgICBpZiAoam9pbi0+c2VsZWN0X29wdGlvbnMgJiBTRUxFQ1RfREVT Q1JJQkUpCi0gICAgICAgICAgewotICAgICAgICAgICAgdGFiLT5yZWYua2V5PSAtMTsKLSAgICAg ICAgICAgIHRhYi0+cmVmLmtleV9wYXJ0cz0gMDsKLSAgICAgICAgICAgIGlmIChzZWxlY3RfbGlt aXQgPCB0YWJsZV9yZWNvcmRzKSAKLSAgICAgICAgICAgICAgdGFiLT5saW1pdD0gc2VsZWN0X2xp bWl0OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh0YWItPnR5cGUg IT0gSlRfQUxMKQotICAgICAgICB7Ci0gICAgICAgICAgLyoKLSAgICAgICAgICAgIFdlJ3JlIGFi b3V0IHRvIHVzZSBhIHF1aWNrIGFjY2VzcyB0byB0aGUgdGFibGUuCi0gICAgICAgICAgICBXZSBu ZWVkIHRvIGNoYW5nZSB0aGUgYWNjZXNzIG1ldGhvZCBzbyBhcyB0aGUgcXVpY2sgYWNjZXNzCi0g ICAgICAgICAgICBtZXRob2QgaXMgYWN0dWFsbHkgdXNlZC4KLSAgICAgICAgICAqLwotICAgICAg ICAgIERCVUdfQVNTRVJUKHRhYi0+c2VsZWN0LT5xdWljayk7Ci0gICAgICAgICAgdGFiLT50eXBl PUpUX0FMTDsKLSAgICAgICAgICB0YWItPnVzZV9xdWljaz0xOwotICAgICAgICAgIHRhYi0+cmVm LmtleT0gLTE7Ci0gICAgICAgICAgdGFiLT5yZWYua2V5X3BhcnRzPTA7CQkvLyBEb24ndCB1c2Ug cmVmIGtleS4KLSAgICAgICAgICB0YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBqb2luX2luaXRfcmVh ZF9yZWNvcmQ7Ci0gICAgICAgICAgaWYgKHRhYi0+aXNfdXNpbmdfbG9vc2VfaW5kZXhfc2Nhbigp KQotICAgICAgICAgICAgam9pbi0+dG1wX3RhYmxlX3BhcmFtLnByZWNvbXB1dGVkX2dyb3VwX2J5 PSBUUlVFOwotICAgICAgICAgIC8qCi0gICAgICAgICAgICBUT0RPOiB1cGRhdGUgdGhlIG51bWJl ciBvZiByZWNvcmRzIGluIGpvaW4tPmJlc3RfcG9zaXRpb25zW3RhYmxlbnJdCi0gICAgICAgICAg Ki8KLSAgICAgICAgfQorICAgICAgICBzZWxlY3QtPnF1aWNrPSAwOworICAgICAgICBzZWxlY3Qt PnRlc3RfcXVpY2tfc2VsZWN0KGpvaW4tPnRoZCwgbWFwLCAwLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGpvaW4tPnNlbGVjdF9vcHRpb25zICYgT1BUSU9OX0ZPVU5EX1JPV1Mg PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBX1BPU19FUlJPUiA6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbi0+dW5pdC0+c2VsZWN0X2xpbWl0X2Nu dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICAgICAgIH0KICAgICAg IG9yZGVyX2RpcmVjdGlvbj0gYmVzdF9rZXlfZGlyZWN0aW9uOwogICAgICAgLyoKQEAgLTEzNzU5 LDEwICsxMzcxMCwxMiBAQCB0ZXN0X2lmX3NraXBfc29ydF9vcmRlcihKT0lOX1RBQiAqdGFiLE9S CiAgICAgICAgIHNhdmVkX2Jlc3Rfa2V5X3BhcnRzIDogIGJlc3Rfa2V5X3BhcnRzOwogICAgIH0K ICAgICBlbHNlCi0gICAgICBEQlVHX1JFVFVSTigwKTsgCisgICAgICBnb3RvIHVzZV9maWxlc29y dDsKICAgfSAKIAogY2hlY2tfcmV2ZXJzZV9vcmRlcjogICAgICAgICAgICAgICAgICAKKyAgREJV R19BU1NFUlQob3JkZXJfZGlyZWN0aW9uICE9IDApOworCiAgIGlmIChvcmRlcl9kaXJlY3Rpb24g PT0gLTEpCQkvLyBJZiBPUkRFUiBCWSAuLi4gREVTQwogICB7CiAgICAgaWYgKHNlbGVjdCAmJiBz ZWxlY3QtPnF1aWNrKQpAQCAtMTM3NzEsOSArMTM3MjQsMTAgQEAgY2hlY2tfcmV2ZXJzZV9vcmRl cjogICAgICAgICAgICAgICAgICAKIAlEb24ndCByZXZlcnNlIHRoZSBzb3J0IG9yZGVyLCBpZiBp dCdzIGFscmVhZHkgZG9uZS4KICAgICAgICAgKEluIHNvbWUgY2FzZXMgdGVzdF9pZl9vcmRlcl9i eV9rZXkoKSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzCiAgICAgICAqLwotICAgICAgaWYg KCFzZWxlY3QtPnF1aWNrLT5yZXZlcnNlX3NvcnRlZCgpKQorICAgICAgaWYgKHNlbGVjdC0+cXVp Y2stPnJldmVyc2Vfc29ydGVkKCkpCisgICAgICAgIGdvdG8gc2tpcHBlZF9maWxlc29ydDsKKyAg ICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgUVVJQ0tfU0VMRUNUX0RFU0MgKnRtcDsKICAgICAg ICAgaW50IHF1aWNrX3R5cGU9IHNlbGVjdC0+cXVpY2stPmdldF90eXBlKCk7CiAgICAgICAgIGlm IChxdWlja190eXBlID09IFFVSUNLX1NFTEVDVF9JOjpRU19UWVBFX0lOREVYX01FUkdFIHx8CiAg ICAgICAgICAgICBxdWlja190eXBlID09IFFVSUNLX1NFTEVDVF9JOjpRU19UWVBFX1JPUl9JTlRF UlNFQ1QgfHwKQEAgLTEzNzgxLDM5ICsxMzczNSwxMzIgQEAgY2hlY2tfcmV2ZXJzZV9vcmRlcjog ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHF1aWNrX3R5cGUgPT0gUVVJQ0tfU0VMRUNU X0k6OlFTX1RZUEVfR1JPVVBfTUlOX01BWCkKICAgICAgICAgewogICAgICAgICAgIHRhYi0+bGlt aXQ9IDA7Ci0gICAgICAgICAgc2VsZWN0LT5xdWljaz0gc2F2ZV9xdWljazsKLSAgICAgICAgICBE QlVHX1JFVFVSTigwKTsgICAgICAgICAgICAgICAgICAgLy8gVXNlIGZpbGVzb3J0CisgICAgICAg ICAgZ290byB1c2VfZmlsZXNvcnQ7ICAgICAgICAgICAgICAgLy8gVXNlIGZpbGVzb3J0CiAgICAg ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAvKiBPUkRFUiBCWSByYW5nZV9rZXkgREVTQyAq LwotCXRtcD0gbmV3IFFVSUNLX1NFTEVDVF9ERVNDKChRVUlDS19SQU5HRV9TRUxFQ1QqKShzZWxl Y3QtPnF1aWNrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfa2V5 X3BhcnRzKTsKLQlpZiAoIXRtcCB8fCB0bXAtPmVycm9yKQotCXsKLQkgIGRlbGV0ZSB0bXA7Ci0g ICAgICAgICAgc2VsZWN0LT5xdWljaz0gc2F2ZV9xdWljazsKLSAgICAgICAgICB0YWItPmxpbWl0 PSAwOwotCSAgREJVR19SRVRVUk4oMCk7CQkvLyBSZXZlcnNlIHNvcnQgbm90IHN1cHBvcnRlZAot CX0KLQlzZWxlY3QtPnF1aWNrPXRtcDsKICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAodGFi LT50eXBlICE9IEpUX05FWFQgJiYgdGFiLT50eXBlICE9IEpUX1JFRl9PUl9OVUxMICYmCi0gICAg ICAgICAgICAgdGFiLT5yZWYua2V5ID49IDAgJiYgdGFiLT5yZWYua2V5X3BhcnRzIDw9IHVzZWRf a2V5X3BhcnRzKQorICB9CisKKyAgLyoKKyAgICBVcGRhdGUgcXVlcnkgcGxhbiB3aXRoIGFjY2Vz cyBwYXR0ZXJuIGZvciBkb2luZyAKKyAgICBvcmRlcmVkIGFjY2VzcyBhY2NvcmRpbmcgdG8gd2hh dCB3ZSBoYXZlIGRlY2lkZWQKKyAgICBhYm92ZS4KKyAgKi8KKyAgaWYgKCFub19jaGFuZ2VzKSAv LyBXZSBhcmUgYWxsb3dlZCB0byB1cGRhdGUgUUVQCisgIHsKKyAgICBpZiAoYmVzdF9rZXkgPj0g MCkKICAgICB7Ci0gICAgICAvKgotCVNFTEVDVCAqIEZST00gdDEgV0hFUkUgYT0xIE9SREVSIEJZ IGEgREVTQyxiIERFU0MKKyAgICAgIGJvb2wgcXVpY2tfY3JlYXRlZD0gCisgICAgICAgIChzZWxl Y3QgJiYgc2VsZWN0LT5xdWljayAmJiBzZWxlY3QtPnF1aWNrIT1zYXZlX3F1aWNrKTsKIAotCVVz ZSBhIHRyYXZlcnNhbCBmdW5jdGlvbiB0aGF0IHN0YXJ0cyBieSByZWFkaW5nIHRoZSBsYXN0IHJv dwotCXdpdGgga2V5IHBhcnQgKEEpIGFuZCB0aGVuIHRyYXZlcnNlIHRoZSBpbmRleCBiYWNrd2Fy ZHMuCisgICAgICAvKiAKKyAgICAgICAgIElmIHJlZl9rZXkgdXNlZCBpbmRleCB0cmVlIHJlYWRp bmcgb25seSAoJ1VzaW5nIGluZGV4JyBpbiBFWFBMQUlOKSwKKyAgICAgICAgIGFuZCBiZXN0X2tl eSBkb2Vzbid0LCB0aGVuIHJldmVydCB0aGUgZGVjaXNpb24uCiAgICAgICAqLwotICAgICAgdGFi LT5yZWFkX2ZpcnN0X3JlY29yZD0gam9pbl9yZWFkX2xhc3Rfa2V5OwotICAgICAgdGFiLT5yZWFk X3JlY29yZC5yZWFkX3JlY29yZD0gam9pbl9yZWFkX3ByZXZfc2FtZTsKKyAgICAgIGlmICghdGFi bGUtPmNvdmVyaW5nX2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkKKyAgICAgICAgdGFibGUtPnNldF9r ZXlyZWFkKEZBTFNFKTsKKyAgICAgIGlmICghcXVpY2tfY3JlYXRlZCkKKyAgICAgIHsKKyAgICAg ICAgaWYgKHNlbGVjdCkgICAgICAgICAgICAgICAgICAvLyBUaHJvdyBhbnkgZXhpc3RpbmcgcXVp Y2sgc2VsZWN0CisgICAgICAgICAgc2VsZWN0LT5xdWljaz0gMDsgICAgICAgICAgLy8gQ2xlYW51 cCBlaXRoZXIgcmVzZXQgdG8gc2F2ZV9xdWljaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBvciAnZGVsZXRlIHNhdmVfcXVpY2snCisgICAgICAgIHRhYi0+aW5kZXg9 IGJlc3Rfa2V5OworICAgICAgICB0YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBvcmRlcl9kaXJlY3Rp b24gPiAwID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9yZWFkX2ZpcnN0 OmpvaW5fcmVhZF9sYXN0OworICAgICAgICB0YWItPnR5cGU9SlRfTkVYVDsgICAgICAgICAgIC8v IFJlYWQgd2l0aCBpbmRleF9maXJzdCgpLCBpbmRleF9uZXh0KCkKKworICAgICAgICBpZiAodGFi bGUtPmNvdmVyaW5nX2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkKKyAgICAgICAgICB0YWJsZS0+c2V0 X2tleXJlYWQoVFJVRSk7CisgICAgICAgIHRhYmxlLT5maWxlLT5oYV9pbmRleF9vcl9ybmRfZW5k KCk7CisgICAgICAgIGlmICh0YWItPmpvaW4tPnNlbGVjdF9vcHRpb25zICYgU0VMRUNUX0RFU0NS SUJFKQorICAgICAgICB7CisgICAgICAgICAgdGFiLT5yZWYua2V5PSAtMTsKKyAgICAgICAgICB0 YWItPnJlZi5rZXlfcGFydHM9IDA7CisgICAgICAgICAgaWYgKHNlbGVjdF9saW1pdCA8IHRhYmxl LT5maWxlLT5zdGF0cy5yZWNvcmRzKSAKKyAgICAgICAgICAgIHRhYi0+bGltaXQ9IHNlbGVjdF9s aW1pdDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZiAodGFiLT50eXBlICE9IEpU X0FMTCkKKyAgICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICBXZSdyZSBhYm91dCB0byB1c2Ug YSBxdWljayBhY2Nlc3MgdG8gdGhlIHRhYmxlLgorICAgICAgICAgIFdlIG5lZWQgdG8gY2hhbmdl IHRoZSBhY2Nlc3MgbWV0aG9kIHNvIGFzIHRoZSBxdWljayBhY2Nlc3MKKyAgICAgICAgICBtZXRo b2QgaXMgYWN0dWFsbHkgdXNlZC4KKyAgICAgICAgKi8KKyAgICAgICAgREJVR19BU1NFUlQodGFi LT5zZWxlY3QtPnF1aWNrKTsKKyAgICAgICAgdGFiLT50eXBlPUpUX0FMTDsKKyAgICAgICAgdGFi LT51c2VfcXVpY2s9MTsKKyAgICAgICAgdGFiLT5yZWYua2V5PSAtMTsKKyAgICAgICAgdGFiLT5y ZWYua2V5X3BhcnRzPTA7CQkvLyBEb24ndCB1c2UgcmVmIGtleS4KKyAgICAgICAgdGFiLT5yZWFk X2ZpcnN0X3JlY29yZD0gam9pbl9pbml0X3JlYWRfcmVjb3JkOworICAgICAgICBpZiAodGFiLT5p c191c2luZ19sb29zZV9pbmRleF9zY2FuKCkpCisgICAgICAgICAgdGFiLT5qb2luLT50bXBfdGFi bGVfcGFyYW0ucHJlY29tcHV0ZWRfZ3JvdXBfYnk9IFRSVUU7CisgICAgICAgIC8qCisgICAgICAg ICAgVE9ETzogdXBkYXRlIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiBqb2luLT5iZXN0X3Bvc2l0 aW9uc1t0YWJsZW5yXQorICAgICAgICAqLworICAgICAgfQorICAgIH0gLy8gYmVzdF9rZXkgPj0g MAorCisgICAgaWYgKG9yZGVyX2RpcmVjdGlvbiA9PSAtMSkJCS8vIElmIE9SREVSIEJZIC4uLiBE RVNDCisgICAgeworICAgICAgaWYgKHNlbGVjdCAmJiBzZWxlY3QtPnF1aWNrKQorICAgICAgewor ICAgICAgICBRVUlDS19TRUxFQ1RfREVTQyAqdG1wOworICAgICAgICAvKiBPUkRFUiBCWSByYW5n ZV9rZXkgREVTQyAqLworICAgICAgICB0bXA9IG5ldyBRVUlDS19TRUxFQ1RfREVTQygoUVVJQ0tf UkFOR0VfU0VMRUNUKikoc2VsZWN0LT5xdWljayksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VkX2tleV9wYXJ0cyk7CisgICAgICAgIGlmICh0bXAgJiYgc2VsZWN0LT5x dWljayA9PSBzYXZlX3F1aWNrKQorICAgICAgICAgIHNhdmVfcXVpY2s9IDA7ICAgIC8vIDo6UVVJ Q0tfU0VMRUNUX0RFU0MgY29uc3VtZWQgaXQKKworICAgICAgICBpZiAoIXRtcCB8fCB0bXAtPmVy cm9yKQorICAgICAgICB7CisgICAgICAgICAgZGVsZXRlIHRtcDsKKyAgICAgICAgICB0YWItPmxp bWl0PSAwOworICAgICAgICAgIGdvdG8gdXNlX2ZpbGVzb3J0OyAgICAgICAgICAgLy8gUmV2ZXJz ZSBzb3J0IGZhaWxlZCAtPiBmaWxlc29ydAorICAgICAgICB9CisgICAgICAgIHNlbGVjdC0+cXVp Y2s9IHRtcDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKHRhYi0+dHlwZSAhPSBKVF9ORVhUICYm IHRhYi0+dHlwZSAhPSBKVF9SRUZfT1JfTlVMTCAmJgorICAgICAgICAgICAgICAgdGFiLT5yZWYu a2V5ID49IDAgJiYgdGFiLT5yZWYua2V5X3BhcnRzIDw9IHVzZWRfa2V5X3BhcnRzKQorICAgICAg eworICAgICAgICAvKgorICAgICAgICAgIFNFTEVDVCAqIEZST00gdDEgV0hFUkUgYT0xIE9SREVS IEJZIGEgREVTQyxiIERFU0MKKworICAgICAgICAgIFVzZSBhIHRyYXZlcnNhbCBmdW5jdGlvbiB0 aGF0IHN0YXJ0cyBieSByZWFkaW5nIHRoZSBsYXN0IHJvdworICAgICAgICAgIHdpdGgga2V5IHBh cnQgKEEpIGFuZCB0aGVuIHRyYXZlcnNlIHRoZSBpbmRleCBiYWNrd2FyZHMuCisgICAgICAgICov CisgICAgICAgIHRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IGpvaW5fcmVhZF9sYXN0X2tleTsKKyAg ICAgICAgdGFiLT5yZWFkX3JlY29yZC5yZWFkX3JlY29yZD0gam9pbl9yZWFkX3ByZXZfc2FtZTsK KyAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+cXVpY2spCisg ICAgICBzZWxlY3QtPnF1aWNrLT5zb3J0ZWQ9IDE7CisKKyAgfSAvLyBRRVAgaGFzIGJlZW4gbW9k aWZpZWQKKworICAvKgorICAgIENsZWFudXA6CisgICAgV2UgbWF5IGhhdmUgYm90aCBhICdzZWxl Y3QtPnF1aWNrJyBhbmQgJ3NhdmVfcXVpY2snIChvcmlnaW5hbCkKKyAgICBhdCB0aGlzIHBvaW50 LiBEZWxldGUgdGhlIG9uZSB0aGF0IHdlIHdhbid0IHVzZS4KKyAgKi8KKworc2tpcHBlZF9maWxl c29ydDoKKyAgLy8gS2VlcCBjdXJyZW50IChvcmRlcmVkKSBzZWxlY3QtPnF1aWNrIAorICBpZiAo c2VsZWN0ICYmIHNhdmVfcXVpY2sgIT0gc2VsZWN0LT5xdWljaykKKyAgeworICAgIGRlbGV0ZSBz YXZlX3F1aWNrOworICAgIHNhdmVfcXVpY2s9IE5VTEw7CiAgIH0KLSAgZWxzZSBpZiAoc2VsZWN0 ICYmIHNlbGVjdC0+cXVpY2spCi0gICAgc2VsZWN0LT5xdWljay0+c29ydGVkPSAxOwogICBEQlVH X1JFVFVSTigxKTsKKwordXNlX2ZpbGVzb3J0OgorICAvLyBSZXN0b3JlIG9yaWdpbmFsIHNhdmVf cXVpY2sKKyAgaWYgKHNlbGVjdCAmJiBzZWxlY3QtPnF1aWNrICE9IHNhdmVfcXVpY2spCisgIHsK KyAgICBkZWxldGUgc2VsZWN0LT5xdWljazsKKyAgICBzZWxlY3QtPnF1aWNrPSBzYXZlX3F1aWNr OworICB9CisgIERCVUdfUkVUVVJOKDApOwogfQogCiAKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2Vs ZXNzIGZvciBwdXNoIGVtYWlscyku