From: Sergey Vojtovich Date: August 24 2011 11:58am Subject: bzr push into mysql-5.1 branch (sergey.vojtovich:3589 to 3590) List-Archive: http://lists.mysql.com/commits/140782 Message-Id: <201108241157.p7OBvUce018638@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1OTAgU2VyZ2V5IFZvanRvdmljaAkyMDExLTA4LTI0IFttZXJnZV0KICAgICAgTWVyZ2UuCgog ICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9tZXJnZS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC90L21lcmdlLnRlc3QKICAgICAgc3FsL3NxbF9iYXNlLmNjCiAzNTg5IE1hcmtvIE3DpGtl bMOkCTIwMTEtMDgtMjIKICAgICAgQnVnICMxMTc2NjU5MSAgNTk3MzM6IFBPU1NJQkxFIERFQURM T0NLIFdIRU4gQlVGRkVSRUQgQ0hBTkdFUyBBUkUgVE8gQkUgRElTQ0FSREVECiAgICAgIAogICAg ICBUaGUgZml4IGluIHJldmlzaW9uIGlkIG1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwODE1 MDkxMTQzLWgzemJ2bTBwdjhuaTNxcWwKICAgICAgaW50cm9kdWNlZCBhIGZhbHNlIFVOSVZfU1lO Q19ERUJVRyBhbGFybS4gUmVsYXggdGhlIGFzc2VydGlvbi4KCiAgICBtb2RpZmllZDoKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL3N5bmMvc3luYzBzeW5jLmMKPT09IG1vZGlmaWVkIGZpbGUg J215c3FsLXRlc3Qvci9tZXJnZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9tZXJnZS5yZXN1 bHQJMjAxMC0xMS0zMCAwNDo0Njo0MyArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvbWVyZ2UucmVz dWx0CTIwMTEtMDgtMTggMDY6Mzg6NTEgKzAwMDAKQEAgLTIzNDEsNCArMjM0MSwzMyBAQCBSRVBB SVIgVEFCTEUgbTE7CiBUYWJsZQlPcAlNc2dfdHlwZQlNc2dfdGV4dAogdGVzdC5tMQlyZXBhaXIJ bm90ZQlUaGUgc3RvcmFnZSBlbmdpbmUgZm9yIHRoZSB0YWJsZSBkb2Vzbid0IHN1cHBvcnQgcmVw YWlyCiBEUk9QIFRBQkxFIG0xLCB0MTsKKyMKKyMgQlVHIzExNzYzNzEyIC0gNTY0NTg6IEtJTExJ TkcgQSBGTFVTSCBUQUJMRSBGT1IgQSBNRVJHRS9DSElMRAorIyAgICAgICAgICAgICAgICAgICAg ICAgQ1JBU0hFUyBTRVJWRVIKKyMKK0NSRUFURSBUQUJMRSB0MShhIElOVCk7CitDUkVBVEUgVEFC TEUgdDIoYSBJTlQpOworQ1JFQVRFIFRBQkxFIHQzKGEgSU5ULCBiIElOVCk7CitDUkVBVEUgVEFC TEUgbTEoYSBJTlQpIEVOR0lORT1NRVJHRSBVTklPTj0odDEsIHQyKTsKKyMgVGVzdCByZW9wZW4g bWVyZ2UgcGFyZW50IGZhaWx1cmUKK0xPQ0sgVEFCTEVTIG0xIFJFQUQ7CisjIFJlbW92ZSAnbTEn IHRhYmxlIHVzaW5nIGZpbGUgb3BlcmF0aW9ucy4KK0ZMVVNIIFRBQkxFUzsKK0VSUk9SIDQyUzAy OiBUYWJsZSAndGVzdC5tMScgZG9lc24ndCBleGlzdAorVU5MT0NLIFRBQkxFUzsKK0NSRUFURSBU QUJMRSBtMShhIElOVCkgRU5HSU5FPU1FUkdFIFVOSU9OPSh0MSwgdDIpOworIyBUZXN0IHJlb3Bl biBtZXJnZSBjaGlsZCBmYWlsdXJlCitMT0NLIFRBQkxFUyBtMSBSRUFEOworIyBSZW1vdmUgJ3Qx JyB0YWJsZSB1c2luZyBmaWxlIG9wZXJhdGlvbnMuCitGTFVTSCBUQUJMRVM7CitFUlJPUiA0MlMw MjogVGFibGUgJ3Rlc3QudDEnIGRvZXNuJ3QgZXhpc3QKK1VOTE9DSyBUQUJMRVM7CitDUkVBVEUg VEFCTEUgdDEoYSBJTlQpOworIyBUZXN0IHJlYXR0YWNoIG1lcmdlIGZhaWx1cmUKK0xPQ0sgVEFC TEVTIG0xIFJFQUQ7CisjIFJlcGxhY2UgJ3QxJyB3aXRoICd0MycgdGFibGUgdXNpbmcgZmlsZSBv cGVyYXRpb25zLgorRkxVU0ggVEFCTEVTOworRVJST1IgSFkwMDA6IENhbid0IHJlb3BlbiB0YWJs ZTogJ20xJworVU5MT0NLIFRBQkxFUzsKK0RST1AgVEFCTEUgdDEsIHQyLCB0MywgbTE7CiBFbmQg b2YgNS4xIHRlc3RzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L21lcmdlLnRlc3Qn Ci0tLSBhL215c3FsLXRlc3QvdC9tZXJnZS50ZXN0CTIwMTAtMDQtMjYgMTM6NDQ6MTAgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC90L21lcmdlLnRlc3QJMjAxMS0wOC0xOCAwNjozODo1MSArMDAwMApA QCAtMTc4Myw0ICsxNzgzLDQ5IEBAIFJFUEFJUiBUQUJMRSBtMTsKICMKIERST1AgVEFCTEUgbTEs IHQxOwogCisKKy0tZWNobyAjCistLWVjaG8gIyBCVUcjMTE3NjM3MTIgLSA1NjQ1ODogS0lMTElO RyBBIEZMVVNIIFRBQkxFIEZPUiBBIE1FUkdFL0NISUxECistLWVjaG8gIyAgICAgICAgICAgICAg ICAgICAgICAgQ1JBU0hFUyBTRVJWRVIKKy0tZWNobyAjCitDUkVBVEUgVEFCTEUgdDEoYSBJTlQp OworQ1JFQVRFIFRBQkxFIHQyKGEgSU5UKTsKK0NSRUFURSBUQUJMRSB0MyhhIElOVCwgYiBJTlQp OworQ1JFQVRFIFRBQkxFIG0xKGEgSU5UKSBFTkdJTkU9TUVSR0UgVU5JT049KHQxLCB0Mik7CisK Ky0tZWNobyAjIFRlc3QgcmVvcGVuIG1lcmdlIHBhcmVudCBmYWlsdXJlCitMT0NLIFRBQkxFUyBt MSBSRUFEOworLS1lY2hvICMgUmVtb3ZlICdtMScgdGFibGUgdXNpbmcgZmlsZSBvcGVyYXRpb25z LgorcmVtb3ZlX2ZpbGUgJE1ZU1FMRF9EQVRBRElSL3Rlc3QvbTEuTVJHOworcmVtb3ZlX2ZpbGUg JE1ZU1FMRF9EQVRBRElSL3Rlc3QvbTEuZnJtOworLS1lcnJvciBFUl9OT19TVUNIX1RBQkxFCitG TFVTSCBUQUJMRVM7CitVTkxPQ0sgVEFCTEVTOworQ1JFQVRFIFRBQkxFIG0xKGEgSU5UKSBFTkdJ TkU9TUVSR0UgVU5JT049KHQxLCB0Mik7CisKKy0tZWNobyAjIFRlc3QgcmVvcGVuIG1lcmdlIGNo aWxkIGZhaWx1cmUKK0xPQ0sgVEFCTEVTIG0xIFJFQUQ7CistLWVjaG8gIyBSZW1vdmUgJ3QxJyB0 YWJsZSB1c2luZyBmaWxlIG9wZXJhdGlvbnMuCityZW1vdmVfZmlsZSAkTVlTUUxEX0RBVEFESVIv dGVzdC90MS5mcm07CityZW1vdmVfZmlsZSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5NWUk7City ZW1vdmVfZmlsZSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5NWUQ7CistLWVycm9yIEVSX05PX1NV Q0hfVEFCTEUKK0ZMVVNIIFRBQkxFUzsKK1VOTE9DSyBUQUJMRVM7CitDUkVBVEUgVEFCTEUgdDEo YSBJTlQpOworCistLWVjaG8gIyBUZXN0IHJlYXR0YWNoIG1lcmdlIGZhaWx1cmUKK0xPQ0sgVEFC TEVTIG0xIFJFQUQ7CistLWVjaG8gIyBSZXBsYWNlICd0MScgd2l0aCAndDMnIHRhYmxlIHVzaW5n IGZpbGUgb3BlcmF0aW9ucy4KK3JlbW92ZV9maWxlICRNWVNRTERfREFUQURJUi90ZXN0L3QxLmZy bTsKK3JlbW92ZV9maWxlICRNWVNRTERfREFUQURJUi90ZXN0L3QxLk1ZSTsKK3JlbW92ZV9maWxl ICRNWVNRTERfREFUQURJUi90ZXN0L3QxLk1ZRDsKK2NvcHlfZmlsZSAkTVlTUUxEX0RBVEFESVIv dGVzdC90My5mcm0gJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDEuZnJtOworY29weV9maWxlICRNWVNR TERfREFUQURJUi90ZXN0L3QzLk1ZSSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5NWUk7Citjb3B5 X2ZpbGUgJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDMuTVlEICRNWVNRTERfREFUQURJUi90ZXN0L3Qx Lk1ZRDsKKy0tZXJyb3IgRVJfQ0FOVF9SRU9QRU5fVEFCTEUKK0ZMVVNIIFRBQkxFUzsKK1VOTE9D SyBUQUJMRVM7CitEUk9QIFRBQkxFIHQxLCB0MiwgdDMsIG0xOworCiAtLWVjaG8gRW5kIG9mIDUu MSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfYmFzZS5jYycKLS0tIGEvc3FsL3Nx bF9iYXNlLmNjCTIwMTEtMDgtMDIgMDc6MzM6NDUgKzAwMDAKKysrIGIvc3FsL3NxbF9iYXNlLmNj CTIwMTEtMDgtMjQgMDc6MTg6MDAgKzAwMDAKQEAgLTk2LDYgKzk2LDEzIEBAIHN0YXRpYyBUQUJM RV9TSEFSRSAqb2xkZXN0X3VudXNlZF9zaGFyZSwKIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgTE9D S190YWJsZV9zaGFyZTsKIHN0YXRpYyBib29sIHRhYmxlX2RlZl9pbml0ZWQ9IDA7CiAKKy8qKgor ICBEdW1teSBUQUJMRSBpbnN0YW5jZSB3aGljaCBpcyB1c2VkIGluIHJlb3Blbl90YWJsZXMoKSBh bmQgcmVhdHRhY2hfbWVyZ2UoKQorICBmdW5jdGlvbnMgdG8gbWFyayBNRVJHRSB0YWJsZXMgYW5k IHRoZWlyIGNoaWxkcmVuIHdpdGggd2hpY2ggdGhlcmUgaXMgc29tZQorICBraW5kIG9mIHByb2Js ZW0gYW5kIHdoaWNoIHRoZXJlZm9yZSB3ZSBuZWVkIHRvIGNsb3NlLgorKi8KK3N0YXRpYyBUQUJM RSBiYWRfbWVyZ2VfbWFya2VyOworCiBzdGF0aWMgaW50IG9wZW5fdW5pcmVnX2VudHJ5KFRIRCAq dGhkLCBUQUJMRSAqZW50cnksIFRBQkxFX0xJU1QgKnRhYmxlX2xpc3QsCiAJCQkgICAgIGNvbnN0 IGNoYXIgKmFsaWFzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjYWNoZV9r ZXksIHVpbnQgY2FjaGVfa2V5X2xlbmd0aCwKQEAgLTMyMTUsNDYgKzMyMjIsNjUgQEAgdm9pZCBj bG9zZV9kYXRhX2ZpbGVzX2FuZF9tb3JwaF9sb2NrcyhUSAogCiAKIC8qKgorICBAYnJpZWYgTWFy ayBtZXJnZSBwYXJlbnQgYW5kIGNoaWxkcmVuIHdpdGggYmFkX21lcmdlX21hcmtlcgorCisgIEBw YXJhbVtpbixvdXRdICBwYXJlbnQgICAgICAgdGhlIFRBQkxFIG9iamVjdCBvZiB0aGUgcGFyZW50 CisqLworCitzdGF0aWMgdm9pZCBtYXJrX21lcmdlX3BhcmVudF9hbmRfY2hpbGRyZW5fYXNfYmFk KFRBQkxFICpwYXJlbnQpCit7CisgIFRBQkxFX0xJU1QgKmNoaWxkX2w7CisgIERCVUdfRU5URVIo Im1hcmtfbWVyZ2VfcGFyZW50X2FuZF9jaGlsZHJlbl9hc19iYWQiKTsKKyAgcGFyZW50LT5wYXJl bnQ9ICZiYWRfbWVyZ2VfbWFya2VyOworICBmb3IgKGNoaWxkX2w9IHBhcmVudC0+Y2hpbGRfbDsg OyBjaGlsZF9sPSBjaGlsZF9sLT5uZXh0X2dsb2JhbCkKKyAgeworICAgIGNoaWxkX2wtPnRhYmxl LT5wYXJlbnQ9ICZiYWRfbWVyZ2VfbWFya2VyOworICAgIGNoaWxkX2wtPnRhYmxlPSBOVUxMOwor ICAgIGlmICgmY2hpbGRfbC0+bmV4dF9nbG9iYWwgPT0gcGFyZW50LT5jaGlsZF9sYXN0X2wpCisg ICAgICBicmVhazsKKyAgfQorICBEQlVHX1ZPSURfUkVUVVJOOworfQorCisKKy8qKgogICBSZWF0 dGFjaCBNRVJHRSBjaGlsZHJlbiBhZnRlciByZW9wZW4uCiAKICAgQHBhcmFtW2luXSAgICAgdGhk ICAgICAgICAgICAgdGhyZWFkIGNvbnRleHQKLSAgQHBhcmFtW2luLG91dF0gZXJyX3RhYmxlc19w ICAgcG9pbnRlciB0byBwb2ludGVyIG9mIHRhYmxlcyBpbiBlcnJvcgorCisgIEBub3RlIElmIHJl YXR0YWNoIGZhaWxlZCBmb3IgY2VydGFpbiBNRVJHRSB0YWJsZSwgdGhlIHRhYmxlIChhbmQgYWxs CisgICAgICAgIGl0J3MgY2hpbGRyZW4pIGFyZSBtYXJrZWQgd2l0aCBiYWRfbWVyZ2VfbWFya2Vy LgogCiAgIEByZXR1cm4gICAgICAgc3RhdHVzCi0gICAgQHJldHZhbCAgICAgRkFMU0UgICAgICAg ICAgIE9LLCBlcnJfdGFibGVzX3AgdW5jaGFuZ2VkCi0gICAgQHJldHZhbCAgICAgVFJVRSAgICAg ICAgICAgIEVycm9yLCBlcnJfdGFibGVzX3AgY29udGFpbnMgdGFibGUocykKKyAgICBAcmV0dmFs ICAgICBGQUxTRSAgICAgICAgICAgT0sKKyAgICBAcmV0dmFsICAgICBUUlVFICAgICAgICAgICAg RXJyb3IKICovCiAKLXN0YXRpYyBib29sIHJlYXR0YWNoX21lcmdlKFRIRCAqdGhkLCBUQUJMRSAq KmVycl90YWJsZXNfcCkKK3N0YXRpYyBib29sIHJlYXR0YWNoX21lcmdlKFRIRCAqdGhkKQogewog ICBUQUJMRSAqdGFibGU7Ci0gIFRBQkxFICpuZXh0OwotICBUQUJMRSAqKnBydl9wPSAmdGhkLT5v cGVuX3RhYmxlczsKICAgYm9vbCBlcnJvcj0gRkFMU0U7CiAgIERCVUdfRU5URVIoInJlYXR0YWNo X21lcmdlIik7CiAKLSAgZm9yICh0YWJsZT0gdGhkLT5vcGVuX3RhYmxlczsgdGFibGU7IHRhYmxl PSBuZXh0KQorICBmb3IgKHRhYmxlPSB0aGQtPm9wZW5fdGFibGVzOyB0YWJsZTsgdGFibGU9IHRh YmxlLT5uZXh0KQogICB7Ci0gICAgbmV4dD0gdGFibGUtPm5leHQ7Ci0gICAgREJVR19QUklOVCgi dGNhY2hlIiwgKCJjaGVjayB0YWJsZTogJyVzJy4nJXMnIDB4JWx4ICBuZXh0OiAweCVseCIsCisg ICAgREJVR19QUklOVCgidGNhY2hlIiwgKCJjaGVjayB0YWJsZTogJyVzJy4nJXMnIDB4JWx4IiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPnMtPmRiLnN0ciwgdGFibGUtPnMtPnRh YmxlX25hbWUuc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgdGFibGUsIChs b25nKSBuZXh0KSk7Ci0gICAgLyogUmVhdHRhY2ggY2hpbGRyZW4gZm9yIE1FUkdFIHRhYmxlcyB3 aXRoICJjbG9zZWQgZGF0YSBmaWxlcyIgb25seS4gKi8KLSAgICBpZiAodGFibGUtPmNoaWxkX2wg JiYgIXRhYmxlLT5jaGlsZHJlbl9hdHRhY2hlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KGxvbmcpIHRhYmxlKSk7CisgICAgLyoKKyAgICAgIFJlYXR0YWNoIGNoaWxkcmVuIG9ubHkgZm9y IE1FUkdFIHRhYmxlcyB0aGF0IGhhZCBjaGlsZHJlbiBvciBwYXJlbnQKKyAgICAgIHdpdGggImNs b3NlZCBkYXRhIGZpbGVzIiBhbmQgd2VyZSByZW9wZW4uIEZvciBleHRyYSBzYWZldHkgc2tpcCBN RVJHRQorICAgICAgdGFibGVzIHdoaWNoIHdlIGZhaWxlZCB0byByZW9wZW4gKHNob3VsZCBub3Qg aGFwcGVuIHdpdGggY3VycmVudCBjb2RlKS4KKyAgICAqLworICAgIGlmICh0YWJsZS0+Y2hpbGRf bCAmJiB0YWJsZS0+cGFyZW50ICE9ICZiYWRfbWVyZ2VfbWFya2VyICYmCisgICAgICAgICF0YWJs ZS0+Y2hpbGRyZW5fYXR0YWNoZWQpCiAgICAgewogICAgICAgREJVR19QUklOVCgidGNhY2hlIiwg KCJNRVJHRSBwYXJlbnQsIGF0dGFjaCBjaGlsZHJlbiIpKTsKLSAgICAgIGlmKHRhYmxlLT5maWxl LT5leHRyYShIQV9FWFRSQV9BVFRBQ0hfQ0hJTERSRU4pKQorICAgICAgaWYgKHRhYmxlLT5maWxl LT5leHRyYShIQV9FWFRSQV9BVFRBQ0hfQ0hJTERSRU4pKQogICAgICAgewogICAgICAgICBteV9l cnJvcihFUl9DQU5UX1JFT1BFTl9UQUJMRSwgTVlGKDApLCB0YWJsZS0+YWxpYXMpOwogICAgICAg ICBlcnJvcj0gVFJVRTsKLSAgICAgICAgLyogUmVtb3ZlIHRhYmxlIGZyb20gb3Blbl90YWJsZXMu ICovCi0gICAgICAgICpwcnZfcD0gbmV4dDsKLSAgICAgICAgaWYgKG5leHQpCi0gICAgICAgICAg cHJ2X3A9ICZuZXh0LT5uZXh0OwotICAgICAgICAvKiBTdGFjayB0YWJsZSBvbiBlcnJvciBsaXN0 LiAqLwotICAgICAgICB0YWJsZS0+bmV4dD0gKmVycl90YWJsZXNfcDsKLSAgICAgICAgKmVycl90 YWJsZXNfcD0gdGFibGU7Ci0gICAgICAgIGNvbnRpbnVlOworICAgICAgICBtYXJrX21lcmdlX3Bh cmVudF9hbmRfY2hpbGRyZW5fYXNfYmFkKHRhYmxlKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAg ICAgIHsKQEAgLTMyNjQsNyArMzI5MCw2IEBAIHN0YXRpYyBib29sIHJlYXR0YWNoX21lcmdlKFRI RCAqdGhkLCBUQUIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+cy0+dGFibGVf bmFtZS5zdHIsIChsb25nKSB0YWJsZSkpOwogICAgICAgfQogICAgIH0KLSAgICBwcnZfcD0gJnRh YmxlLT5uZXh0OwogICB9CiAgIERCVUdfUkVUVVJOKGVycm9yKTsKIH0KQEAgLTMyOTQsNyArMzMx OSw2IEBAIGJvb2wgcmVvcGVuX3RhYmxlcyhUSEQgKnRoZCwgYm9vbCBnZXRfbG8KIHsKICAgVEFC TEUgKnRhYmxlLCpuZXh0LCoqcHJldjsKICAgVEFCTEUgKip0YWJsZXMsKip0YWJsZXNfcHRyOwkJ CS8vIEZvciBsb2NrcwotICBUQUJMRSAqZXJyX3RhYmxlcz0gTlVMTDsKICAgYm9vbCBlcnJvcj0w LCBub3RfdXNlZDsKICAgYm9vbCBtZXJnZV90YWJsZV9mb3VuZD0gRkFMU0U7CiAgIGNvbnN0IHVp bnQgZmxhZ3M9IE1ZU1FMX0xPQ0tfTk9USUZZX0lGX05FRURfUkVPUEVOIHwKQEAgLTMzMjgsMjkg KzMzNTIsNjkgQEAgYm9vbCByZW9wZW5fdGFibGVzKFRIRCAqdGhkLCBib29sIGdldF9sbwogICBm b3IgKHRhYmxlPXRoZC0+b3Blbl90YWJsZXM7IHRhYmxlIDsgdGFibGU9bmV4dCkKICAgewogICAg IHVpbnQgZGJfc3RhdD10YWJsZS0+ZGJfc3RhdDsKKyAgICBUQUJMRSAqcGFyZW50PSB0YWJsZS0+ Y2hpbGRfbCA/IHRhYmxlIDogdGFibGUtPnBhcmVudDsKICAgICBuZXh0PXRhYmxlLT5uZXh0Owog ICAgIERCVUdfUFJJTlQoInRjYWNoZSIsICgib3BlbiB0YWJsZTogJyVzJy4nJXMnIDB4JWx4ICAi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJlbnQ6IDB4JWx4ICBkYl9zdGF0OiAldSIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5zLT5kYi5zdHIsIHRhYmxlLT5zLT50 YWJsZV9uYW1lLnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHRhYmxlLCAo bG9uZykgdGFibGUtPnBhcmVudCwgZGJfc3RhdCkpOwotICAgIGlmICh0YWJsZS0+Y2hpbGRfbCAm JiAhZGJfc3RhdCkKKyAgICAvKgorICAgICAgSWYgd2UgbmVlZCB0byByZW9wZW4gY2hpbGQgb3Ig cGFyZW50IHRhYmxlIGluIGEgTUVSR0UgdGFibGUsIHRoZW4KKyAgICAgIGNoaWxkcmVuIGluIHRo aXMgTUVSR0UgdGFibGUgaGFzIHRvIGJlIGFscmVhZHkgZGV0YWNoZWQgYXQgdGhpcworICAgICAg cG9pbnQuCisgICAgKi8KKyAgICBEQlVHX0FTU0VSVChkYl9zdGF0IHx8ICFwYXJlbnQgfHwgIXBh cmVudC0+Y2hpbGRyZW5fYXR0YWNoZWQpOworICAgIC8qCisgICAgICBUaGFua3MgdG8gdGhlIGFi b3ZlIGFzc3VtcHRpb24gdGhlIGJlbG93IGNvbmRpdGlvbiB3aWxsIGd1YXJhbnRlZSB0aGF0Cisg ICAgICBtZXJnZV90YWJsZV9mb3VuZCBpcyBUUlVFIHdoZW4gd2UgbmVlZCB0byByZW9wZW4gY2hp bGQgb3IgcGFyZW50IHRhYmxlLgorICAgICAgTm90ZSB0aGF0IGl0IHdvcmtzIGV2ZW4gaW4gc2l0 dWF0aW9uIHdoZW4gaXQgaXMgb25seSBhIGNoaWxkIGFuZCBub3QgYQorICAgICAgcGFyZW50IHRo YXQgbmVlZHMgcmVvcGVuICh0aGlzIGNhbiBoYXBwZW4gd2hlbiBnZXRfbG9ja3MgPT0gRkFMU0Up LgorICAgICovCisgICAgaWYgKHRhYmxlLT5jaGlsZF9sICYmICF0YWJsZS0+Y2hpbGRyZW5fYXR0 YWNoZWQpCiAgICAgICBtZXJnZV90YWJsZV9mb3VuZD0gVFJVRTsKLSAgICBpZiAoIXRhYmxlcyB8 fCAoIWRiX3N0YXQgJiYgcmVvcGVuX3RhYmxlKHRhYmxlKSkpCisKKyAgICBpZiAoIXRhYmxlcykK ICAgICB7Ci0gICAgICBteV9lcnJvcihFUl9DQU5UX1JFT1BFTl9UQUJMRSwgTVlGKDApLCB0YWJs ZS0+YWxpYXMpOwogICAgICAgLyoKLSAgICAgICAgSWYgd2UgY291bGQgbm90IGFsbG9jYXRlICd0 YWJsZXMnLCB3ZSBtYXkgY2xvc2Ugb3BlbiB0YWJsZXMKLSAgICAgICAgaGVyZS4gSWYgYSBNRVJH RSB0YWJsZSBpcyBhZmZlY3RlZCwgZGV0YWNoIHRoZSBjaGlsZHJlbiBmaXJzdC4KLSAgICAgICAg SXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjbGVhciB0aGUgY2hpbGQgb3IgcGFyZW50IHRhYmxlIHJl ZmVyZW5jZQotICAgICAgICBvZiB0aGlzIHRhYmxlIGJlY2F1c2UgdGhlIFRBQkxFIGlzIGZyZWVk LiBCdXQgd2UgbmVlZCB0byBjbGVhcgotICAgICAgICB0aGUgY2hpbGQgb3IgcGFyZW50IHJlZmVy ZW5jZXMgb2YgdGhlIG90aGVyIGJlbG9uZ2luZyB0YWJsZXMgc28KLSAgICAgICAgdGhhdCB0aGV5 IGNhbm5vdCBiZSBtb3ZlZCBpbnRvIHRoZSB1bnVzZWRfdGFibGVzIGNoYWluIHdpdGgKLSAgICAg ICAgdGhlc2UgcG9pbnRlcnMgc2V0LgorICAgICAgICBJZiB3ZSBjb3VsZCBub3QgYWxsb2NhdGUg J3RhYmxlcycgd2UgY2xvc2UgQUxMIG9wZW4gdGFibGVzIGhlcmUuCisgICAgICAgIEJlZm9yZSBj bG9zaW5nIE1FUkdFIGNoaWxkIG9yIHBhcmVudCB3ZSBuZWVkIHRvIGRldGFjaCBjaGlsZHJlbgor ICAgICAgICBhbmQvb3IgY2xlYXIgcmVmZXJlbmNlcyBpbi90byB0aGVtLgogICAgICAgKi8KLSAg ICAgIGlmICh0YWJsZS0+Y2hpbGRfbCB8fCB0YWJsZS0+cGFyZW50KQorICAgICAgaWYgKHBhcmVu dCkKICAgICAgICAgZGV0YWNoX21lcmdlX2NoaWxkcmVuKHRhYmxlLCBUUlVFKTsKLSAgICAgIFZP SUQoaGFzaF9kZWxldGUoJm9wZW5fY2FjaGUsKHVjaGFyKikgdGFibGUpKTsKLSAgICAgIGVycm9y PTE7CisgICAgfQorICAgIGVsc2UgaWYgKHRhYmxlLT5wYXJlbnQgPT0gJmJhZF9tZXJnZV9tYXJr ZXIpCisgICAgeworICAgICAgLyoKKyAgICAgICAgVGhpcyBpcyBlaXRoZXIgYSBjaGlsZCBvciBh IHBhcmVudCBvZiBhIE1FUkdFIHRhYmxlIGZvciB3aGljaAorICAgICAgICB3ZSBhbHJlYWR5IGRl Y2lkZWQgdGhhdCB3ZSBhcmUgdW5hYmxlIHRvIHJlb3BlbiBpdC4gQ2xvc2UgaXQuCisKKyAgICAg ICAgUmVzZXQgcGFyZW50IHJlZmVyZW5jZSwgaXQgbWF5IGJlIHVzZWQgd2hpbGUgZnJlZWluZyB0 aGUgdGFibGUuCisgICAgICAqLworICAgICAgdGFibGUtPnBhcmVudD0gTlVMTDsKKyAgICB9Cisg ICAgZWxzZSBpZiAoIWRiX3N0YXQgJiYgcmVvcGVuX3RhYmxlKHRhYmxlKSkKKyAgICB7CisgICAg ICAvKgorICAgICAgICBJZiB3ZSBmYWlsIHRvIHJlb3BlbiBhIGNoaWxkIG9yIGEgcGFyZW50IGlu IGEgTUVSR0UgdGFibGUgYW5kIHRoZQorICAgICAgICBNRVJHRSB0YWJsZSBpcyBhZmZlY3RlZCBm b3IgdGhlIGZpcnN0IHRpbWUsIG1hcmsgYWxsIHJlbGV2YW50IHRhYmxlcworICAgICAgICBpbnZh bGlkLiBPdGhlcndpc2UgaGFuZGxlIGl0IGFzIHVzdWFsLgorCisgICAgICAgIEFsbCBpbiBhbGwg d2UgbXVzdCBlbmQgdXAgd2l0aDoKKyAgICAgICAgLSBjaGlsZCB0YWJsZXMgYXJlIGRldGFjaGVk IGZyb20gcGFyZW50LiBUaGlzIHdhcyBkb25lIGVhcmxpZXIsCisgICAgICAgICAgYnV0IGNoaWxk PC0+cGFyZW50IHJlZmVyZW5jZXMgd2VyZSBrZXB0IHZhbGlkIGZvciByZW9wZW4uCisgICAgICAg IC0gcGFyZW50IGlzIG5vdCBpbiB0aGUgdG8tYmUtbG9ja2VkIHRhYmxlcworICAgICAgICAtIGFs bCBjaGlsZCB0YWJsZXMgYW5kIHBhcmVudCBhcmUgbm90IGluIHRoZSBUSEQ6Om9wZW5fdGFibGVz LgorICAgICAgICAtIGFsbCBjaGlsZCB0YWJsZXMgYW5kIHBhcmVudCBhcmUgbm90IGluIHRoZSBv cGVuX2NhY2hlLgorCisgICAgICAgIFBsZWFzZSBub3RlIHRoYXQgYmVsb3cgd2UgZG8gYWRkaXRp b25hbCBwYXNzIHRocm91Z2ggVEhEOjpvcGVuX3RhYmxlcworICAgICAgICBsaXN0IHRvIGFjaGll dmUgdGhlIGxhc3QgdGhyZWUgcG9pbnRzLgorICAgICAgKi8KKyAgICAgIGlmIChwYXJlbnQpCisg ICAgICB7CisgICAgICAgIG1hcmtfbWVyZ2VfcGFyZW50X2FuZF9jaGlsZHJlbl9hc19iYWQocGFy ZW50KTsKKyAgICAgICAgdGFibGUtPnBhcmVudD0gTlVMTDsKKyAgICAgIH0KICAgICB9CiAgICAg ZWxzZQogICAgIHsKQEAgLTMzNjYsMjEgKzM0MzAsNTYgQEAgYm9vbCByZW9wZW5fdGFibGVzKFRI RCAqdGhkLCBib29sIGdldF9sbwogCXRhYmxlLT5zLT52ZXJzaW9uPTA7CiAJdGFibGUtPm9wZW5f cGxhY2Vob2xkZXI9IDA7CiAgICAgICB9CisgICAgICBjb250aW51ZTsKICAgICB9CisgICAgbXlf ZXJyb3IoRVJfQ0FOVF9SRU9QRU5fVEFCTEUsIE1ZRigwKSwgdGFibGUtPmFsaWFzKTsKKyAgICBW T0lEKGhhc2hfZGVsZXRlKCZvcGVuX2NhY2hlLCAodWNoYXIgKikgdGFibGUpKTsKKyAgICBlcnJv cj0gMTsKICAgfQogICAqcHJldj0wOwogICAvKgogICAgIFdoZW4gYWxsIHRhYmxlcyBhcmUgb3Bl biBhZ2Fpbiwgd2UgY2FuIHJlLWF0dGFjaCBNRVJHRSBjaGlsZHJlbiB0bwotICAgIHRoZWlyIHBh cmVudHMuIEFsbCBUQUJMRSBvYmplY3RzIGFyZSBzdGlsbCBwcmVzZW50LgorICAgIHRoZWlyIHBh cmVudHMuCisKKyAgICBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcmVvcGVuaW5nIGEgY2hp bGQgb3IgYSBwYXJlbnQgb2YgYSBNRVJHRQorICAgIHRhYmxlLCBvciB3aGlsZSByZWF0dGFjaGlu ZyBjaGlsZCB0YWJsZXMgdG8gdGhlaXIgcGFyZW50cywgc29tZSB0YWJsZXMKKyAgICBtYXkgaGF2 ZSBiZWVuIGtlcHQgb3BlbiBidXQgbWFya2VkIGZvciBjbG9zZSB3aXRoIGJhZF9tZXJnZV9tYXJr ZXIuCisgICAgQ2xvc2UgdGhlc2UgdGFibGVzIG5vdy4KICAgKi8KLSAgREJVR19QUklOVCgidGNh Y2hlIiwgKCJyZS1hdHRhY2hpbmcgTUVSR0UgdGFibGVzOiAlZCIsIG1lcmdlX3RhYmxlX2ZvdW5k KSk7Ci0gIGlmICghZXJyb3IgJiYgbWVyZ2VfdGFibGVfZm91bmQgJiYgcmVhdHRhY2hfbWVyZ2Uo dGhkLCAmZXJyX3RhYmxlcykpCisgIGlmICh0YWJsZXMgJiYgbWVyZ2VfdGFibGVfZm91bmQgJiYg KGVycm9yfD0gcmVhdHRhY2hfbWVyZ2UodGhkKSkpCiAgIHsKLSAgICB3aGlsZSAoZXJyX3RhYmxl cykKKyAgICBwcmV2PSAmdGhkLT5vcGVuX3RhYmxlczsKKyAgICBmb3IgKHRhYmxlPSB0aGQtPm9w ZW5fdGFibGVzOyB0YWJsZTsgdGFibGU9IG5leHQpCiAgICAgewotICAgICAgVk9JRChoYXNoX2Rl bGV0ZSgmb3Blbl9jYWNoZSwgKHVjaGFyKikgZXJyX3RhYmxlcykpOwotICAgICAgZXJyX3RhYmxl cz0gZXJyX3RhYmxlcy0+bmV4dDsKKyAgICAgIG5leHQ9IHRhYmxlLT5uZXh0OworICAgICAgaWYg KHRhYmxlLT5wYXJlbnQgPT0gJmJhZF9tZXJnZV9tYXJrZXIpCisgICAgICB7CisgICAgICAgIC8q IFJlbW92ZSBtZXJnZSBwYXJlbnQgZnJvbSB0by1iZS1sb2NrZWQgdGFibGVzIGFycmF5LiAqLwor ICAgICAgICBpZiAoZ2V0X2xvY2tzICYmIHRhYmxlLT5jaGlsZF9sKQorICAgICAgICB7CisgICAg ICAgICAgVEFCTEUgKip0OworICAgICAgICAgIGZvciAodD0gdGFibGVzOyB0IDwgdGFibGVzX3B0 cjsgdCsrKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgqdCA9PSB0YWJsZSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgdGFibGVzX3B0ci0tOworICAgICAgICAgICAgICBtZW1t b3ZlKHQsIHQgKyAxLCAodGFibGVzX3B0ciAtIHQpICogc2l6ZW9mKFRBQkxFICopKTsKKyAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICAgIC8qIFJlc2V0IHBhcmVudCByZWZlcmVuY2UsIGl0IG1heSBiZSB1c2VkIHdoaWxlIGZy ZWVpbmcgdGhlIHRhYmxlLiAqLworICAgICAgICB0YWJsZS0+cGFyZW50PSBOVUxMOworICAgICAg ICAvKiBGcmVlIHRhYmxlLiAqLworICAgICAgICBWT0lEKGhhc2hfZGVsZXRlKCZvcGVuX2NhY2hl LCAodWNoYXIgKikgdGFibGUpKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAg ICAgKnByZXY9IHRhYmxlOworICAgICAgICBwcmV2PSAmdGFibGUtPm5leHQ7CisgICAgICB9CiAg ICAgfQorICAgICpwcmV2PSAwOwogICB9CiAgIERCVUdfUFJJTlQoInRjYWNoZSIsICgib3BlbiB0 YWJsZXMgdG8gbG9jazogJXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQpICh0YWJs ZXNfcHRyIC0gdGFibGVzKSkpOwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2gg ZW1haWxzKS4=