Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:11932 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 10501 invoked by uid 1010); 5 Aug 2004 12:06:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 10475 invoked from network); 5 Aug 2004 12:06:25 -0000 Received: from unknown (HELO jdi.jdimedia.nl) (212.204.192.51) by pb1.pair.com with SMTP; 5 Aug 2004 12:06:25 -0000 Received: from localhost (localhost [127.0.0.1]) by jdi.jdimedia.nl (8.12.11/8.12.11) with ESMTP id i75C6OLI024939 for ; Thu, 5 Aug 2004 14:06:24 +0200 Received: from localhost (localhost [127.0.0.1]) by jdi.jdimedia.nl (8.12.11/8.12.11) with ESMTP id i75C6Nur024931; Thu, 5 Aug 2004 14:06:23 +0200 Date: Thu, 5 Aug 2004 14:06:23 +0200 (CEST) X-X-Sender: derick@localhost To: PHP Developers Mailing List cc: Andi Gutmans , =?ISO-8859-15?Q?Marcos_B=F6rger?= Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1605656827-1091707511=:8298" X-Virus-Scanned: by amavisd-new at jdimedia.nl Subject: emalloc and friends From: derick@derickrethans.nl (Derick Rethans) --8323328-1605656827-1091707511=:8298 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Hei, I've been debugging some memory related problems lately and had the need to disable the emalloc and friend stuff so that valgrind gave meaningful errors. The attached patch adds some replacement defines to the zend_alloc.h stuff and is attached. (You can swap between the two ways by changing the USE_ZEND_ALLOC define). With this out of the way I've been able to get some weird bugs out of Xdebug. While having this patch enabled I did some more testing, and in a large script (eZ publish) valgrind was showing a lot of strange errors, such as: ==8347== Invalid read of size 4 ==8347== at 0x80CAEFF: execute (zend_execute_locks.h:7) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80CA1D0: execute (zend_execute.c:2229) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80BC8D8: zend_execute_scripts (zend.c:891) ==8347== Address 0x3D390DF8 is 12 bytes inside a block of size 40 free'd ==8347== at 0x3C01F918: free (vg_replace_malloc.c:127) ==8347== by 0x80C0729: zend_hash_del_key_or_index (zend_hash.c:529) ==8347== by 0x80CA5E3: execute (zend_execute.c:2282) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80CA1D0: execute (zend_execute.c:2229) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80C8DE5: execute (zend_execute.c:1707) ==8347== by 0x80BC8D8: zend_execute_scripts (zend.c:891) (Full trace attached, this is created with valgrind /path/to/apache -X) This looks like something is used after it's freed but i've no idea where to look for it. I believe this also causes the crashes that I've seen with the first part of Sterling's and Thies' fhs patch (also attached). Can somebody else test this with complex applications too or perhaps somebody has a clue on what this might cause? (Spoiler, the patches are for 4.3.x, not for 5.x) regards, Derick --8323328-1605656827-1091707511=:8298 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="zend_alloc.h.diff" Content-Transfer-Encoding: BASE64 Content-Description: Content-Disposition: ATTACHMENT; FILENAME="zend_alloc.h.diff" SW5kZXg6IFplbmQvemVuZF9hbGxvYy5oDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZC9BdHRpYy96ZW5kX2Fs bG9jLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjM5LjQuNg0KZGlmZiAt dSAtcCAtcjEuMzkuNC42IHplbmRfYWxsb2MuaA0KLS0tIFplbmQvemVuZF9h bGxvYy5oCTI4IEF1ZyAyMDAzIDE0OjQ2OjUxIC0wMDAwCTEuMzkuNC42DQor KysgWmVuZC96ZW5kX2FsbG9jLmgJNSBBdWcgMjAwNCAxMTo1NTo1NCAtMDAw MA0KQEAgLTgwLDYgKzgwLDEwIEBAIFpFTkRfQVBJIHZvaWQgKl9lcmVhbGxv Yyh2b2lkICpwdHIsIHNpemUNCiBaRU5EX0FQSSBjaGFyICpfZXN0cmR1cChj b25zdCBjaGFyICpzIFpFTkRfRklMRV9MSU5FX0RDIFpFTkRfRklMRV9MSU5F X09SSUdfREMpIFpFTkRfQVRUUklCVVRFX01BTExPQzsNCiBaRU5EX0FQSSBj aGFyICpfZXN0cm5kdXAoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGxl bmd0aCBaRU5EX0ZJTEVfTElORV9EQyBaRU5EX0ZJTEVfTElORV9PUklHX0RD KSBaRU5EX0FUVFJJQlVURV9NQUxMT0M7DQogDQorI2RlZmluZSBVU0VfWkVO RF9BTExPQyAxDQorDQorI2lmIFVTRV9aRU5EX0FMTE9DDQorDQogLyogU3Rh bmRhcmQgd3JhcHBlciBtYWNyb3MgKi8NCiAjZGVmaW5lIGVtYWxsb2Moc2l6 ZSkJCQkJCV9lbWFsbG9jKChzaXplKSBaRU5EX0ZJTEVfTElORV9DQyBaRU5E X0ZJTEVfTElORV9FTVBUWV9DQykNCiAjZGVmaW5lIHNhZmVfZW1hbGxvYyhu bWVtYiwgc2l6ZSwgb2Zmc2V0KQkJX3NhZmVfZW1hbGxvYygobm1lbWIpLCAo c2l6ZSksIChvZmZzZXQpIFpFTkRfRklMRV9MSU5FX0NDIFpFTkRfRklMRV9M SU5FX0VNUFRZX0NDKQ0KQEAgLTExMSw2ICsxMTUsNDUgQEAgWkVORF9BUEkg Y2hhciAqX2VzdHJuZHVwKGNvbnN0IGNoYXIgKnMsIA0KICNkZWZpbmUgc2Fm ZV9lc3RyZHVwKHB0cikgICgocHRyKT8oZXN0cmR1cChwdHIpKTooZW1wdHlf c3RyaW5nKSkNCiAjZGVmaW5lIHNhZmVfZXN0cm5kdXAocHRyLCBsZW4pICgo cHRyKT8oZXN0cm5kdXAoKHB0ciksIChsZW4pKSk6KGVtcHR5X3N0cmluZykp DQogDQorI2Vsc2UNCisNCisjZGVmaW5lIF9HTlVfU09VUkNFDQorI2luY2x1 ZGUgPHN0cmluZy5oPg0KKyN1bmRlZiBfR05VX1NPVVJDRQ0KKw0KKy8qIFN0 YW5kYXJkIHdyYXBwZXIgbWFjcm9zICovDQorI2RlZmluZSBlbWFsbG9jKHNp emUpCQkJCQltYWxsb2Moc2l6ZSkNCisjZGVmaW5lIHNhZmVfZW1hbGxvYyhu bWVtYiwgc2l6ZSwgb2Zmc2V0KQkJbWFsbG9jKChubWVtYikgKiAoc2l6ZSkg KyAob2Zmc2V0KSkNCisjZGVmaW5lIGVmcmVlKHB0cikJCQkJCQlmcmVlKHB0 cikNCisjZGVmaW5lIGVjYWxsb2Mobm1lbWIsIHNpemUpCQkJY2FsbG9jKChu bWVtYiksIChzaXplKSkNCisjZGVmaW5lIGVyZWFsbG9jKHB0ciwgc2l6ZSkJ CQkJcmVhbGxvYygocHRyKSwgKHNpemUpKQ0KKyNkZWZpbmUgZXJlYWxsb2Nf cmVjb3ZlcmFibGUocHRyLCBzaXplKQlyZWFsbG9jKChwdHIpLCAoc2l6ZSkp DQorI2RlZmluZSBlc3RyZHVwKHMpCQkJCQkJc3RyZHVwKHMpDQorI2RlZmlu ZSBlc3RybmR1cChzLCBsZW5ndGgpCQkJCXN0cm5kdXAoKHMpLCAobGVuZ3Ro KSkNCisNCisvKiBSZWxheSB3cmFwcGVyIG1hY3JvcyAqLw0KKyNkZWZpbmUg ZW1hbGxvY19yZWwoc2l6ZSkJCQkJCW1hbGxvYyhzaXplKQ0KKyNkZWZpbmUg c2FmZV9lbWFsbG9jX3JlbChubWVtYiwgc2l6ZSwgb2Zmc2V0KQkJbWFsbG9j KChubWVtYikgKiAoc2l6ZSkgKyAob2Zmc2V0KSkNCisjZGVmaW5lIGVmcmVl X3JlbChwdHIpCQkJCQkJZnJlZShwdHIpDQorI2RlZmluZSBlY2FsbG9jX3Jl bChubWVtYiwgc2l6ZSkJCQljYWxsb2MoKG5tZW1iKSwgKHNpemUpKQ0KKyNk ZWZpbmUgZXJlYWxsb2NfcmVsKHB0ciwgc2l6ZSkJCQkJcmVhbGxvYygocHRy KSwgKHNpemUpKQ0KKyNkZWZpbmUgZXJlYWxsb2NfcmVjb3ZlcmFibGVfcmVs KHB0ciwgc2l6ZSkJcmVhbGxvYygocHRyKSwgKHNpemUpKQ0KKyNkZWZpbmUg ZXN0cmR1cF9yZWwocykJCQkJCQlzdHJkdXAocykNCisjZGVmaW5lIGVzdHJu ZHVwX3JlbChzLCBsZW5ndGgpCQkJCXN0cm5kdXAoKHMpLCAobGVuZ3RoKSkN CisNCisvKiBTZWxlY3RpdmUgcGVyc2lzdGVudC9ub24gcGVyc2lzdGVudCBh bGxvY2F0aW9uIG1hY3JvcyAqLw0KKyNkZWZpbmUgcGVtYWxsb2Moc2l6ZSwg cGVyc2lzdGVudCkJCW1hbGxvYyhzaXplKQ0KKyNkZWZpbmUgcGVmcmVlKHB0 ciwgcGVyc2lzdGVudCkJCQlmcmVlKHB0cikNCisjZGVmaW5lIHBlY2FsbG9j KG5tZW1iLCBzaXplLCBwZXJzaXN0ZW50KQkJY2FsbG9jKChubWVtYiksIChz aXplKSkNCisjZGVmaW5lIHBlcmVhbGxvYyhwdHIsIHNpemUsIHBlcnNpc3Rl bnQpCQlyZWFsbG9jKChwdHIpLCAoc2l6ZSkpDQorI2RlZmluZSBwZXJlYWxs b2NfcmVjb3ZlcmFibGUocHRyLCBzaXplLCBwZXJzaXN0ZW50KQlyZWFsbG9j KChwdHIpLCAoc2l6ZSkpDQorI2RlZmluZSBwZXN0cmR1cChzLCBwZXJzaXN0 ZW50KQkJCXN0cmR1cChzKQ0KKw0KKyNkZWZpbmUgc2FmZV9lc3RyZHVwKHB0 cikgICgocHRyKT8oc3RyZHVwKHB0cikpOihlbXB0eV9zdHJpbmcpKQ0KKyNk ZWZpbmUgc2FmZV9lc3RybmR1cChwdHIsIGxlbikgKChwdHIpPyhzdHJuZHVw KChwdHIpLCAobGVuKSkpOihlbXB0eV9zdHJpbmcpKQ0KKw0KKyNlbmRpZg0K Kw0KIFpFTkRfQVBJIGludCB6ZW5kX3NldF9tZW1vcnlfbGltaXQodW5zaWdu ZWQgaW50IG1lbW9yeV9saW1pdCk7DQogDQogWkVORF9BUEkgdm9pZCBzdGFy dF9tZW1vcnlfbWFuYWdlcihUU1JNTFNfRCk7DQo= --8323328-1605656827-1091707511=:8298 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="fhs-part-un.diff" Content-Transfer-Encoding: BASE64 Content-Description: Content-Disposition: ATTACHMENT; FILENAME="fhs-part-un.diff" SW5kZXg6IFplbmQvemVuZF9leGVjdXRlLmMNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kL0F0dGljL3plbmRf ZXhlY3V0ZS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMTYuMi4zNw0K ZGlmZiAtdSAtcCAtcjEuMzE2LjIuMzcgemVuZF9leGVjdXRlLmMNCi0tLSBa ZW5kL3plbmRfZXhlY3V0ZS5jCTI0IEp1biAyMDA0IDE2OjM5OjQ3IC0wMDAw CTEuMzE2LjIuMzcNCisrKyBaZW5kL3plbmRfZXhlY3V0ZS5jCTUgQXVnIDIw MDQgMTI6MDM6MDIgLTAwMDANCkBAIC0xOCw2ICsxOCw3IEBADQogKi8NCiAN CiAjZGVmaW5lIFpFTkRfSU5URU5TSVZFX0RFQlVHR0lORyAwDQorI2RlZmlu ZSBDQUNIRV9WQVJfTE9PS1VQIDENCiANCiAjaW5jbHVkZSA8c3RkaW8uaD4N CiAjaW5jbHVkZSA8c2lnbmFsLmg+DQpAQCAtNjA3LDYgKzYwOCwxMiBAQCBz dGF0aWMgdm9pZCB6ZW5kX2ZldGNoX3Zhcl9hZGRyZXNzKHplbmRfDQogCQkJ CWJyZWFrOw0KIAkJCUVNUFRZX1NXSVRDSF9ERUZBVUxUX0NBU0UoKQ0KIAkJ fQ0KKwl9IGVsc2Ugew0KKwkJaWYgKG9wbGluZS0+b3AxLm9wX3R5cGUgPT0g SVNfQ09OU1QpIHsNCisJCQlUc1tvcGxpbmUtPnJlc3VsdC51LnZhcl0udmFy LnN0b3JlID0gcmV0dmFsOw0KKwkJfSBlbHNlIHsNCisJCQlUc1tvcGxpbmUt PnJlc3VsdC51LnZhcl0udmFyLnN0b3JlID0gTlVMTDsNCisJCX0NCiAJfQ0K IAlpZiAob3BsaW5lLT5vcDIudS5mZXRjaF90eXBlID09IFpFTkRfRkVUQ0hf TE9DQUwpIHsNCiAJCUZSRUVfT1AoVHMsICZvcGxpbmUtPm9wMSwgZnJlZV9v cDEpOw0KQEAgLTEwMjksNiArMTAzNiwyNiBAQCBzdGF0aWMgaW50IHplbmRf Y2hlY2tfc3ltYm9sKHp2YWwgKipweiBUDQogCUVYKG9wbGluZSkrKzsJCQlc DQogCWNvbnRpbnVlOw0KIA0KKyNpZiBDQUNIRV9WQVJfTE9PS1VQDQorDQor I2RlZmluZSBHRVRfVkFSX0FERFJFU1ModHlwZSkgXA0KKwlpZiAoRVgoVHMp W0VYKG9wbGluZSktPnJlc3VsdC51LnZhcl0udmFyLnN0b3JlKSB7IFwNCisJ CXp2YWwgKipyZXR2YWw7IFwNCitcDQorCQlyZXR2YWwgPSBFWChUcylbRVgo b3BsaW5lKS0+cmVzdWx0LnUudmFyXS52YXIuc3RvcmU7IFwNCisJCUVYKFRz KVtFWChvcGxpbmUpLT5yZXN1bHQudS52YXJdLnZhci5wdHJfcHRyID0gcmV0 dmFsOyBcDQorCQlTRUxFQ1RJVkVfUFpWQUxfTE9DSygqcmV0dmFsLCAmRVgo b3BsaW5lKS0+cmVzdWx0KTsgXA0KKwl9IGVsc2UgeyBcDQorCQl6ZW5kX2Zl dGNoX3Zhcl9hZGRyZXNzKEVYKG9wbGluZSksIEVYKFRzKSwgdHlwZSBUU1JN TFNfQ0MpOyBcDQorCX0NCisNCisjZWxzZQ0KKw0KKyNkZWZpbmUgR0VUX1ZB Ul9BRERSRVNTKHR5cGUpIFwNCisJemVuZF9mZXRjaF92YXJfYWRkcmVzcyhF WChvcGxpbmUpLCBFWChUcyksIHR5cGUgVFNSTUxTX0NDKTsNCisNCisjZW5k aWYNCisNCiBaRU5EX0FQSSB2b2lkIGV4ZWN1dGUoemVuZF9vcF9hcnJheSAq b3BfYXJyYXkgVFNSTUxTX0RDKQ0KIHsNCiAJemVuZF9leGVjdXRlX2RhdGEg ZXhlY3V0ZV9kYXRhOw0KQEAgLTEwMzksNiArMTA2Niw3IEBAIFpFTkRfQVBJ IHZvaWQgZXhlY3V0ZSh6ZW5kX29wX2FycmF5ICpvcF8NCiAJRVgob2JqZWN0 KS5wdHIgPSBOVUxMOw0KIAlFWChvcF9hcnJheSkgPSBvcF9hcnJheTsNCiAJ RVgoVHMpID0gKHRlbXBfdmFyaWFibGUgKikgZG9fYWxsb2NhKHNpemVvZih0 ZW1wX3ZhcmlhYmxlKSpvcF9hcnJheS0+VCk7DQorCW1lbXNldChFWChUcyks IDAsIHNpemVvZih0ZW1wX3ZhcmlhYmxlKSpvcF9hcnJheS0+VCk7DQogCUVY KHByZXZfZXhlY3V0ZV9kYXRhKSA9IEVHKGN1cnJlbnRfZXhlY3V0ZV9kYXRh KTsNCiAJRVgob3JpZ2luYWxfaW5fZXhlY3V0aW9uKT1FRyhpbl9leGVjdXRp b24pOw0KIA0KQEAgLTEyNTksMTQgKzEyODcsMTQgQEAgYmluYXJ5X2Fzc2ln bl9vcF9hZGRyOiB7DQogCQkJCUZSRUVfT1AoRVgoVHMpLCAmRVgob3BsaW5l KS0+b3AxLCBFRyhmcmVlX29wMSkpOw0KIAkJCQlORVhUX09QQ09ERSgpOw0K IAkJCWNhc2UgWkVORF9GRVRDSF9SOg0KLQkJCQl6ZW5kX2ZldGNoX3Zhcl9h ZGRyZXNzKEVYKG9wbGluZSksIEVYKFRzKSwgQlBfVkFSX1IgVFNSTUxTX0ND KTsNCisJCQkJR0VUX1ZBUl9BRERSRVNTKEJQX1ZBUl9SKTsNCiAJCQkJQUlf VVNFX1BUUihFWChUcylbRVgob3BsaW5lKS0+cmVzdWx0LnUudmFyXS52YXIp Ow0KIAkJCQlORVhUX09QQ09ERSgpOw0KIAkJCWNhc2UgWkVORF9GRVRDSF9X Og0KLQkJCQl6ZW5kX2ZldGNoX3Zhcl9hZGRyZXNzKEVYKG9wbGluZSksIEVY KFRzKSwgQlBfVkFSX1cgVFNSTUxTX0NDKTsNCisJCQkJR0VUX1ZBUl9BRERS RVNTKEJQX1ZBUl9XKTsNCiAJCQkJTkVYVF9PUENPREUoKTsNCiAJCQljYXNl IFpFTkRfRkVUQ0hfUlc6DQotCQkJCXplbmRfZmV0Y2hfdmFyX2FkZHJlc3Mo RVgob3BsaW5lKSwgRVgoVHMpLCBCUF9WQVJfUlcgVFNSTUxTX0NDKTsNCisJ CQkJR0VUX1ZBUl9BRERSRVNTKEJQX1ZBUl9SVyk7DQogCQkJCU5FWFRfT1BD T0RFKCk7DQogCQkJY2FzZSBaRU5EX0ZFVENIX0ZVTkNfQVJHOg0KIAkJCQlp ZiAoQVJHX1NIT1VMRF9CRV9TRU5UX0JZX1JFRihFWChvcGxpbmUpLT5leHRl bmRlZF92YWx1ZSwgRVgoZmJjKSwgRVgoZmJjKS0+Y29tbW9uLmFyZ190eXBl cykpIHsNCkBAIC0xMjc5LDcgKzEzMDcsNyBAQCBiaW5hcnlfYXNzaWduX29w X2FkZHI6IHsNCiAJCQkJfQ0KIAkJCQlORVhUX09QQ09ERSgpOw0KIAkJCWNh c2UgWkVORF9GRVRDSF9VTlNFVDoNCi0JCQkJemVuZF9mZXRjaF92YXJfYWRk cmVzcyhFWChvcGxpbmUpLCBFWChUcyksIEJQX1ZBUl9SIFRTUk1MU19DQyk7 DQorCQkJCUdFVF9WQVJfQUREUkVTUyhCUF9WQVJfUik7DQogCQkJCVBaVkFM X1VOTE9DSygqRVgoVHMpW0VYKG9wbGluZSktPnJlc3VsdC51LnZhcl0udmFy LnB0cl9wdHIpOw0KIAkJCQlpZiAoRVgoVHMpW0VYKG9wbGluZSktPnJlc3Vs dC51LnZhcl0udmFyLnB0cl9wdHIgIT0gJkVHKHVuaW5pdGlhbGl6ZWRfenZh bF9wdHIpKSB7DQogCQkJCQlTRVBBUkFURV9aVkFMX0lGX05PVF9SRUYoRVgo VHMpW0VYKG9wbGluZSktPnJlc3VsdC51LnZhcl0udmFyLnB0cl9wdHIpOw0K QEAgLTEyODcsNyArMTMxNSw3IEBAIGJpbmFyeV9hc3NpZ25fb3BfYWRkcjog ew0KIAkJCQlQWlZBTF9MT0NLKCpFWChUcylbRVgob3BsaW5lKS0+cmVzdWx0 LnUudmFyXS52YXIucHRyX3B0cik7DQogCQkJCU5FWFRfT1BDT0RFKCk7DQog CQkJY2FzZSBaRU5EX0ZFVENIX0lTOg0KLQkJCQl6ZW5kX2ZldGNoX3Zhcl9h ZGRyZXNzKEVYKG9wbGluZSksIEVYKFRzKSwgQlBfVkFSX0lTIFRTUk1MU19D Qyk7DQorCQkJCUdFVF9WQVJfQUREUkVTUyhCUF9WQVJfSVMpOw0KIAkJCQlB SV9VU0VfUFRSKEVYKFRzKVtFWChvcGxpbmUpLT5yZXN1bHQudS52YXJdLnZh cik7DQogCQkJCU5FWFRfT1BDT0RFKCk7DQogCQkJY2FzZSBaRU5EX0ZFVENI X0RJTV9SOg0KQEAgLTIyMzMsNiArMjI2MSw3IEBAIHNlbmRfYnlfcmVmOg0K IAkJCQl9DQogCQkJCU5FWFRfT1BDT0RFKCk7DQogCQkJY2FzZSBaRU5EX1VO U0VUX1ZBUjogew0KKwkJCQkJenZhbCAqKnZhbHVlOw0KIAkJCQkJenZhbCB0 bXAsICp2YXJpYWJsZSA9IGdldF96dmFsX3B0cigmRVgob3BsaW5lKS0+b3Ax LCBFWChUcyksICZFRyhmcmVlX29wMSksIEJQX1ZBUl9SKTsNCiANCiAJCQkJ CWlmICh2YXJpYWJsZS0+dHlwZSAhPSBJU19TVFJJTkcpIHsNCkBAIC0yMjQy LDggKzIyNzEsNDQgQEAgc2VuZF9ieV9yZWY6DQogCQkJCQkJdmFyaWFibGUg PSAmdG1wOw0KIAkJCQkJfQ0KIA0KLQkJCQkJemVuZF9oYXNoX2RlbChFRyhh Y3RpdmVfc3ltYm9sX3RhYmxlKSwgdmFyaWFibGUtPnZhbHVlLnN0ci52YWws IHZhcmlhYmxlLT52YWx1ZS5zdHIubGVuKzEpOw0KKwkJCQkJaWYgKHplbmRf aGFzaF9maW5kKEVHKGFjdGl2ZV9zeW1ib2xfdGFibGUpLCANCisJCQkJCQkJ CXZhcmlhYmxlLT52YWx1ZS5zdHIudmFsLCB2YXJpYWJsZS0+dmFsdWUuc3Ry LmxlbisxLA0KKwkJCQkJCQkJKHZvaWQgKiopICZ2YWx1ZSkgPT0gU1VDQ0VT Uykgew0KKwkJCQkJCXplbmRfb3AgKm9wbCwgKmVvcDsNCisJCQkJCQl6ZW5k X2V4ZWN1dGVfZGF0YSAqZXhkOw0KKwkJCQkJCWludCBpOw0KKwkJCQkJCWlu dCBvcmdfcmVmY291bnQgPSAoKnZhbHVlKS0+cmVmY291bnQ7DQorDQorCQkJ CQkJemVuZF9oYXNoX2RlbChFRyhhY3RpdmVfc3ltYm9sX3RhYmxlKSwgdmFy aWFibGUtPnZhbHVlLnN0ci52YWwsIHZhcmlhYmxlLT52YWx1ZS5zdHIubGVu KzEpOw0KKw0KKwkJCQkJCS8qIHRoaXMgbG9vcCB3aWxsIGludmFsaWRhdGUg YWxsIGNhY2hlcyB0aGF0IHdlIG1pZ2h0IGhhdmUgb2YgdmFsdWUgDQorCQkJ CQkJICogT05MWSBpZiB0aGUgdmFsdWUgd2FzIGFjdHVhbGx5IGRlc3RydWN0 ZWQgKi8NCisJCQkJCQlpZiAob3JnX3JlZmNvdW50ID09IDEpIHsNCisJCQkJ CQkJZXhkID0gRUcoY3VycmVudF9leGVjdXRlX2RhdGEpOw0KKwkJCQkJCQl3 aGlsZSAoZXhkKSB7DQorCQkJCQkJCQlpZiAoZXhkLT5vcF9hcnJheSkgew0K KwkJCQkJCQkJCW9wbCA9IGV4ZC0+b3BfYXJyYXktPm9wY29kZXM7DQorCQkJ CQkJCQkJZW9wID0gb3BsICsgZXhkLT5vcF9hcnJheS0+bGFzdDsNCisJCQkJ CQkJCQl3aGlsZSAob3BsIDwgZW9wKSB7DQorCQkJCQkJCQkJCXN3aXRjaCAo b3BsLT5vcGNvZGUpIHsNCisJCQkJCQkJCQkJCWNhc2UgWkVORF9GRVRDSF9S Og0KKwkJCQkJCQkJCQkJY2FzZSBaRU5EX0ZFVENIX1c6DQorCQkJCQkJCQkJ CQljYXNlIFpFTkRfRkVUQ0hfUlc6DQorCQkJCQkJCQkJCQljYXNlIFpFTkRf RkVUQ0hfVU5TRVQ6DQorCQkJCQkJCQkJCQljYXNlIFpFTkRfRkVUQ0hfSVM6 DQorCQkJCQkJCQkJCQkJaWYgKGV4ZC0+VHNbb3BsLT5yZXN1bHQudS52YXJd LnZhci5zdG9yZSA9PSB2YWx1ZSkgeyANCisJCQkJCQkJCQkJCQkJZXhkLT5U c1tvcGwtPnJlc3VsdC51LnZhcl0udmFyLnN0b3JlID0gTlVMTDsNCisJCQkJ CQkJCQkJCQl9DQorCQkJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJCX0N CisJCQkJCQkJCQkJb3BsKys7DQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfQ0K IA0KKwkJCQkJCQkJZXhkID0gZXhkLT5wcmV2X2V4ZWN1dGVfZGF0YTsNCisJ CQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCiAJCQkJCWlmICh2YXJpYWJs ZSA9PSAmdG1wKSB7DQogCQkJCQkJenZhbF9kdG9yKCZ0bXApOw0KIAkJCQkJ fQ0KSW5kZXg6IFplbmQvemVuZF9leGVjdXRlX2dsb2JhbHMuaA0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmQv QXR0aWMvemVuZF9leGVjdXRlX2dsb2JhbHMuaCx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMi4yLjENCmRpZmYgLXUgLXAgLXIxLjIuMi4xIHplbmRfZXhl Y3V0ZV9nbG9iYWxzLmgNCi0tLSBaZW5kL3plbmRfZXhlY3V0ZV9nbG9iYWxz LmgJMzEgRGVjIDIwMDIgMTY6MjM6MDAgLTAwMDAJMS4yLjIuMQ0KKysrIFpl bmQvemVuZF9leGVjdXRlX2dsb2JhbHMuaAk1IEF1ZyAyMDA0IDEyOjAzOjAy IC0wMDAwDQpAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHVuaW9uIF90ZW1w X3ZhcmlhYmxlIHsNCiAJc3RydWN0IHsNCiAJCXp2YWwgKipwdHJfcHRyOw0K IAkJenZhbCAqcHRyOw0KKwkJdm9pZCAqc3RvcmU7DQogCX0gdmFyOw0KIAlz dHJ1Y3Qgew0KIAkJenZhbCB0bXBfdmFyOyAvKiBhIGR1bW15ICovDQo= --8323328-1605656827-1091707511=:8298--