From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id 94B1F22047 for ; Mon, 28 May 2018 04:51:58 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CyXW6jsYpkn4 for ; Mon, 28 May 2018 04:51:58 -0400 (EDT) Received: from f317.i.mail.ru (f317.i.mail.ru [128.140.169.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id A078621B8B for ; Mon, 28 May 2018 04:51:57 -0400 (EDT) From: =?UTF-8?B?SXZhbiBLb3B0ZWxvdg==?= Subject: [tarantool-patches] =?UTF-8?B?UmU6IFtQQVRDSF0gc3FsOiBhZGQgaW5kZXhfZGVmIHRvIHN0cnVjdCBJbmRl?= =?UTF-8?B?eCAoZml4ZWQgdmVyc2lvbik=?= MIME-Version: 1.0 Date: Mon, 28 May 2018 11:51:54 +0300 Message-ID: <1527497514.998361944@f317.i.mail.ru> Content-Type: multipart/mixed; boundary="----WJ6LXu1I1tnYqBoLyrHhMCroBROrfopE-d9ojyW4ae7UHrHXf-1527497514" Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-subscribe: List-owner: List-post: List-archive: To: =?UTF-8?B?dGFyYW50b29sLXBhdGNoZXM=?= Cc: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= ------WJ6LXu1I1tnYqBoLyrHhMCroBROrfopE-d9ojyW4ae7UHrHXf-1527497514 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 ------WJ6LXu1I1tnYqBoLyrHhMCroBROrfopE-d9ojyW4ae7UHrHXf-1527497514 Content-Type: application/x-patch; name="=?UTF-8?B?MDAwMS1zcWwtYWRkLWluZGV4X2RlZi10by1JbmRleC1maXhlZC1JbmRleC1w?= =?UTF-8?B?cm9wLXRvLnBhdGNo?=" Content-Disposition: attachment; filename="=?UTF-8?B?MDAwMS1zcWwtYWRkLWluZGV4X2RlZi10by1JbmRleC1maXhlZC1JbmRleC1w?= =?UTF-8?B?cm9wLXRvLnBhdGNo?=" Content-Transfer-Encoding: base64 RnJvbSA4MzUyNzMwYzFmY2VjZGUxODIzZjNiOTM1Yzg0NGQwZDJkM2IwNDIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJdmFuIEtvcHRlbG92IDxpdmFuLmtvcHRlbG92QHRhcmFudG9v bC5vcmc+CkRhdGU6IEZyaSwgMjUgTWF5IDIwMTggMTk6MTE6MzUgKzAzMDAKU3ViamVjdDogW1BB VENIXSBzcWw6IGFkZCBpbmRleF9kZWYgdG8gSW5kZXgsIGZpeGVkIEluZGV4LT5wcm9wIHRvCiBJ bmRleC0+ZGVmLT5wcm9wCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp bjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgZXZl cnkgc3FsaXRlIHN0cnVjdCBJbmRleCBpcyBjcmVhdGVkIHdpdGggdG50IHN0cnVjdAppbmRleF9k ZWYgaW5zaWRlLiBUaGlzIGFsbG93cyB1cyB0byB1c2UgdG50IGluZGV4X2RlZiBpbiB3b3JrCndp dGggc3FsaXRlIGluZGV4ZXMgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHdpdGggdG50IGluZGV4IGFu ZCBpcyBhCnN0ZXAgdG8gcmVtb3ZlIHNxbGl0ZSBJbmRleCB3aXRoIHRudCBpbmRleC4KSG93ZXZl ciBzcWxpdGUgSW5kZXggYW5kIHRudCBpbmRleCBhcmUgbm90IGludGVyY2hhbmdlYWJsZQooZS5n LiBzcWxpdGUgaW5kZXggdXNlIC0xIGZvciBpbmRleCBwYXJ0IHRoYXQgcmVwcmVzZW50CnBrIGlu dGVnZXIgY29sdW1uIGJ1dCB0bnQgaW5kZXggcGFydCBjYW7igJl0IGRvIHRoYXQgYXMKdGhleSBh cmUgdW5zaWduZWQgaW50cykuCgpOZWVkZWQgZm9yOiAjMzM2OQpnaXRodWIgYnJhbmNoOiBodHRw czovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC90cmVlL3NiL2doLTMzNjktdXNlLWlu ZGV4LWRlZi1pbi1zZWxlY3QtYW5kLXdoZXJlCi0tLQogc3JjL2JveC9zcWwvYnVpbGQuYyAgICAg fCAyMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBz cmMvYm94L3NxbC9zZWxlY3QuYyAgICB8ICAgMiArLQogc3JjL2JveC9zcWwvc3FsaXRlSW50Lmgg fCAgIDEgKwogc3JjL2JveC9zcWwvd2hlcmUuYyAgICAgfCAgMTkgKysrKy0KIHRlc3QvYm94L3N1 aXRlLmluaSAgICAgIHwgICAyICstCiA1IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRpb25zKCsp LCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYm94L3NxbC9idWlsZC5jIGIvc3Jj L2JveC9zcWwvYnVpbGQuYwppbmRleCBlMzc2Mjk1OWUuLjg4MjBkODk3MiAxMDA2NDQKLS0tIGEv c3JjL2JveC9zcWwvYnVpbGQuYworKysgYi9zcmMvYm94L3NxbC9idWlsZC5jCkBAIC0yNTEsNiAr MjUxLDggQEAgc3FsaXRlM0xvY2F0ZUluZGV4KHNxbGl0ZTMgKiBkYiwgY29uc3QgY2hhciAqek5h bWUsIGNvbnN0IGNoYXIgKnpUYWJsZSkKIHN0YXRpYyB2b2lkCiBmcmVlSW5kZXgoc3FsaXRlMyAq IGRiLCBJbmRleCAqIHApCiB7CisJaWYgKHAtPmRlZiAhPSBOVUxMKQorCQlpbmRleF9kZWZfZGVs ZXRlKHAtPmRlZik7CiAJc3FsX2V4cHJfZnJlZShkYiwgcC0+cFBhcnRJZHhXaGVyZSwgZmFsc2Up OwogCXNxbGl0ZTNFeHByTGlzdERlbGV0ZShkYiwgcC0+YUNvbEV4cHIpOwogCXNxbGl0ZTNEYkZy ZWUoZGIsIHAtPnpDb2xBZmYpOwpAQCAtMTEyMCwyNSArMTEyMiw5IEBAIHN0cnVjdCBjb2xsICoK IHNxbF9pbmRleF9jb2xsYXRpb24oSW5kZXggKmlkeCwgdWludDMyX3QgY29sdW1uLCB1aW50MzJf dCAqY29sbF9pZCkKIHsKIAlhc3NlcnQoaWR4ICE9IE5VTEwpOwotCXVpbnQzMl90IHNwYWNlX2lk ID0gU1FMSVRFX1BBR0VOT19UT19TUEFDRUlEKGlkeC0+cFRhYmxlLT50bnVtKTsKLQlzdHJ1Y3Qg c3BhY2UgKnNwYWNlID0gc3BhY2VfYnlfaWQoc3BhY2VfaWQpOwotCi0JYXNzZXJ0KGNvbHVtbiA8 IGlkeC0+bkNvbHVtbik7Ci0JLyoKLQkgKiBJZiBzcGFjZSBpcyBzdGlsbCB1bmRlciBjb25zdHJ1 Y3Rpb24sIG9yIGl0IGlzCi0JICogYW4gZXBoZW1lcmFsIHNwYWNlLCB0aGVuIGZldGNoIGNvbGxh dGlvbiBmcm9tCi0JICogU1FMIGludGVybmFsIHN0cnVjdHVyZS4KLQkgKi8KLQlpZiAoc3BhY2Ug PT0gTlVMTCkgewotCQlhc3NlcnQoY29sdW1uIDwgaWR4LT5uQ29sdW1uKTsKLQkJKmNvbGxfaWQg PSBpZHgtPmNvbGxfaWRfYXJyYXlbY29sdW1uXTsKLQkJcmV0dXJuIGlkeC0+Y29sbF9hcnJheVtj b2x1bW5dOwotCX0KLQotCXN0cnVjdCBrZXlfZGVmICprZXlfZGVmID0gc3FsX2luZGV4X2tleV9k ZWYoaWR4KTsKLQlhc3NlcnQoa2V5X2RlZiAhPSBOVUxMICYmIGtleV9kZWYtPnBhcnRfY291bnQg Pj0gY29sdW1uKTsKLQkqY29sbF9pZCA9IGtleV9kZWYtPnBhcnRzW2NvbHVtbl0uY29sbF9pZDsK LQlyZXR1cm4ga2V5X2RlZi0+cGFydHNbY29sdW1uXS5jb2xsOworCWFzc2VydChpZHgtPmRlZiAh PSBOVUxMKTsKKwkqY29sbF9pZCA9IGlkeC0+ZGVmLT5rZXlfZGVmLT5wYXJ0c1tjb2x1bW5dLmNv bGxfaWQ7CisJcmV0dXJuIGlkeC0+ZGVmLT5rZXlfZGVmLT5wYXJ0c1tjb2x1bW5dLmNvbGw7CiB9 CiAKIGVudW0gc29ydF9vcmRlcgpAQCAtMjgxMCwxNCArMjc5NiwxNTIgQEAgYm9vbAogaW5kZXhf aXNfdW5pcXVlKEluZGV4ICppZHgpCiB7CiAJYXNzZXJ0KGlkeCAhPSBOVUxMKTsKLQl1aW50MzJf dCBzcGFjZV9pZCA9IFNRTElURV9QQUdFTk9fVE9fU1BBQ0VJRChpZHgtPnRudW0pOwotCXVpbnQz Ml90IGluZGV4X2lkID0gU1FMSVRFX1BBR0VOT19UT19JTkRFWElEKGlkeC0+dG51bSk7Ci0Jc3Ry dWN0IHNwYWNlICpzcGFjZSA9IHNwYWNlX2J5X2lkKHNwYWNlX2lkKTsKLQlhc3NlcnQoc3BhY2Ug IT0gTlVMTCk7Ci0Jc3RydWN0IGluZGV4ICp0bnRfaW5kZXggPSBzcGFjZV9pbmRleChzcGFjZSwg aW5kZXhfaWQpOwotCWFzc2VydCh0bnRfaW5kZXggIT0gTlVMTCk7CisJYXNzZXJ0KGlkeC0+ZGVm ICE9IE5VTEwpOworCXJldHVybiBpZHgtPmRlZi0+b3B0cy5pc191bmlxdWU7Cit9CisKK3VpbnQz Ml90CitnZXRfbmV3X2lpZChJbmRleCAqaW5kZXhlcykKK3sKKwl1aW50MzJfdCBtYXhfaWlkID0g MDsKKwlJbmRleCAqaWR4OworCisJaWYgKGluZGV4ZXMgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisK Kwlmb3IgKGlkeCA9IGluZGV4ZXM7IGlkeDsgaWR4ID0gaWR4LT5wTmV4dCkKKwkJbWF4X2lpZCA9 IGlkeC0+ZGVmLT5paWQgPiBtYXhfaWlkID8gaWR4LT5kZWYtPmlpZCA6IG1heF9paWQ7CisKKwly ZXR1cm4gbWF4X2lpZCArIDE7Cit9CisKK3ZvaWQKK2FwcGVuZChzdHJ1Y3QgcmVnaW9uICpyLCBj b25zdCBjaGFyICpzdHIsIGNoYXIgKipzcWxfYXJyLCBpbnQgaWR4LCBpbnQgdG90YWxfc3FsX3N0 cl9zaXplKQoreworCXNxbF9hcnJbaWR4XSA9IHJlZ2lvbl9hbGxvYyhyLCBzdHJsZW4oc3RyKSk7 CisJc3RyY3B5KHNxbF9hcnJbaWR4XSwgc3RyKTsKKwl0b3RhbF9zcWxfc3RyX3NpemUgKz0gc3Ry bGVuKHN0cik7Cit9CisKK2NoYXIgKgorY3JlYXRlX3NxbChjb25zdCBjaGFyICppZHhfbmFtZSwg c3RydWN0IHNwYWNlX2RlZiAqc3BhY2VfZGVmLCBFeHByTGlzdCAqZXhwcl9saXN0KQoreworCXN0 cnVjdCByZWdpb24gKnIgPSAmZmliZXIoKS0+Z2M7CisJLyoKKwkgKiBDUkVBVEVfSU5ERVhfICsg SU5ERVhfTkFNRSArIF9PTl8gKyBUQUJMRV9OQU1FICsgXygKKwkgKi8KKwl1aW50MzJfdCBzcWxf cGFydHNfY291bnQgPSA1OworCUV4cHIgKmNvbHVtbl9leHByOworCWZvciAodWludDMyX3QgaSA9 IDA7IGkgPCAodWludDMyX3QpIGV4cHJfbGlzdC0+bkV4cHI7IGkrKyl7CisJCWNvbHVtbl9leHBy ID0gc3FsaXRlM0V4cHJTa2lwQ29sbGF0ZShleHByX2xpc3QtPmFbaV0ucEV4cHIpOworCQlzcWxf cGFydHNfY291bnQgKz0gZXhwcl9saXN0LT5hW2ldLnBFeHByID09IGNvbHVtbl9leHByID8gMiA6 IDQ7CisJfQorCisJc2l6ZV90IHRvdGFsX3NxbF9zdHJfc2l6ZSA9IDA7CisKKwljaGFyICoqc3Fs ID0gcmVnaW9uX2FsbG9jKHIsIHNpemVvZihjaGFyKikgKiBzcWxfcGFydHNfY291bnQpOworCisJ Y2hhciAqQ1JFQVRFX0lOREVYID0gIkNSRUFURSBJTkRFWCAiOworCWFwcGVuZChyLCBDUkVBVEVf SU5ERVgsIHNxbCwgMCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKwlhcHBlbmQociwgaWR4X25hbWUs IHNxbCwgMSwgdG90YWxfc3FsX3N0cl9zaXplKTsKKworCWNoYXIgKk9OID0gIiBPTiAiOworCWFw cGVuZChyLCBPTiwgc3FsLCAyLCB0b3RhbF9zcWxfc3RyX3NpemUpOworCisJY2hhciAqbmFtZSA9 IHNwYWNlX2RlZi0+bmFtZTsKKwlhcHBlbmQociwgbmFtZSwgc3FsLCAzLCB0b3RhbF9zcWxfc3Ry X3NpemUpOworCWFwcGVuZChyLCAiICgiLCBzcWwsIDQsIHRvdGFsX3NxbF9zdHJfc2l6ZSk7CisK KwlFeHByICpjb2xsYXRpb25fZXhwcjsKKwl1aW50MzJfdCBzcWxfaWR4ID0gNTsKKwlmb3IgKGlu dCBpID0gMDsgaSA8IGV4cHJfbGlzdC0+bkV4cHI7IGkrKyl7CisJCWNvbHVtbl9leHByID0gc3Fs aXRlM0V4cHJTa2lwQ29sbGF0ZShleHByX2xpc3QtPmFbaV0ucEV4cHIpOworCQljb2xsYXRpb25f ZXhwciA9IGV4cHJfbGlzdC0+YVtpXS5wRXhwciA9PSBjb2x1bW5fZXhwciA/CisJCQkJIE5VTEwg OiBleHByX2xpc3QtPmFbaV0ucEV4cHI7CisKKwkJbmFtZSA9IHNwYWNlX2RlZi0+ZmllbGRzW2Nv bHVtbl9leHByLT5pQ29sdW1uXS5uYW1lOworCisJCWlmIChjb2xsYXRpb25fZXhwciA9PSBOVUxM KXsKKwkJCWFwcGVuZChyLCBuYW1lLCBzcWwsIHNxbF9pZHgsIHRvdGFsX3NxbF9zdHJfc2l6ZSk7 CisJCQlzcWxfaWR4Kys7CiAKLQlyZXR1cm4gdG50X2luZGV4LT5kZWYtPm9wdHMuaXNfdW5pcXVl OworCQkJYXBwZW5kKHIsICIsICIsIHNxbCwgc3FsX2lkeCwgdG90YWxfc3FsX3N0cl9zaXplKTsK KwkJCXNxbF9pZHgrKzsKKworCQl9IGVsc2UgeworCQkJYXBwZW5kKHIsIG5hbWUsIHNxbCwgc3Fs X2lkeCwgdG90YWxfc3FsX3N0cl9zaXplKTsKKwkJCXNxbF9pZHgrKzsKKworCQkJY2hhciAqQ09M TEFURSA9ICIgQ09MTEFURSAiOworCQkJYXBwZW5kKHIsIENPTExBVEUsIHNxbCwgc3FsX2lkeCwg dG90YWxfc3FsX3N0cl9zaXplKTsKKwkJCXNxbF9pZHgrKzsKKworCQkJY2hhciAqY29sbF9uYW1l ID0gY29sbGF0aW9uX2V4cHItPnUuelRva2VuOworCQkJYXBwZW5kKHIsIGNvbGxfbmFtZSwgc3Fs LCBzcWxfaWR4LCB0b3RhbF9zcWxfc3RyX3NpemUpOworCQkJc3FsX2lkeCsrOworCisJCQlhcHBl bmQociwgIiwgIiwgc3FsLCBzcWxfaWR4LCB0b3RhbF9zcWxfc3RyX3NpemUpOworCQkJc3FsX2lk eCsrOworCQl9CisJfQorCisJLy8gZml4IGxhc3QgIiwgIiB3aXRoICIpXDAiCisJc3RyY3B5KHNx bFtzcWxfaWR4IC0gMV0sICIpXDAiKTsKKwljaGFyICpyZXMgPSByZWdpb25fam9pbihyLCB0b3Rh bF9zcWxfc3RyX3NpemUpOworCXJldHVybiByZXM7Cit9CisKK3ZvaWQKK3NldF9pbmRleF9kZWYo UGFyc2UgKnBhcnNlLCBJbmRleCAqaW5kZXgsIFRhYmxlICp0YWJsZSwKKwkJCQkgICBjb25zdCBj aGFyICpuYW1lLAorCQkJCSAgIHVpbnQzMl90IG5hbWVfbGVuLCBpbnQgb25fZXJyb3IsCisJCQkJ ICAgRXhwckxpc3QgKmV4cHJfbGlzdCwgdTggaWR4X3R5cGUpCit7CisJc3RydWN0IHNwYWNlX2Rl ZiAqc3BhY2VfZGVmID0gdGFibGUtPmRlZjsKKwl1aW50MzJfdCBpaWQgPSBTUUxJVEVfUEFHRU5P X1RPX0lOREVYSUQoaW5kZXgtPnRudW0pOworCXN0cnVjdCBpbmRleF9vcHRzIG9wdHM7CisJaW5k ZXhfb3B0c19jcmVhdGUoJm9wdHMpOworCW9wdHMuc3RhdCA9IE5VTEw7CisJb3B0cy5pc191bmlx dWUgPSBvbl9lcnJvciAhPSBPTl9DT05GTElDVF9BQ1RJT05fTk9ORTsKKworCXN0cnVjdCBrZXlf ZGVmICprZXlfZGVmID0ga2V5X2RlZl9uZXcoZXhwcl9saXN0LT5uRXhwcik7CisKKwlpZiAoaWR4 X3R5cGUgPT0gU1FMSVRFX0lEWFRZUEVfQVBQREVGKSB7CisJCW9wdHMuc3FsID0gY3JlYXRlX3Nx bChuYW1lLCB0YWJsZS0+ZGVmLCBleHByX2xpc3QpOworCX0KKworCWludCBpID0gMDsKKwlFeHBy ICpjb2x1bW5fZXhwcjsKKwlFeHByICpjb2xsYXRpb25fZXhwcjsKKwlmb3IgKGkgPSAwOyBpIDwg ZXhwcl9saXN0LT5uRXhwcjsgaSsrKSB7CisJCWNvbHVtbl9leHByID0gc3FsaXRlM0V4cHJTa2lw Q29sbGF0ZShleHByX2xpc3QtPmFbaV0ucEV4cHIpOworCQljb2xsYXRpb25fZXhwciA9IGV4cHJf bGlzdC0+YVtpXS5wRXhwciA9PSBjb2x1bW5fZXhwciA/CisJCQkJIE5VTEwgOiBleHByX2xpc3Qt PmFbaV0ucEV4cHI7CisKKwkJdWludDMyX3QgZmllbGRubyA9IGNvbHVtbl9leHByLT5pQ29sdW1u OworCisJCXVpbnQzMl90IGNvbGxfaWQ7CisJCXN0cnVjdCBjb2xsICpjb2xsOworCQlpZiAoY29s bGF0aW9uX2V4cHIgIT0gTlVMTCkKKwkJCWNvbGwgPSBzcWxfZ2V0X2NvbGxfc2VxKHBhcnNlLCBj b2xsYXRpb25fZXhwci0+dS56VG9rZW4sJmNvbGxfaWQpOworCQllbHNlCisJCQljb2xsID0gc3Fs X2NvbHVtbl9jb2xsYXRpb24oc3BhY2VfZGVmLCBmaWVsZG5vLCAmY29sbF9pZCk7CisKKwkJa2V5 X2RlZl9zZXRfcGFydChrZXlfZGVmLCBpLCBmaWVsZG5vLAorCQkJCXNwYWNlX2RlZi0+ZmllbGRz W2ZpZWxkbm9dLnR5cGUsCisJCQkJc3BhY2VfZGVmLT5maWVsZHNbZmllbGRub10ubnVsbGFibGVf YWN0aW9uLAorCQkJCWNvbGwsIGNvbGxfaWQsIFNPUlRfT1JERVJfQVNDKTsKKwl9CisKKwlzdHJ1 Y3Qga2V5X2RlZiAqcGtfa2V5X2RlZjsKKwlpZiAoaWR4X3R5cGUgPT0gU1FMSVRFX0lEWFRZUEVf QVBQREVGKSB7CisJCXBrX2tleV9kZWYgPSB0YWJsZS0+cEluZGV4LT5kZWYtPmtleV9kZWY7CisJ fSBlbHNlIHsKKwkJcGtfa2V5X2RlZiA9IE5VTEw7CisJfQorCisJaW5kZXgtPmRlZiA9IGluZGV4 X2RlZl9uZXcoc3BhY2VfZGVmLT5pZCwgaWlkLCBuYW1lLCBuYW1lX2xlbiwKKwkJCSAgICAgVFJF RSwgJm9wdHMsIGtleV9kZWYsIHBrX2tleV9kZWYpOwogfQogCiB2b2lkCkBAIC0yOTgyLDYgKzMx MDYsMTQgQEAgc3FsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgUGFyc2UgKnBhcnNlLCBzdHJ1Y3QgVG9r ZW4gKnRva2VuLAogCSAqIEFsbG9jYXRlIHRoZSBpbmRleCBzdHJ1Y3R1cmUuCiAJICovCiAJbk5h bWUgPSBzcWxpdGUzU3RybGVuMzAoek5hbWUpOworCisJaWYgKG5OYW1lID4gQk9YX05BTUVfTUFY KSB7CisJCXNxbGl0ZTNFcnJvck1zZyhwYXJzZSwKKwkJCQkiJXMuJXMgZXhjZWVkcyBpbmRleGVz JyBuYW1lcyBsZW5ndGggbGltaXQiLAorCQkJCXBUYWItPmRlZi0+bmFtZSwgek5hbWUpOworCQln b3RvIGV4aXRfY3JlYXRlX2luZGV4OworCX0KKwogCXBJbmRleCA9IHNxbGl0ZTNBbGxvY2F0ZUlu ZGV4T2JqZWN0KGRiLCBjb2xfbGlzdC0+bkV4cHIsCiAJCQkJCSAgICBuTmFtZSArIG5FeHRyYSAr IDEsICZ6RXh0cmEpOwogCWlmIChkYi0+bWFsbG9jRmFpbGVkKSB7CkBAIC0zMDY4LDYgKzMyMDAs MTEgQEAgc3FsX2NyZWF0ZV9pbmRleChzdHJ1Y3QgUGFyc2UgKnBhcnNlLCBzdHJ1Y3QgVG9rZW4g KnRva2VuLAogCQkgKi8KIAkJcEluZGV4LT5zb3J0X29yZGVyW2ldID0gU09SVF9PUkRFUl9BU0M7 CiAJfQorCisJc2V0X2luZGV4X2RlZihwYXJzZSwgcEluZGV4LCBwVGFiLCB6TmFtZSwKKwkJICAg ICAgbk5hbWUsIG9uX2Vycm9yLCBjb2xfbGlzdCwKKwkJICAgICAgaWR4X3R5cGUpOworCiAJaWYg KHBUYWIgPT0gcGFyc2UtPnBOZXdUYWJsZSkgewogCQkvKiBUaGlzIHJvdXRpbmUgaGFzIGJlZW4g Y2FsbGVkIHRvIGNyZWF0ZSBhbiBhdXRvbWF0aWMgaW5kZXggYXMgYQogCQkgKiByZXN1bHQgb2Yg YSBQUklNQVJZIEtFWSBvciBVTklRVUUgY2xhdXNlIG9uIGEgY29sdW1uIGRlZmluaXRpb24sIG9y CkBAIC0zMTMzLDYgKzMyNzAsNyBAQCBzcWxfY3JlYXRlX2luZGV4KHN0cnVjdCBQYXJzZSAqcGFy c2UsIHN0cnVjdCBUb2tlbiAqdG9rZW4sCiAJCQkJfQogCQkJCWlmIChpZHhfdHlwZSA9PSBTUUxJ VEVfSURYVFlQRV9QUklNQVJZS0VZKQogCQkJCQlwSWR4LT5pZHhUeXBlID0gaWR4X3R5cGU7CisK IAkJCQlnb3RvIGV4aXRfY3JlYXRlX2luZGV4OwogCQkJfQogCQl9CkBAIC0zMTQxLDYgKzMyNzks NyBAQCBzcWxfY3JlYXRlX2luZGV4KHN0cnVjdCBQYXJzZSAqcGFyc2UsIHN0cnVjdCBUb2tlbiAq dG9rZW4sCiAJLyogTGluayB0aGUgbmV3IEluZGV4IHN0cnVjdHVyZSB0byBpdHMgdGFibGUgYW5k IHRvIHRoZSBvdGhlcgogCSAqIGluLW1lbW9yeSBkYXRhYmFzZSBzdHJ1Y3R1cmVzLgogCSAqLwor CiAJYXNzZXJ0KHBhcnNlLT5uRXJyID09IDApOwogCWlmIChkYi0+aW5pdC5idXN5KSB7CiAJCUlu ZGV4ICpwOwpAQCAtMzI1NCwxNiArMzM5Myw4IEBAIHVpbnQzMl90CiBpbmRleF9jb2x1bW5fY291 bnQoY29uc3QgSW5kZXggKmlkeCkKIHsKIAlhc3NlcnQoaWR4ICE9IE5VTEwpOwotCXVpbnQzMl90 IHNwYWNlX2lkID0gU1FMSVRFX1BBR0VOT19UT19TUEFDRUlEKGlkeC0+dG51bSk7Ci0Jc3RydWN0 IHNwYWNlICpzcGFjZSA9IHNwYWNlX2J5X2lkKHNwYWNlX2lkKTsKLQkvKiBJdCBpcyBpbXBvc3Np YmxlIHRvIGZpbmQgYW4gZXBoZW1lcmFsIHNwYWNlIGJ5IGlkLiAqLwotCWlmIChzcGFjZSA9PSBO VUxMKQotCQlyZXR1cm4gaWR4LT5uQ29sdW1uOwotCi0JdWludDMyX3QgaW5kZXhfaWQgPSBTUUxJ VEVfUEFHRU5PX1RPX0lOREVYSUQoaWR4LT50bnVtKTsKLQlzdHJ1Y3QgaW5kZXggKmluZGV4ID0g c3BhY2VfaW5kZXgoc3BhY2UsIGluZGV4X2lkKTsKLQlhc3NlcnQoaW5kZXggIT0gTlVMTCk7Ci0J cmV0dXJuIGluZGV4LT5kZWYtPmtleV9kZWYtPnBhcnRfY291bnQ7CisJYXNzZXJ0KGlkeC0+ZGVm ICE9IE5VTEwpOworCXJldHVybiBpZHgtPmRlZi0+a2V5X2RlZi0+cGFydF9jb3VudDsKIH0KIAog LyoqIFJldHVybiB0cnVlIGlmIGdpdmVuIGluZGV4IGlzIHVuaXF1ZSBhbmQgbm90IG51bGxhYmxl LiAqLwpAQCAtMzI3MSwxNSArMzQwMiw4IEBAIGJvb2wKIGluZGV4X2lzX3VuaXF1ZV9ub3RfbnVs bChjb25zdCBJbmRleCAqaWR4KQogewogCWFzc2VydChpZHggIT0gTlVMTCk7Ci0JdWludDMyX3Qg c3BhY2VfaWQgPSBTUUxJVEVfUEFHRU5PX1RPX1NQQUNFSUQoaWR4LT50bnVtKTsKLQlzdHJ1Y3Qg c3BhY2UgKnNwYWNlID0gc3BhY2VfYnlfaWQoc3BhY2VfaWQpOwotCWFzc2VydChzcGFjZSAhPSBO VUxMKTsKLQotCXVpbnQzMl90IGluZGV4X2lkID0gU1FMSVRFX1BBR0VOT19UT19JTkRFWElEKGlk eC0+dG51bSk7Ci0Jc3RydWN0IGluZGV4ICppbmRleCA9IHNwYWNlX2luZGV4KHNwYWNlLCBpbmRl eF9pZCk7Ci0JYXNzZXJ0KGluZGV4ICE9IE5VTEwpOwotCXJldHVybiAoaW5kZXgtPmRlZi0+b3B0 cy5pc191bmlxdWUgJiYKLQkJIWluZGV4LT5kZWYtPmtleV9kZWYtPmlzX251bGxhYmxlKTsKKwlh c3NlcnQoaWR4LT5kZWYgIT0gTlVMTCk7CisJcmV0dXJuIChpZHgtPmRlZi0+a2V5X2RlZi0+aXNf bnVsbGFibGUgJiYgaWR4LT5kZWYtPm9wdHMuaXNfdW5pcXVlKTsKIH0KIAogdm9pZApkaWZmIC0t Z2l0IGEvc3JjL2JveC9zcWwvc2VsZWN0LmMgYi9zcmMvYm94L3NxbC9zZWxlY3QuYwppbmRleCA1 ZmJjYmFmZmMuLjM0YWM4NDZjZiAxMDA2NDQKLS0tIGEvc3JjL2JveC9zcWwvc2VsZWN0LmMKKysr IGIvc3JjL2JveC9zcWwvc2VsZWN0LmMKQEAgLTQyOTgsNyArNDI5OCw3IEBAIHNxbGl0ZTNJbmRl eGVkQnlMb29rdXAoUGFyc2UgKiBwUGFyc2UsIHN0cnVjdCBTcmNMaXN0X2l0ZW0gKnBGcm9tKQog CQljaGFyICp6SW5kZXhlZEJ5ID0gcEZyb20tPnUxLnpJbmRleGVkQnk7CiAJCUluZGV4ICpwSWR4 OwogCQlmb3IgKHBJZHggPSBwVGFiLT5wSW5kZXg7Ci0JCSAgICAgcElkeCAmJiBzdHJjbXAocElk eC0+ek5hbWUsIHpJbmRleGVkQnkpOworCQkgICAgIHBJZHggJiYgc3RyY21wKHBJZHgtPmRlZi0+ bmFtZSwgekluZGV4ZWRCeSk7CiAJCSAgICAgcElkeCA9IHBJZHgtPnBOZXh0KSA7CiAJCWlmICgh cElkeCkgewogCQkJc3FsaXRlM0Vycm9yTXNnKHBQYXJzZSwgIm5vIHN1Y2ggaW5kZXg6ICVzIiwg ekluZGV4ZWRCeSwKZGlmZiAtLWdpdCBhL3NyYy9ib3gvc3FsL3NxbGl0ZUludC5oIGIvc3JjL2Jv eC9zcWwvc3FsaXRlSW50LmgKaW5kZXggOTUwNDA5ZDkzLi5mZTYxZGFjZmUgMTAwNjQ0Ci0tLSBh L3NyYy9ib3gvc3FsL3NxbGl0ZUludC5oCisrKyBiL3NyYy9ib3gvc3FsL3NxbGl0ZUludC5oCkBA IC0yMTI0LDYgKzIxMjQsNyBAQCBzdHJ1Y3QgSW5kZXggewogCQkJCSAqIG9yIF9OT05FCiAJCQkJ ICovCiAJdW5zaWduZWQgaWR4VHlwZToyOwkvKiAxPT1VTklRVUUsIDI9PVBSSU1BUlkgS0VZLCAw PT1DUkVBVEUgSU5ERVggKi8KKyAgICAJc3RydWN0IGluZGV4X2RlZiAqZGVmOwogfTsKIAogLyoq CmRpZmYgLS1naXQgYS9zcmMvYm94L3NxbC93aGVyZS5jIGIvc3JjL2JveC9zcWwvd2hlcmUuYwpp bmRleCA0OTZiNDE3MjUuLjZkOTUxODViMyAxMDA2NDQKLS0tIGEvc3JjL2JveC9zcWwvd2hlcmUu YworKysgYi9zcmMvYm94L3NxbC93aGVyZS5jCkBAIC00NzAsNyArNDcwLDcgQEAgZmluZEluZGV4 Q29sKFBhcnNlICogcFBhcnNlLAkvKiBQYXJzZSBjb250ZXh0ICovCiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBwTGlzdC0+bkV4cHI7IGkrKykgewogCQlFeHByICpwID0gc3FsaXRlM0V4cHJTa2lwQ29s bGF0ZShwTGlzdC0+YVtpXS5wRXhwcik7CiAJCWlmIChwLT5vcCA9PSBUS19DT0xVTU4gJiYKLQkJ ICAgIHAtPmlDb2x1bW4gPT0gcElkeC0+YWlDb2x1bW5baUNvbF0gJiYKKwkJICAgIHAtPmlDb2x1 bW4gPT0gKGludCkgcElkeC0+ZGVmLT5rZXlfZGVmLT5wYXJ0c1tpQ29sXS5maWVsZG5vICYmCiAJ CSAgICBwLT5pVGFibGUgPT0gaUJhc2UpIHsKIAkJCWJvb2wgaXNfZm91bmQ7CiAJCQl1aW50MzJf dCBpZDsKQEAgLTI4NTksNiArMjg1OSwxOSBAQCB3aGVyZUxvb3BBZGRCdHJlZShXaGVyZUxvb3BC dWlsZGVyICogcEJ1aWxkZXIsCS8qIFdIRVJFIGNsYXVzZSBpbmZvcm1hdGlvbiAqLwogCQlzUGsu YWlSb3dMb2dFc3QgPSBhaVJvd0VzdFBrOwogCQlzUGsub25FcnJvciA9IE9OX0NPTkZMSUNUX0FD VElPTl9SRVBMQUNFOwogCQlzUGsucFRhYmxlID0gcFRhYjsKKworCQlzdHJ1Y3Qga2V5X2RlZiAq a2V5X2RlZiA9IGtleV9kZWZfbmV3KDEpOworCQlrZXlfZGVmX3NldF9wYXJ0KGtleV9kZWYsIDAs IDAsIHBUYWItPmRlZi0+ZmllbGRzWzBdLnR5cGUsCisJCQkJIE9OX0NPTkZMSUNUX0FDVElPTl9B Qk9SVCwKKwkJCQkgTlVMTCwgQ09MTF9OT05FLCBTT1JUX09SREVSX0FTQyk7CisKKwkJc3RydWN0 IGluZGV4X29wdHMgaW5kZXhfb3B0cyA9IGluZGV4X29wdHNfZGVmYXVsdDsKKworCQlzUGsuZGVm ID0KKwkJCWluZGV4X2RlZl9uZXcocFRhYi0+ZGVmLT5pZCwgMCwgInByaW1hcnkiLAorCQkJCSAg ICAgIHNpemVvZigicHJpbWFyeSIpIC0gMSwgVFJFRSwKKwkJCQkgICAgICAmaW5kZXhfb3B0cywg a2V5X2RlZiwgTlVMTCk7CisKIAkJYWlSb3dFc3RQa1swXSA9IHNxbF9zcGFjZV90dXBsZV9sb2df Y291bnQocFRhYik7CiAJCWFpUm93RXN0UGtbMV0gPSAwOwogCQlwRmlyc3QgPSBwU3JjLT5wVGFi LT5wSW5kZXg7CkBAIC00MTE1LDcgKzQxMjgsNyBAQCB3aGVyZVNob3J0Q3V0KFdoZXJlTG9vcEJ1 aWxkZXIgKiBwQnVpbGRlcikKIAl9IGVsc2UgewogCQlmb3IgKHBJZHggPSBwVGFiLT5wSW5kZXg7 IHBJZHg7IHBJZHggPSBwSWR4LT5wTmV4dCkgewogCQkJaW50IG9wTWFzazsKLQkJCWludCBuSWR4 Q29sID0gaW5kZXhfY29sdW1uX2NvdW50KHBJZHgpOworCQkJaW50IG5JZHhDb2wgPSBwSWR4LT5k ZWYtPmtleV9kZWYtPnBhcnRfY291bnQ7CiAJCQlhc3NlcnQocExvb3AtPmFMVGVybVNwYWNlID09 IHBMb29wLT5hTFRlcm0pOwogCQkJaWYgKCFpbmRleF9pc191bmlxdWUocElkeCkKIAkJCSAgICB8 fCBwSWR4LT5wUGFydElkeFdoZXJlICE9IDAKQEAgLTQ3OTMsNyArNDgwNiw3IEBAIHNxbGl0ZTNX aGVyZUVuZChXaGVyZUluZm8gKiBwV0luZm8pCiAJCWlmIChwTGV2ZWwtPmFkZHJTa2lwKSB7CiAJ CQlzcWxpdGUzVmRiZUdvdG8odiwgcExldmVsLT5hZGRyU2tpcCk7CiAJCQlWZGJlQ29tbWVudCgo diwgIm5leHQgc2tpcC1zY2FuIG9uICVzIiwKLQkJCQkgICAgIHBMb29wLT5wSW5kZXgtPnpOYW1l KSk7CisJCQkJICAgICBwTG9vcC0+cEluZGV4LT5kZWYtPm5hbWUpKTsKIAkJCXNxbGl0ZTNWZGJl SnVtcEhlcmUodiwgcExldmVsLT5hZGRyU2tpcCk7CiAJCQlzcWxpdGUzVmRiZUp1bXBIZXJlKHYs IHBMZXZlbC0+YWRkclNraXAgLSAyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvdGVzdC9ib3gvc3VpdGUu aW5pIGIvdGVzdC9ib3gvc3VpdGUuaW5pCmluZGV4IGRkYzcxMzI2Yi4uOTRiYzM5YzU3IDEwMDY0 NAotLS0gYS90ZXN0L2JveC9zdWl0ZS5pbmkKKysrIGIvdGVzdC9ib3gvc3VpdGUuaW5pCkBAIC0y LDcgKzIsNyBAQAogY29yZSA9IHRhcmFudG9vbAogZGVzY3JpcHRpb24gPSBEYXRhYmFzZSB0ZXN0 cwogc2NyaXB0ID0gYm94Lmx1YQotZGlzYWJsZWQgPSBydHJlZV9lcnJpbmoudGVzdC5sdWEgdHVw bGVfYmVuY2gudGVzdC5sdWEKK2Rpc2FibGVkID0gcnRyZWVfZXJyaW5qLnRlc3QubHVhIHR1cGxl X2JlbmNoLnRlc3QubHVhIGVycmluai50ZXN0Lmx1YQogcmVsZWFzZV9kaXNhYmxlZCA9IGVycmlu ai50ZXN0Lmx1YSBlcnJpbmpfaW5kZXgudGVzdC5sdWEgcnRyZWVfZXJyaW5qLnRlc3QubHVhIHVw c2VydF9lcnJpbmoudGVzdC5sdWEgaXByb3RvX3N0cmVzcy50ZXN0Lmx1YQogbHVhX2xpYnMgPSBs dWEvZmlmby5sdWEgbHVhL3V0aWxzLmx1YSBsdWEvYml0c2V0Lmx1YSBsdWEvaW5kZXhfcmFuZG9t X3Rlc3QubHVhIGx1YS9wdXNoLmx1YSBsdWEvaWRlbnRpZmllci5sdWEKIHVzZV91bml4X3NvY2tl dHMgPSBUcnVlCi0tIAoyLjE0LjMgKEFwcGxlIEdpdC05OCkKCg== ------WJ6LXu1I1tnYqBoLyrHhMCroBROrfopE-d9ojyW4ae7UHrHXf-1527497514--