[COMMIT] Fix a bug with silent corruption of a fixnum used in a string's plist.
Aidan Kehoe <[email protected]> Sun, 24 Apr 2016 23:40:47 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u ZXQ+CiMgRGF0ZSAxNDYxNTM3NTk3IC0zNjAwCiMgICAgICBTdW4gQXByIDI0IDIzOjM5OjU3IDIw MTYgKzAxMDAKIyBOb2RlIElEIGI3YWM2NmFjNWU1NDc0MzM5YzNlOGE3ZWE0ODYxZmE1NWQ5NGE4 NzEKIyBQYXJlbnQgIDlmY2E3NjZmOWQzMWYxNDIyZjEyODc3MjMxYmMyM2I0YmQ4MzNhOTcKRml4 IGEgYnVnIHdpdGggc2lsZW50IGNvcnJ1cHRpb24gb2YgYSBmaXhudW0gdXNlZCBpbiBhIHN0cmlu ZydzIHBsaXN0LgoKc3JjL0NoYW5nZUxvZyBhZGRpdGlvbjoKCjIwMTYtMDQtMjQgIEFpZGFuIEtl aG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CgoJRml4IGEgYnVnIHdoZXJlIGEgZml4bnVtIHVz ZWQgYXMgYSBrZXkgaW4gYSBzdHJpbmcncyBwbGlzdCB3YXMKCXNpbGVudGx5IGNvcnJ1cHRlZC4K CSogYWxsb2MuYzoKCSogYWxsb2MuYyAoc3RyaW5nX3BsaXN0X3B0cik6CglDaGVjayBhIGZsYWcg aW4gdGhlIGhlYWRlciB0byBmaW5kIG91dCB3aGV0aGVyIHRoaXMgc3RyaW5nIHdhcwoJZXZlciBt b2RpZmllZCwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlCglj b3JyZXNwb25kaW5nIGVudHJ5IG9mIHRoZSBwbGlzdC4KCSogYWxsb2MuYyAoc3RyaW5nX2V4dGVu dF9pbmZvKToKCU5ldyBmdW5jdGlvbiwgZW5jYXBzdWxhdGUgYWNjZXNzIHRvIHRoZSBzdHJpbmcn cyBwbGlzdC4KCSogYWxsb2MuYyAoYnVtcF9zdHJpbmdfbW9kaWZmKToKCU1vdmUgdGhpcyBhY2Nl c3NvciBoZXJlLgoJKiBhbGxvYy5jIChtYWtlX3VuaW5pdF9zdHJpbmcpOgoJQ2xlYXIgdGhlIE1P RElGRlAgaGVhZGVyIGZsYWcgb24gYWxsb2NhdGlvbi4KCSogYWxsb2MuYyAoRnN0cmluZ19tb2Rp ZmllZF90aWNrKToKCU1vdmUgdGhpcyBoZXJlIGZyb20gZm5zLmMsIGl0J3MgYW4gYWNjZXNzb3Ig ZnVuY3Rpb24sIGl0IG1ha2VzCgltb3JlIHNlbnNlIHRvIGhhdmUgaXQgaGVyZS4KCSogYWxsb2Mu YyAoc3ltc19vZl9hbGxvYyk6CgkqIGV4dGVudHMuYzoKCSogZXh0ZW50cy5jIChidWZmZXJfb3Jf c3RyaW5nX2V4dGVudF9pbmZvKToKCVVzZSBzdHJpbmdfZXh0ZW50X2luZm8gKCkgaGVyZS4KCSog Zm5zLmM6CgkqIGZucy5jIChzeW1zX29mX2Zucyk6CglSZW1vdmUgIydzdHJpbmctbW9kaWZpZWQt dGljaywgYnVtcF9zdHJpbmdfbW9kaWZmKCkgZnJvbSB0aGlzCglmaWxlLgoJKiBsaXNwLmg6Cgkq IGxpc3AuaCAoc3RydWN0IExpc3BfU3RyaW5nKToKCUFkZCBhIGhlYWRlciBmbGFnIGhlcmUsIGRv Y3VtZW50aW5nIHdoZXRoZXIgYSBzdHJpbmcgaGFzIGV2ZXIgYmVlbgoJbW9kaWZpZWQuCgkqIGxp c3AuaCAoTUFYX1NUUklOR19BU0NJSV9CRUdJTik6IE5ldyBkZWZpbml0aW9uLgoJKiBsaXNwLmgg KFhTVFJJTkdfTU9ESUZGUCk6CglNYWtlIHRoZSBmbGFnIGF2YWlsYWJsZS4KCnRlc3RzL0NoYW5n ZUxvZyBhZGRpdGlvbjoKCjIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2Fy ZC5uZXQ+CgoJKiBhdXRvbWF0ZWQvbGlzcC10ZXN0cy5lbDoKCUNoZWNrIHRoYXQgYSBmaXhudW0g d29ya3MgY29ycmVjdGx5IGFzIGEga2V5IGluIGEgc3RyaW5nIHBsaXN0LCBhCglidWcganVzdCBm aXhlZC4KCmRpZmYgLXIgOWZjYTc2NmY5ZDMxIC1yIGI3YWM2NmFjNWU1NCBzcmMvQ2hhbmdlTG9n Ci0tLSBhL3NyYy9DaGFuZ2VMb2cJVGh1IEFwciAxNCAwMToxMjoxMiAyMDE2ICswMTAwCisrKyBi L3NyYy9DaGFuZ2VMb2cJU3VuIEFwciAyNCAyMzozOTo1NyAyMDE2ICswMTAwCkBAIC0xLDMgKzEs MzcgQEAKKzIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisK KwlGaXggYSBidWcgd2hlcmUgYSBmaXhudW0gdXNlZCBhcyBhIGtleSBpbiBhIHN0cmluZydzIHBs aXN0IHdhcworCXNpbGVudGx5IGNvcnJ1cHRlZC4KKwkqIGFsbG9jLmM6CisJKiBhbGxvYy5jIChz dHJpbmdfcGxpc3RfcHRyKToKKwlDaGVjayBhIGZsYWcgaW4gdGhlIGhlYWRlciB0byBmaW5kIG91 dCB3aGV0aGVyIHRoaXMgc3RyaW5nIHdhcworCWV2ZXIgbW9kaWZpZWQsIHJhdGhlciB0aGFuIGFz c3VtaW5nIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZQorCWNvcnJlc3BvbmRpbmcgZW50cnkgb2Yg dGhlIHBsaXN0LgorCSogYWxsb2MuYyAoc3RyaW5nX2V4dGVudF9pbmZvKToKKwlOZXcgZnVuY3Rp b24sIGVuY2Fwc3VsYXRlIGFjY2VzcyB0byB0aGUgc3RyaW5nJ3MgcGxpc3QuCisJKiBhbGxvYy5j IChidW1wX3N0cmluZ19tb2RpZmYpOgorCU1vdmUgdGhpcyBhY2Nlc3NvciBoZXJlLgorCSogYWxs b2MuYyAobWFrZV91bmluaXRfc3RyaW5nKToKKwlDbGVhciB0aGUgTU9ESUZGUCBoZWFkZXIgZmxh ZyBvbiBhbGxvY2F0aW9uLgorCSogYWxsb2MuYyAoRnN0cmluZ19tb2RpZmllZF90aWNrKToKKwlN b3ZlIHRoaXMgaGVyZSBmcm9tIGZucy5jLCBpdCdzIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLCBpdCBt YWtlcworCW1vcmUgc2Vuc2UgdG8gaGF2ZSBpdCBoZXJlLgorCSogYWxsb2MuYyAoc3ltc19vZl9h bGxvYyk6CisJKiBleHRlbnRzLmM6CisJKiBleHRlbnRzLmMgKGJ1ZmZlcl9vcl9zdHJpbmdfZXh0 ZW50X2luZm8pOgorCVVzZSBzdHJpbmdfZXh0ZW50X2luZm8gKCkgaGVyZS4KKwkqIGZucy5jOgor CSogZm5zLmMgKHN5bXNfb2ZfZm5zKToKKwlSZW1vdmUgIydzdHJpbmctbW9kaWZpZWQtdGljaywg YnVtcF9zdHJpbmdfbW9kaWZmKCkgZnJvbSB0aGlzCisJZmlsZS4KKwkqIGxpc3AuaDoKKwkqIGxp c3AuaCAoc3RydWN0IExpc3BfU3RyaW5nKToKKwlBZGQgYSBoZWFkZXIgZmxhZyBoZXJlLCBkb2N1 bWVudGluZyB3aGV0aGVyIGEgc3RyaW5nIGhhcyBldmVyIGJlZW4KKwltb2RpZmllZC4KKwkqIGxp c3AuaCAoTUFYX1NUUklOR19BU0NJSV9CRUdJTik6IE5ldyBkZWZpbml0aW9uLgorCSogbGlzcC5o IChYU1RSSU5HX01PRElGRlApOgorCU1ha2UgdGhlIGZsYWcgYXZhaWxhYmxlLgorCiAyMDE2LTA0 LTE0ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgogCiAJKiBwcmludC5jIChv dXRwdXRfc3RyaW5nKToKZGlmZiAtciA5ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9h bGxvYy5jCi0tLSBhL3NyYy9hbGxvYy5jCVRodSBBcHIgMTQgMDE6MTI6MTIgMjAxNiArMDEwMAor KysgYi9zcmMvYWxsb2MuYwlTdW4gQXByIDI0IDIzOjM5OjU3IDIwMTYgKzAxMDAKQEAgLTI2NzIs MTUgKzI2NzIsMjEgQEAKICAgeyBYRF9FTkQgfQogfTsKIAotLyogV2Ugc3RvcmUgdGhlIHN0cmlu ZydzIGV4dGVudCBpbmZvIGFzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBzdHJpbmcncwotICAg cHJvcGVydHkgbGlzdDsgYW5kIHRoZSBzdHJpbmcncyBNT0RJRkYgYXMgdGhlIGZpcnN0IG9yIHNl Y29uZCBlbGVtZW50Ci0gICBvZiB0aGUgc3RyaW5nJ3MgcHJvcGVydHkgbGlzdCAoZGVwZW5kaW5n IG9uIHdoZXRoZXIgdGhlIGV4dGVudCBpbmZvCi0gICBpcyBwcmVzZW50KSwgYnV0IG9ubHkgaWYg dGhlIHN0cmluZyBoYXMgYmVlbiBtb2RpZmllZC4gIFRoaXMgaXMgdWdseQotICAgYnV0IGl0IHJl ZHVjZXMgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHZhc3QKLSAg IG1ham9yaXR5IG9mIGNhc2VzLCB3aGVyZSB0aGUgc3RyaW5nIGlzIG5ldmVyIG1vZGlmaWVkIGFu ZCBoYXMgbm8KLSAgIGV4dGVudCBpbmZvLgotCi0gICAjIyMjIFRoaXMgbWVhbnMgeW91IGNhbid0 IHVzZSBhbiBpbnQgYXMgYSBrZXkgaW4gYSBzdHJpbmcncyBwbGlzdC4gKi8KKy8qIFRoZSB2YXN0 IG1ham9yaXR5IG9mIHN0cmluZ3MgaGF2ZSBubyBhc3NvY2lhdGVkIGV4dGVudCBpbmZvIGFuZCB3 aWxsIG5ldmVyCisgICBiZSBtb2RpZmllZC4gSW4gdGhlIGludGVyZXN0IG9mIGNvbnNlcnZpbmcg bWVtb3J5LCB3ZSBkbyBub3Qga2VlcCBleHRlbnQKKyAgIGluZm8gb3IgdGhlIG1vZGlmaWVkIGNv dW50ZXIgZGlyZWN0bHkgaW4gdGhlIHN0cmluZyBvYmplY3QuIEluc3RlYWQsIHdlCisgICBhYnVz ZSB0aGUgc3RyaW5nIHBsaXN0IGF0dHJpYnV0ZS4KKworICAgSWYgdGhlIGZpcnN0IGVsZW1lbnQg b2YgdGhlIHBsaXN0IGlzIEVYVEVOVF9JTkZPUCAoYSB0eXBlIG9mIG9iamVjdCBub3QKKyAgIHZp c2libGUgdG8gTGlzcCBhbmQgd2hpY2ggY29uc2VxdWVudGx5IHdpbGwgbmV2ZXIgZW5kIHVwIGlu IHRoZSBwbGlzdCBpbgorICAgdGhlIG5vcm1hbCBjb3Vyc2Ugb2YgZXZlbnRzKSwgdGhlbiB0aGF0 IGlzIHRoZSBzdHJpbmcncyBleHRlbnQgaW5mby4KKworICAgSWYgdGhlIG5leHQgZWxlbWVudCBv ZiB0aGUgcGxpc3QgaXMgYSBmaXhudW0gYW5kIHdlIGhhdmUgZmxpcHBlZCBhIGJpdCBpbgorICAg dGhlIGhlYWRlciB0byBkb2N1bWVudCB0aGF0IHRoaXMgc3RyaW5nIGhhcyBldmVyIGJlZW4gbW9k aWZpZWQsIHRoZW4gdGhhdAorICAgZml4bnVtIGlzIHRoZSBzdHJpbmcncyBtb2RpZmllZCBjb3Vu dGVyLgorCisgICBUaGUgc3RyaW5nJ3MgdHJ1ZSBwbGlzdCBzdGFydHMgYWZ0ZXIgYW55IGV4dGVu dCBpbmZvIGFuZCBhbnkgbW9kaWZpZWQKKyAgIHRpY2suICovCiAKIHN0YXRpYyBMaXNwX09iamVj dCAqCiBzdHJpbmdfcGxpc3RfcHRyIChMaXNwX09iamVjdCBzdHJpbmcpCkBAIC0yNjg5LDggKzI2 OTUsMTEgQEAKIAogICBpZiAoQ09OU1AgKCpwdHIpICYmIEVYVEVOVF9JTkZPUCAoWENBUiAoKnB0 cikpKQogICAgIHB0ciA9ICZYQ0RSICgqcHRyKTsKLSAgaWYgKENPTlNQICgqcHRyKSAmJiBGSVhO VU1QIChYQ0FSICgqcHRyKSkpCi0gICAgcHRyID0gJlhDRFIgKCpwdHIpOworICBpZiAoQ09OU1Ag KCpwdHIpICYmIFhTVFJJTkdfTU9ESUZGUCAoc3RyaW5nKSkKKyAgICB7CisgICAgICBzdHJ1Y3R1 cmVfY2hlY2tpbmdfYXNzZXJ0IChGSVhOVU1QIChYQ0FSICgqcHRyKSkpOworICAgICAgcHRyID0g JlhDRFIgKCpwdHIpOworICAgIH0KICAgcmV0dXJuIHB0cjsKIH0KIApAQCAtMjcxOSw2ICsyNzI4 LDQyIEBACiAgIHJldHVybiAqc3RyaW5nX3BsaXN0X3B0ciAoc3RyaW5nKTsKIH0KIAorc3RydWN0 IGV4dGVudF9pbmZvICoKK3N0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmplY3Qgc3RyaW5nKQor eworICBMaXNwX09iamVjdCBwbGlzdCA9IFhTVFJJTkdfUExJU1QgKHN0cmluZyk7CisKKyAgaWYg KENPTlNQIChwbGlzdCkgJiYgRVhURU5UX0lORk9QIChYQ0FSIChwbGlzdCkpKQorICAgIHJldHVy biBYRVhURU5UX0lORk8gKFhDQVIgKHBsaXN0KSk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3Zv aWQKK2J1bXBfc3RyaW5nX21vZGlmZiAoTGlzcF9PYmplY3Qgc3RyKQoreworICBMaXNwX09iamVj dCAqcHRyID0gJlhTVFJJTkdfUExJU1QgKHN0cik7CisKKyNpZmRlZiBJMThOMworICAvKiAjIyMj IHJlbW92ZSB0aGUgYHN0cmluZy10cmFuc2xhdGFibGUnIHByb3BlcnR5IGZyb20gdGhlIHN0cmlu ZywKKyAgICAgaWYgdGhlcmUgaXMgb25lLiAqLworI2VuZGlmCisKKyAgLyogc2tpcCBvdmVyIGV4 dGVudCBpbmZvIGlmIGl0J3MgdGhlcmUgKi8KKyAgaWYgKENPTlNQICgqcHRyKSAmJiBFWFRFTlRf SU5GT1AgKFhDQVIgKCpwdHIpKSkKKyAgICBwdHIgPSAmWENEUiAoKnB0cik7CisgIGlmIChDT05T UCAoKnB0cikgJiYgWFNUUklOR19NT0RJRkZQIChzdHIpKQorICAgIHsKKyAgICAgIHN0cnVjdHVy ZV9jaGVja2luZ19hc3NlcnQgKEZJWE5VTVAgKFhDQVIgKCpwdHIpKSk7CisgICAgICBYQ0FSICgq cHRyKSA9IG1ha2VfZml4bnVtICgxICsgWEZJWE5VTSAoWENBUiAoKnB0cikpKTsKKyAgICB9Cisg IGVsc2UKKyAgICB7CisgICAgICBYU0VUX1NUUklOR19NT0RJRkZQIChzdHIpOworICAgICAgKnB0 ciA9IEZjb25zIChtYWtlX2ZpeG51bSAoMSksICpwdHIpOworICAgIH0KK30KKwogI2lmbmRlZiBO RVdfR0MKIC8qIE5vIGBmaW5hbGl6ZScsIG9yIGBoYXNoJyBtZXRob2RzLgogICAgaW50ZXJuYWxf aGFzaCgpIGFscmVhZHkga25vd3MgaG93IHRvIGhhc2ggc3RyaW5ncyBhbmQgZmluYWxpemF0aW9u CkBAIC0yOTIzLDYgKzI5NjgsOSBAQAogICAgICBhc2NpaS1sZW5ndGggZmllbGQsIHRvIHNvbWUg bm9uLXplcm8gdmFsdWUuICBXZSBuZWVkIHRvIHplcm8gaXQuICovCiAgIFhTRVRfU1RSSU5HX0FT Q0lJX0JFR0lOICh3cmFwX3N0cmluZyAocyksIDApOwogCisgIC8qIFRoZXkgYWxzbyBvdmVycmlk ZSB0aGUgTU9ESUZGUCBmbGFnLiAqLworICBYQ0xFQVJfU1RSSU5HX01PRElGRlAgKHdyYXBfc3Ry aW5nIChzKSk7CisKICNpZmRlZiBORVdfR0MKICAgc2V0X2xpc3BzdHJpbmdwX2RpcmVjdCAocyk7 CiAgIFNUUklOR19EQVRBX09CSkVDVCAocykgPSAKQEAgLTMyMTYsNiArMzI2NCwzMCBAQAogICBy ZXR1cm4gbWFrZV9zdHJpbmcgKHN0b3JhZ2UsIHAgLSBzdG9yYWdlKTsKIH0KIAorREVGVU4gKCJz dHJpbmctbW9kaWZpZWQtdGljayIsIEZzdHJpbmdfbW9kaWZpZWRfdGljaywgMSwgMSwgMCwgLyoK K1JldHVybiBTVFJJTkcncyB0aWNrIGNvdW50ZXIsIGluY3JlbWVudGVkIGZvciBlYWNoIGNoYW5n ZSB0byB0aGUgc3RyaW5nLgorRWFjaCBzdHJpbmcgaGFzIGEgdGljayBjb3VudGVyIHdoaWNoIGlz IGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgY29udGVudHMKK29mIHRoZSBzdHJpbmcgYXJlIGNo YW5nZWQgKGUuZy4gd2l0aCBgYXNldCcpLiAgSXQgd3JhcHMgYXJvdW5kIG9jY2FzaW9uYWxseS4K KyovCisgICAgICAgKHN0cmluZykpCit7CisgIExpc3BfT2JqZWN0IHBsaXN0OworICBDSEVDS19T VFJJTkcgKHN0cmluZyk7CisKKyAgcGxpc3QgPSBYU1RSSU5HX1BMSVNUIChzdHJpbmcpOworICBp ZiAoQ09OU1AgKHBsaXN0KSAmJiBFWFRFTlRfSU5GT1AgKFhDQVIgKHBsaXN0KSkpCisgICAgewor ICAgICAgcGxpc3QgPSBYQ0RSIChwbGlzdCk7CisgICAgfQorCisgIGlmIChDT05TUCAocGxpc3Qp ICYmIFhTVFJJTkdfTU9ESUZGUCAoc3RyaW5nKSkKKyAgICB7CisgICAgICByZXR1cm4gWENBUiAo cGxpc3QpOworICAgIH0KKworICByZXR1cm4gUXplcm87Cit9CisKIC8qIEluaXRpYWxpemUgdGhl IGFzY2lpX2JlZ2luIG1lbWJlciBvZiBhIHN0cmluZyB0byB0aGUgY29ycmVjdCB2YWx1ZS4gKi8K IAogdm9pZApAQCAtNTk5MSw2ICs2MDYzLDcgQEAKICAgREVGU1VCUiAoRm1ha2VfYml0X3ZlY3Rv cik7CiAgIERFRlNVQlIgKEZtYWtlX3N0cmluZyk7CiAgIERFRlNVQlIgKEZzdHJpbmcpOworICBE RUZTVUJSIChGc3RyaW5nX21vZGlmaWVkX3RpY2spOwogICBERUZTVUJSIChGbWFrZV9zeW1ib2wp OwogICBERUZTVUJSIChGbWFrZV9tYXJrZXIpOwogI2lmZGVmIEFMTE9DX1RZUEVfU1RBVFMKZGlm ZiAtciA5ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9leHRlbnRzLmMKLS0tIGEvc3Jj L2V4dGVudHMuYwlUaHUgQXByIDE0IDAxOjEyOjEyIDIwMTYgKzAxMDAKKysrIGIvc3JjL2V4dGVu dHMuYwlTdW4gQXByIDI0IDIzOjM5OjU3IDIwMTYgKzAxMDAKQEAgLTk0NywyMCArOTQ3LDE3IEBA CiB9CiAKIC8qIEdpdmVuIGFuIGV4dGVudCBvYmplY3QgKHN0cmluZyBvciBidWZmZXIgb3Igbmls KSwgcmV0dXJuIGl0cyBleHRlbnQgaW5mby4KLSAgIFRoaXMgbWF5IGJlIDAgZm9yIGEgc3RyaW5n LiAqLworICAgVGhpcyBtYXkgYmUgTlVMTCBmb3IgYSBzdHJpbmcuICovCiAKIHN0YXRpYyBzdHJ1 Y3QgZXh0ZW50X2luZm8gKgogYnVmZmVyX29yX3N0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmpl Y3Qgb2JqZWN0KQogewogICBpZiAoU1RSSU5HUCAob2JqZWN0KSkKICAgICB7Ci0gICAgICBMaXNw X09iamVjdCBwbGlzdCA9IFhTVFJJTkdfUExJU1QgKG9iamVjdCk7Ci0gICAgICBpZiAoIUNPTlNQ IChwbGlzdCkgfHwgIUVYVEVOVF9JTkZPUCAoWENBUiAocGxpc3QpKSkKLQlyZXR1cm4gMDsKLSAg ICAgIHJldHVybiBYRVhURU5UX0lORk8gKFhDQVIgKHBsaXN0KSk7CisgICAgICByZXR1cm4gc3Ry aW5nX2V4dGVudF9pbmZvIChvYmplY3QpOwogICAgIH0KICAgZWxzZSBpZiAoTklMUCAob2JqZWN0 KSkKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKICAgZWxzZQogICAgIHJldHVybiBY RVhURU5UX0lORk8gKFhCVUZGRVIgKG9iamVjdCktPmV4dGVudF9pbmZvKTsKIH0KZGlmZiAtciA5 ZmNhNzY2ZjlkMzEgLXIgYjdhYzY2YWM1ZTU0IHNyYy9mbnMuYwotLS0gYS9zcmMvZm5zLmMJVGh1 IEFwciAxNCAwMToxMjoxMiAyMDE2ICswMTAwCisrKyBiL3NyYy9mbnMuYwlTdW4gQXByIDI0IDIz OjM5OjU3IDIwMTYgKzAxMDAKQEAgLTMyMCwzOCArMzIwLDYgQEAKICAgcmV0dXJuIGVuZCA8IGxl bjIgPyBRdCA6IFFuaWw7CiB9CiAKLURFRlVOICgic3RyaW5nLW1vZGlmaWVkLXRpY2siLCBGc3Ry aW5nX21vZGlmaWVkX3RpY2ssIDEsIDEsIDAsIC8qCi1SZXR1cm4gU1RSSU5HJ3MgdGljayBjb3Vu dGVyLCBpbmNyZW1lbnRlZCBmb3IgZWFjaCBjaGFuZ2UgdG8gdGhlIHN0cmluZy4KLUVhY2ggc3Ry aW5nIGhhcyBhIHRpY2sgY291bnRlciB3aGljaCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhl IGNvbnRlbnRzCi1vZiB0aGUgc3RyaW5nIGFyZSBjaGFuZ2VkIChlLmcuIHdpdGggYGFzZXQnKS4g IEl0IHdyYXBzIGFyb3VuZCBvY2Nhc2lvbmFsbHkuCi0qLwotICAgICAgIChzdHJpbmcpKQotewot ICBDSEVDS19TVFJJTkcgKHN0cmluZyk7Ci0gIGlmIChDT05TUCAoWFNUUklOR19QTElTVCAoc3Ry aW5nKSkgJiYgRklYTlVNUCAoWENBUiAoWFNUUklOR19QTElTVCAoc3RyaW5nKSkpKQotICAgIHJl dHVybiBYQ0FSIChYU1RSSU5HX1BMSVNUIChzdHJpbmcpKTsKLSAgZWxzZQotICAgIHJldHVybiBR emVybzsKLX0KLQotdm9pZAotYnVtcF9zdHJpbmdfbW9kaWZmIChMaXNwX09iamVjdCBzdHIpCi17 Ci0gIExpc3BfT2JqZWN0ICpwdHIgPSAmWFNUUklOR19QTElTVCAoc3RyKTsKLQotI2lmZGVmIEkx OE4zCi0gIC8qICMjIyMgcmVtb3ZlIHRoZSBgc3RyaW5nLXRyYW5zbGF0YWJsZScgcHJvcGVydHkg ZnJvbSB0aGUgc3RyaW5nLAotICAgICBpZiB0aGVyZSBpcyBvbmUuICovCi0jZW5kaWYKLSAgLyog c2tpcCBvdmVyIGV4dGVudCBpbmZvIGlmIGl0J3MgdGhlcmUgKi8KLSAgaWYgKENPTlNQICgqcHRy KSAmJiBFWFRFTlRfSU5GT1AgKFhDQVIgKCpwdHIpKSkKLSAgICBwdHIgPSAmWENEUiAoKnB0cik7 Ci0gIGlmIChDT05TUCAoKnB0cikgJiYgRklYTlVNUCAoWENBUiAoKnB0cikpKQotICAgIFhDQVIg KCpwdHIpID0gbWFrZV9maXhudW0gKDErWEZJWE5VTSAoWENBUiAoKnB0cikpKTsKLSAgZWxzZQot ICAgICpwdHIgPSBGY29ucyAobWFrZV9maXhudW0gKDEpLCAqcHRyKTsKLX0KLQogDAogZW51bSAg Y29uY2F0X3RhcmdldF90eXBlIHsgY19jb25zLCBjX3N0cmluZywgY192ZWN0b3IsIGNfYml0X3Zl Y3RvciB9Owogc3RhdGljIExpc3BfT2JqZWN0IGNvbmNhdCAoaW50IG5hcmdzLCBMaXNwX09iamVj dCAqYXJncywKQEAgLTMzNjAsNyArMzMyOCw2IEBACiAgIERFRlNVQlIgKEZzdHJpbmdfZXF1YWwp OwogICBERUZTVUJSIChGY29tcGFyZV9zdHJpbmdzKTsKICAgREVGU1VCUiAoRnN0cmluZ19sZXNz cCk7Ci0gIERFRlNVQlIgKEZzdHJpbmdfbW9kaWZpZWRfdGljayk7CiAgIERFRlNVQlIgKEZhcHBl bmQpOwogICBERUZTVUJSIChGY29uY2F0KTsKICAgREVGU1VCUiAoRnZjb25jYXQpOwpkaWZmIC1y IDlmY2E3NjZmOWQzMSAtciBiN2FjNjZhYzVlNTQgc3JjL2xpc3AuaAotLS0gYS9zcmMvbGlzcC5o CVRodSBBcHIgMTQgMDE6MTI6MTIgMjAxNiArMDEwMAorKysgYi9zcmMvbGlzcC5oCVN1biBBcHIg MjQgMjM6Mzk6NTcgMjAxNiArMDEwMApAQCAtMjU4NSwyNSArMjU4NSwyOCBAQAogICAgICAgc3Ry dWN0IGxyZWNvcmRfaGVhZGVyIGxoZWFkZXI7CiAgICAgICBzdHJ1Y3QKIAl7Ci0JICAvKiBXQVJO SU5HOiBFdmVyeXRoaW5nIGJlZm9yZSBhc2NpaV9iZWdpbiBtdXN0IGFncmVlIGV4YWN0bHkgd2l0 aAorCSAgLyogV0FSTklORzogRXZlcnl0aGluZyBiZWZvcmUgbW9kaWZmcCBtdXN0IGFncmVlIGV4 YWN0bHkgd2l0aAogCSAgICAgc3RydWN0IGxyZWNvcmRfaGVhZGVyLiAoQWN0dWFsbHksIHRoZSBg ZnJlZScgZmllbGQgaW4gb2xkLUdDCi0JICAgICBvdmVybGFwcyB3aXRoIGFzY2lpX2JlZ2luIHRo ZXJlOyB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzCisJICAgICBvdmVybGFwcyB3aXRoIG1vZGlm ZnAgdGhlcmU7IHdlIGNhbiBnZXQgYXdheSB3aXRoIHRoaXMKIAkgICAgIGJlY2F1c2UgaW4gb2xk LUdDIHRoZSBgZnJlZScgZmllbGQgaXMgdXNlZCBvbmx5IGZvciBsY3JlY29yZHMuICovCiAJICB1 bnNpZ25lZCBpbnQgdHlwZSA6ODsKICNpZmRlZiBORVdfR0MKIAkgIHVuc2lnbmVkIGludCBsaXNw X3JlYWRvbmx5IDoxOwogCSAgdW5zaWduZWQgaW50IGZyZWUgOjE7Ci0JICAvKiBOdW1iZXIgb2Yg Y2hhcnMgYXQgYmVnaW5uaW5nIG9mIHN0cmluZyB0aGF0IGFyZSBvbmUgYnl0ZSBpbiBsZW5ndGgK LQkgICAgIChieXRlX2FzY2lpX3ApICovCi0JICB1bnNpZ25lZCBpbnQgYXNjaWlfYmVnaW4gOjIy OworI2RlZmluZSBOVU1fQVNDSUlfQkVHSU5fQklUUyAyMQogI2Vsc2UgLyogbm90IE5FV19HQyAq LwogCSAgdW5zaWduZWQgaW50IG1hcmsgOjE7CiAJICB1bnNpZ25lZCBpbnQgY19yZWFkb25seSA6 MTsKIAkgIHVuc2lnbmVkIGludCBsaXNwX3JlYWRvbmx5IDoxOworI2RlZmluZSBOVU1fQVNDSUlf QkVHSU5fQklUUyAyMAorI2VuZGlmIC8qIG5vdCBORVdfR0MgKi8KKwkgIC8qIEEgZmxhZyBkZXNj cmliaW5nIHdoZXRoZXIgdGhpcyBzdHJpbmcgaGFzIGV2ZXIgYmVlbgorCSAgICAgbW9kaWZpZWQ7 IHRoZSBhY3R1YWwgbW9kaWZpZWQgdGljayBpcyBzdG9yZWQgb24gdGhlIHBsaXN0CisJICAgICBp ZiBhbmQgb25seSBpZiB0aGlzIGZsYWcgaXMgbm9uLXplcm8uICovCisJICB1bnNpZ25lZCBpbnQg bW9kaWZmcCA6MTsKIAkgIC8qIE51bWJlciBvZiBjaGFycyBhdCBiZWdpbm5pbmcgb2Ygc3RyaW5n IHRoYXQgYXJlIG9uZSBieXRlIGluIGxlbmd0aAogCSAgICAgKGJ5dGVfYXNjaWlfcCkgKi8KLQkg IHVuc2lnbmVkIGludCBhc2NpaV9iZWdpbiA6MjE7Ci0jZW5kaWYgLyogbm90IE5FV19HQyAqLwor CSAgdW5zaWduZWQgaW50IGFzY2lpX2JlZ2luIDpOVU1fQVNDSUlfQkVHSU5fQklUUzsKIAl9IHY7 CiAgICAgfSB1OwogI2lmZGVmIE5FV19HQwpAQCAtMjYxNywxMSArMjYyMCw3IEBACiB9OwogdHlw ZWRlZiBzdHJ1Y3QgTGlzcF9TdHJpbmcgTGlzcF9TdHJpbmc7CiAKLSNpZmRlZiBORVdfR0MKLSNk ZWZpbmUgTUFYX1NUUklOR19BU0NJSV9CRUdJTiAoKDEgPDwgMjIpIC0gMSkKLSNlbHNlIC8qIG5v dCBORVdfR0MgKi8KLSNkZWZpbmUgTUFYX1NUUklOR19BU0NJSV9CRUdJTiAoKDEgPDwgMjEpIC0g MSkKLSNlbmRpZiAvKiBub3QgTkVXX0dDICovCisjZGVmaW5lIE1BWF9TVFJJTkdfQVNDSUlfQkVH SU4gKCgxIDw8IE5VTV9BU0NJSV9CRUdJTl9CSVRTKSAtIDEpCiAKIERFQ0xBUkVfTU9EVUxFX0FQ SV9MSVNQX09CSkVDVCAoc3RyaW5nLCBMaXNwX1N0cmluZyk7CiAjZGVmaW5lIFhTVFJJTkcoeCkg WFJFQ09SRCAoeCwgc3RyaW5nLCBMaXNwX1N0cmluZykKQEAgLTI2ODMsNiArMjY4MiwxMCBAQAog ICAoKHZvaWQpIChYU1RSSU5HIChzKS0+dS52LmFzY2lpX2JlZ2luID0gKHZhbCkpKQogI2RlZmlu ZSBYU1RSSU5HX0ZPUk1BVChzKSBGT1JNQVRfREVGQVVMVAogCisjZGVmaW5lIFhTVFJJTkdfTU9E SUZGUChzKSAoWFNUUklORyAocyktPnUudi5tb2RpZmZwICsgMCkKKyNkZWZpbmUgWFNFVF9TVFJJ TkdfTU9ESUZGUChzKSAoWFNUUklORyAocyktPnUudi5tb2RpZmZwID0gMSkKKyNkZWZpbmUgWENM RUFSX1NUUklOR19NT0RJRkZQKHMpICgoWFNUUklORyAocyktPnUudi5tb2RpZmZwID0gMCksIDEp CisKIC8qIFJldHVybiB0aGUgdHJ1ZSBhbGlnbmVkIHNpemUgb2YgYSBzdHJ1Y3Qgd2hvc2UgbGFz dCBtZW1iZXIgaXMgYQogICAgdmFyaWFibGUtbGVuZ3RoIGFycmF5IGZpZWxkLiAgKHRoaXMgaXMg a25vd24gYXMgdGhlICJzdHJ1Y3QgaGFjayIpICovCiAvKiBJbXBsZW1lbnRhdGlvbjogaW4gcHJh Y3RpY2UsIHN0cnVjdHR5cGUgYW5kIGZpZWxkdHlwZSB1c3VhbGx5IGhhdmUKQEAgLTQ0MDcsNiAr NDQxMCw4IEBACiBNT0RVTEVfQVBJIExpc3BfT2JqZWN0IG1ha2VfZXh0c3RyaW5nIChjb25zdCBF eHRieXRlICosIEVNQUNTX0lOVCwgTGlzcF9PYmplY3QpOwogdm9pZCBpbml0X3N0cmluZ19hc2Np aV9iZWdpbiAoTGlzcF9PYmplY3Qgc3RyaW5nKTsKIExpc3BfT2JqZWN0IG1ha2VfdW5pbml0X3N0 cmluZyAoQnl0ZWNvdW50KTsKK3ZvaWQgYnVtcF9zdHJpbmdfbW9kaWZmIChMaXNwX09iamVjdCk7 CitzdHJ1Y3QgZXh0ZW50X2luZm8gKnN0cmluZ19leHRlbnRfaW5mbyAoTGlzcF9PYmplY3QpOwog TU9EVUxFX0FQSSBMaXNwX09iamVjdCBtYWtlX2Zsb2F0IChkb3VibGUpOwogTGlzcF9PYmplY3Qg bWFrZV9zdHJpbmdfbm9jb3B5IChjb25zdCBJYnl0ZSAqLCBCeXRlY291bnQpOwogdm9pZCBmcmVl X2NvbnMgKExpc3BfT2JqZWN0KTsKQEAgLTUzNzAsNyArNTM3NSw2IEBACiAJCSAgICAgICBjaGVj a190ZXN0X2Z1bmNfdCBjaGVja19tZXJnZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGlzcF9P YmplY3QgcHJlZGljYXRlLCBMaXNwX09iamVjdCBrZXlfZnVuYyk7CiAKLXZvaWQgYnVtcF9zdHJp bmdfbW9kaWZmIChMaXNwX09iamVjdCk7CiBMaXNwX09iamVjdCBtZW1xX25vX3F1aXQgKExpc3Bf T2JqZWN0LCBMaXNwX09iamVjdCk7CiBMaXNwX09iamVjdCBhc3NvY19ub19xdWl0IChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QpOwogTGlzcF9PYmplY3QgYXNzcV9ub19xdWl0IChMaXNwX09iamVj dCwgTGlzcF9PYmplY3QpOwpkaWZmIC1yIDlmY2E3NjZmOWQzMSAtciBiN2FjNjZhYzVlNTQgdGVz dHMvQ2hhbmdlTG9nCi0tLSBhL3Rlc3RzL0NoYW5nZUxvZwlUaHUgQXByIDE0IDAxOjEyOjEyIDIw MTYgKzAxMDAKKysrIGIvdGVzdHMvQ2hhbmdlTG9nCVN1biBBcHIgMjQgMjM6Mzk6NTcgMjAxNiAr MDEwMApAQCAtMSwzICsxLDkgQEAKKzIwMTYtMDQtMjQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBh cmhhc2FyZC5uZXQ+CisKKwkqIGF1dG9tYXRlZC9saXNwLXRlc3RzLmVsOgorCUNoZWNrIHRoYXQg YSBmaXhudW0gd29ya3MgY29ycmVjdGx5IGFzIGEga2V5IGluIGEgc3RyaW5nIHBsaXN0LCBhCisJ YnVnIGp1c3QgZml4ZWQuCisKIDIwMTYtMDQtMTQgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhh c2FyZC5uZXQ+CiAKIAkqIGF1dG9tYXRlZC9tdWxlLXRlc3RzLmVsOgpkaWZmIC1yIDlmY2E3NjZm OWQzMSAtciBiN2FjNjZhYzVlNTQgdGVzdHMvYXV0b21hdGVkL2xpc3AtdGVzdHMuZWwKLS0tIGEv dGVzdHMvYXV0b21hdGVkL2xpc3AtdGVzdHMuZWwJVGh1IEFwciAxNCAwMToxMjoxMiAyMDE2ICsw MTAwCisrKyBiL3Rlc3RzL2F1dG9tYXRlZC9saXNwLXRlc3RzLmVsCVN1biBBcHIgMjQgMjM6Mzk6 NTcgMjAxNiArMDEwMApAQCAtMTM0NywxMSArMTM0NywxMSBAQAogICAoQXNzZXJ0IChlcSB0IChy ZW1wcm9wIG9iaiA/MykpIG9iaikKICAgKHdoZW4gKG9yIChzdHJpbmdwIG9iaikgKHN5bWJvbHAg b2JqKSkKICAgICAoQXNzZXJ0IChlcSAnKCkgKG9iamVjdC1wbGlzdCBvYmopKSBvYmopKQotICAo QXNzZXJ0IChlcSBuaWwgKHJlbXByb3Agb2JqID8zKSkgb2JqKQorICAoQXNzZXJ0IChlcWwgMjAw IChwdXQgb2JqIG1vc3QtcG9zaXRpdmUtZml4bnVtIDIwMCkpKQorICAoQXNzZXJ0IChlcWwgKGdl dCBvYmogbW9zdC1wb3NpdGl2ZS1maXhudW0pIDIwMCkpCisgIChBc3NlcnQgKGVxIDUgKGdldCBv YmogPzMgNSkpIG9iaikKICAgKHdoZW4gKG9yIChzdHJpbmdwIG9iaikgKHN5bWJvbHAgb2JqKSkK LSAgICAoQXNzZXJ0IChlcSAnKCkgKG9iamVjdC1wbGlzdCBvYmopKSBvYmopKQotICAoQXNzZXJ0 IChlcSA1IChnZXQgb2JqID8zIDUpKSBvYmopCi0gICkKKyAgICAoQXNzZXJ0IChlcSAnKCkgKG9i amVjdC1wbGlzdCBvYmopKSBvYmopKSkKIAogKENoZWNrLUVycm9yLU1lc3NhZ2UKICBlcnJvciAi T2JqZWN0IHR5cGUgaGFzIG5vIHByb3BlcnRpZXMiCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRo ZXIgZmVkIHRvIGNhdHRsZSBb4oCmXSB3aGVuIHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQK YW5pbWFscykgc28gdGhhdCB0aGUgYW5pbWFscyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKA puKAmQoJ4oCUIEFuZ2V3YW5kdGUgQ2hlbWllLCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNv Y2lhbCBjb250ZXh0IG9mCgkoc3ludGhldGljKSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBp biBDYW1lcm9vbiB0cmVlIHJvb3RzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWEVtYWNzLVBhdGNoZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVz QHhlbWFjcy5vcmcKaHR0cDovL2xpc3RzLnhlbWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1h Y3MtcGF0Y2hlcwo=