Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:44085 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 9254 invoked from network); 28 May 2009 16:05:43 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 28 May 2009 16:05:43 -0000 Authentication-Results: pb1.pair.com header.from=patrick.allaert@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=patrick.allaert@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.218.161 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: patrick.allaert@gmail.com X-Host-Fingerprint: 209.85.218.161 mail-bw0-f161.google.com Received: from [209.85.218.161] ([209.85.218.161:47350] helo=mail-bw0-f161.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 36/A8-31798-656BE1A4 for ; Thu, 28 May 2009 12:05:43 -0400 Received: by bwz5 with SMTP id 5so6518547bwz.23 for ; Thu, 28 May 2009 09:05:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=IOzGmvJtKlj+nrcVQmi2ppBpdRFa+0wyEkdgfZXQM9o=; b=qPJdhfKp8KotpzfoLm9cx6wT1/oXqphZC0ffeSY1K8P6UktOCeTQzGHqTEoMHVdQfE rd1Q5DK/RYpqcvF9HtaOpBoQd6aLN8zI51WP47MRnUwuqVfeZ+Jx9mhhOCmKlAgehtoY qVRNFiv06WY9uFQ6SpgeEcPYrSm6Odd/FN1dQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=kZQ0Ny6bE+j36AP6vpsLMnodseiJqkQmpg4tr25WAm9QfBPfOI+l1Dd12zAuvV+5IS tbiN/7UyzeZPTLw5dCptzGDUBWkqZTINhmsP3PJ950VDww21E9LsbAGbUpbxjzhJYZ/s PKdnCVuvir6GQMbFldOaxTKJuXcugYk3nTeg4= MIME-Version: 1.0 Received: by 10.239.164.11 with SMTP id r11mr120995hbd.146.1243526738870; Thu, 28 May 2009 09:05:38 -0700 (PDT) Date: Thu, 28 May 2009 18:05:38 +0200 Message-ID: To: PHP Development , Davide Mendolia , zoe Content-Type: multipart/mixed; boundary=001485f1dc128a0364046afb2168 Subject: ext/ldap for PHP6 From: patrick.allaert@gmail.com (Patrick ALLAERT) --001485f1dc128a0364046afb2168 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi list, Having done some PHPT tests on ext/ldap [1] with Davide Mendolia at the Testfest, we realized that the extension wasn't ready in PHP 6. In attachment I put a patch that enables all LDAP tests [1] to "PASS" using PHP6. As it is my first patch here, could you please revise it and give me your comments? The following changes have been made: - Comparing to IS_UNICODE in addition to IS_STRING. - Using zend_utf8_hash_find() instead of zend_hash_find. - Being sick of duplicating "efree(ldap_base_dn)" everywhere there is an exit, the handling of error is refactored using a "goto cleanup" in combination with storing the return value in "ret". - Parallel/Non-parallel search lightly refactored for clarity. - Dropping WRONG_PARAM_COUNT while zend_parse_parameters() does a good job (not present anymore in 5.3). Thanks, Patrick [1] http://testfest.php.net/repos/testfest/BelgiumUG/ext/ldap/tests/ --001485f1dc128a0364046afb2168 Content-Type: text/plain; charset=US-ASCII; name="ldap_php6.patch.txt" Content-Disposition: attachment; filename="ldap_php6.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fv9n8odv0 SW5kZXg6IGV4dC9sZGFwL2xkYXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9w aHAtc3JjL2V4dC9sZGFwL2xkYXAuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOTgKZGlmZiAt dSAtcjEuMTk4IGxkYXAuYwotLS0gZXh0L2xkYXAvbGRhcC5jCTIxIEFwciAyMDA5IDE4OjA3OjQy IC0wMDAwCTEuMTk4CisrKyBleHQvbGRhcC9sZGFwLmMJMjggTWF5IDIwMDkgMTU6NDM6MDUgLTAw MDAKQEAgLTYwMyw2ICs2MDMsOCBAQAogCWludCBudW1fYXR0cmlicyA9IDA7CiAJaW50IGksIGVy cm5vOwogCWludCBteWFyZ2NvdW50ID0gWkVORF9OVU1fQVJHUygpOworCWludCBmcmVlX2Jhc2Vf ZG4gPSAwOworCWludCByZXQgPSAxOwogCiAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhteWFy Z2NvdW50IFRTUk1MU19DQywgIlpaWnxaWlpaWiIsICZsaW5rLCAmYmFzZV9kbiwgJmZpbHRlciwg JmF0dHJzLCAmYXR0cnNvbmx5LCAKIAkJJnNpemVsaW1pdCwgJnRpbWVsaW1pdCwgJmRlcmVmKSA9 PSBGQUlMVVJFKSB7CkBAIC02MzAsNyArNjMyLDggQEAKIAkJY2FzZSA0IDogCiAJCQlpZiAoWl9U WVBFX1BQKGF0dHJzKSAhPSBJU19BUlJBWSkgewogCQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBU U1JNTFNfQ0MsIEVfV0FSTklORywgIkV4cGVjdGVkIEFycmF5IGFzIGxhc3QgZWxlbWVudCIpOwot CQkJCVJFVFVSTl9GQUxTRTsKKwkJCQlyZXQgPSAwOworCQkJCWdvdG8gY2xlYW51cDsKIAkJCX0K IAogCQkJbnVtX2F0dHJpYnMgPSB6ZW5kX2hhc2hfbnVtX2VsZW1lbnRzKFpfQVJSVkFMX1BQKGF0 dHJzKSk7CkBAIC02MzksOCArNjQyLDggQEAKIAkJCWZvciAoaSA9IDA7IGk8bnVtX2F0dHJpYnM7 IGkrKykgewogCQkJCWlmICh6ZW5kX2hhc2hfaW5kZXhfZmluZChaX0FSUlZBTF9QUChhdHRycyks IGksICh2b2lkICoqKSAmYXR0cikgIT0gU1VDQ0VTUykgewogCQkJCQlwaHBfZXJyb3JfZG9jcmVm KE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJBcnJheSBpbml0aWFsaXphdGlvbiB3cm9uZyIp OwotCQkJCQllZnJlZShsZGFwX2F0dHJzKTsKLQkJCQkJUkVUVVJOX0ZBTFNFOworCQkJCQlyZXQg PSAwOworCQkJCQlnb3RvIGNsZWFudXA7CiAJCQkJfQogCiAJCQkJU0VQQVJBVEVfWlZBTChhdHRy KTsKQEAgLTY0OCwxOCArNjUxLDggQEAKIAkJCQlsZGFwX2F0dHJzW2ldID0gWl9TVFJWQUxfUFAo YXR0cik7CiAJCQl9CiAJCQlsZGFwX2F0dHJzW251bV9hdHRyaWJzXSA9IE5VTEw7Ci0JCQogCQlj YXNlIDMgOgotCQkJLyogcGFyYWxsZWwgc2VhcmNoPyAqLwotCQkJaWYgKFpfVFlQRV9QUChsaW5r KSAhPSBJU19BUlJBWSkgewotCQkJCWNvbnZlcnRfdG9fc3RyaW5nX2V4KGZpbHRlcik7Ci0JCQkJ bGRhcF9maWx0ZXIgPSBaX1NUUlZBTF9QUChmaWx0ZXIpOwotCi0JCQkJLyogSWYgYW55dGhpbmcg ZWxzZSB0aGFuIHN0cmluZyBpcyBwYXNzZWQsIGxkYXBfYmFzZV9kbiA9IE5VTEwgKi8KLQkJCQlp ZiAoWl9UWVBFX1BQKGJhc2VfZG4pID09IElTX1NUUklORykgewotCQkJCQlsZGFwX2Jhc2VfZG4g PSBaX1NUUlZBTF9QUChiYXNlX2RuKTsKLQkJCQl9Ci0JCQl9CisJCQogCQlicmVhazsKIAogCQlk ZWZhdWx0OgpAQCAtNjc2LDIwICs2NjksMTYgQEAKIAkJbmxpbmtzID0gemVuZF9oYXNoX251bV9l bGVtZW50cyhaX0FSUlZBTF9QUChsaW5rKSk7CiAJCWlmIChubGlua3MgPT0gMCkgewogCQkJcGhw X2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAiTm8gbGlua3MgaW4gbGlu ayBhcnJheSIpOwotCQkJaWYgKGxkYXBfYXR0cnMgIT0gTlVMTCkgewotCQkJCWVmcmVlKGxkYXBf YXR0cnMpOwotCQkJfQotCQkJUkVUVVJOX0ZBTFNFOworCQkJcmV0ID0gMDsKKwkJCWdvdG8gY2xl YW51cDsKIAkJfQogCiAJCWlmIChaX1RZUEVfUFAoYmFzZV9kbikgPT0gSVNfQVJSQVkpIHsKIAkJ CW5iYXNlcyA9IHplbmRfaGFzaF9udW1fZWxlbWVudHMoWl9BUlJWQUxfUFAoYmFzZV9kbikpOwog CQkJaWYgKG5iYXNlcyAhPSBubGlua3MpIHsKIAkJCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNS TUxTX0NDLCBFX1dBUk5JTkcsICJCYXNlIG11c3QgZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhbiBh cnJheSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyB0aGUgbGlua3MgYXJyYXki KTsKLQkJCQlpZiAobGRhcF9hdHRycyAhPSBOVUxMKSB7Ci0JCQkJCWVmcmVlKGxkYXBfYXR0cnMp OwotCQkJCX0KLQkJCQlSRVRVUk5fRkFMU0U7CisJCQkJcmV0ID0gMDsKKwkJCQlnb3RvIGNsZWFu dXA7CiAJCQl9CiAJCQl6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldChaX0FSUlZBTF9Q UChiYXNlX2RuKSk7CiAJCX0gZWxzZSB7CkBAIC02OTcsNiArNjg2LDEwIEBACiAJCQkvKiBJZiBh bnl0aGluZyBlbHNlIHRoYW4gc3RyaW5nIGlzIHBhc3NlZCwgbGRhcF9iYXNlX2RuID0gTlVMTCAq LwogCQkJaWYgKFpfVFlQRV9QUChiYXNlX2RuKSA9PSBJU19TVFJJTkcpIHsKIAkJCQlsZGFwX2Jh c2VfZG4gPSBaX1NUUlZBTF9QUChiYXNlX2RuKTsKKwkJCX0gZWxzZSBpZihaX1RZUEVfUFAoYmFz ZV9kbikgPT0gSVNfVU5JQ09ERSl7CisJCQkJY2hhciAqdG1wID0gemVuZF91bmljb2RlX3RvX2Fz Y2lpKFpfVVNUUlZBTF9QUChiYXNlX2RuKSwgWl9VU1RSTEVOX1BQKGJhc2VfZG4pIFRTUk1MU19D Qyk7CisJCQkJbGRhcF9iYXNlX2RuID0gZXN0cmR1cCh0bXApOworCQkJCWZyZWVfYmFzZV9kbiA9 IDE7CiAJCQl9IGVsc2UgewogCQkJCWxkYXBfYmFzZV9kbiA9IE5VTEw7CiAJCQl9CkBAIC03MDYs MTAgKzY5OSw4IEBACiAJCQluZmlsdGVycyA9IHplbmRfaGFzaF9udW1fZWxlbWVudHMoWl9BUlJW QUxfUFAoZmlsdGVyKSk7CiAJCQlpZiAobmZpbHRlcnMgIT0gbmxpbmtzKSB7CiAJCQkJcGhwX2Vy cm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAiRmlsdGVyIG11c3QgZWl0aGVy IGJlIGEgc3RyaW5nLCBvciBhbiBhcnJheSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50 cyBhcyB0aGUgbGlua3MgYXJyYXkiKTsKLQkJCQlpZiAobGRhcF9hdHRycyAhPSBOVUxMKSB7Ci0J CQkJCWVmcmVlKGxkYXBfYXR0cnMpOwotCQkJCX0KLQkJCQlSRVRVUk5fRkFMU0U7CisJCQkJcmV0 ID0gMDsKKwkJCQlnb3RvIGNsZWFudXA7CiAJCQl9CiAJCQl6ZW5kX2hhc2hfaW50ZXJuYWxfcG9p bnRlcl9yZXNldChaX0FSUlZBTF9QUChmaWx0ZXIpKTsKIAkJfSBlbHNlIHsKQEAgLTcyNywxMiAr NzE4LDggQEAKIAogCQkJbGQgPSAobGRhcF9saW5rZGF0YSAqKSB6ZW5kX2ZldGNoX3Jlc291cmNl KGVudHJ5IFRTUk1MU19DQywgLTEsICJsZGFwIGxpbmsiLCBOVUxMLCAxLCBsZV9saW5rKTsKIAkJ CWlmIChsZCA9PSBOVUxMKSB7Ci0JCQkJZWZyZWUobGRzKTsKLQkJCQllZnJlZShyY3MpOwotCQkJ CWlmIChsZGFwX2F0dHJzICE9IE5VTEwpIHsKLQkJCQkJZWZyZWUobGRhcF9hdHRycyk7Ci0JCQkJ fQotCQkJCVJFVFVSTl9GQUxTRTsKKwkJCQlyZXQgPSAwOworCQkJCWdvdG8gY2xlYW51cF9wYXJh bGxlbDsKIAkJCX0KIAkJCWlmIChuYmFzZXMgIT0gMCkgeyAvKiBiYXNlX2RuIGFuIGFycmF5PyAq LwogCQkJCXplbmRfaGFzaF9nZXRfY3VycmVudF9kYXRhKFpfQVJSVkFMX1BQKGJhc2VfZG4pLCAo dm9pZCAqKikmZW50cnkpOwpAQCAtNzQxLDYgKzcyOCwxMCBAQAogCQkJCS8qIElmIGFueXRoaW5n IGVsc2UgdGhhbiBzdHJpbmcgaXMgcGFzc2VkLCBsZGFwX2Jhc2VfZG4gPSBOVUxMICovCiAJCQkJ aWYgKFpfVFlQRV9QUChlbnRyeSkgPT0gSVNfU1RSSU5HKSB7CiAJCQkJCWxkYXBfYmFzZV9kbiA9 IFpfU1RSVkFMX1BQKGVudHJ5KTsKKwkJCQl9IGVsc2UgaWYoWl9UWVBFX1BQKGVudHJ5KSA9PSBJ U19VTklDT0RFKXsKKwkJCQkJY2hhciAqdG1wID0gemVuZF91bmljb2RlX3RvX2FzY2lpKFpfVVNU UlZBTF9QUChlbnRyeSksIFpfVVNUUkxFTl9QUChlbnRyeSkgVFNSTUxTX0NDKTsKKwkJCQkJbGRh cF9iYXNlX2RuID0gZXN0cmR1cCh0bXApOworCQkJCQlmcmVlX2Jhc2VfZG4gPSAxOwogCQkJCX0g ZWxzZSB7CiAJCQkJCWxkYXBfYmFzZV9kbiA9IE5VTEw7CiAJCQkJfQpAQCAtNzYwLDEwICs3NTEs NiBAQAogCQkJemVuZF9oYXNoX21vdmVfZm9yd2FyZChaX0FSUlZBTF9QUChsaW5rKSk7CiAJCX0K IAkJCi0JCWlmIChsZGFwX2F0dHJzICE9IE5VTEwpIHsKLQkJCWVmcmVlKGxkYXBfYXR0cnMpOwot CQl9Ci0JCQogCQlhcnJheV9pbml0KHJldHVybl92YWx1ZSk7CiAKIAkJLyogQ29sbGVjdCByZXN1 bHRzIGZyb20gdGhlIHNlYXJjaGVzICovCkBAIC03NzksNTAgKzc2Niw2OCBAQAogCQkJCWFkZF9u ZXh0X2luZGV4X2Jvb2wocmV0dXJuX3ZhbHVlLCAwKTsKIAkJCX0KIAkJfQorCitjbGVhbnVwX3Bh cmFsbGVsOgogCQllZnJlZShsZHMpOwogCQllZnJlZShyY3MpOwotCQlyZXR1cm47Ci0JfQorCX0g ZWxzZSB7CisJCWNvbnZlcnRfdG9fc3RyaW5nX2V4KGZpbHRlcik7CisJCWxkYXBfZmlsdGVyID0g Wl9TVFJWQUxfUFAoZmlsdGVyKTsKIAotCWxkID0gKGxkYXBfbGlua2RhdGEgKikgemVuZF9mZXRj aF9yZXNvdXJjZShsaW5rIFRTUk1MU19DQywgLTEsICJsZGFwIGxpbmsiLCBOVUxMLCAxLCBsZV9s aW5rKTsKLQlpZiAobGQgPT0gTlVMTCkgewotCQlpZiAobGRhcF9hdHRycyAhPSBOVUxMKSB7Ci0J CQllZnJlZShsZGFwX2F0dHJzKTsKKwkJLyogSWYgYW55dGhpbmcgZWxzZSB0aGFuIHN0cmluZyBp cyBwYXNzZWQsIGxkYXBfYmFzZV9kbiA9IE5VTEwgKi8KKwkJaWYgKFpfVFlQRV9QUChiYXNlX2Ru KSA9PSBJU19TVFJJTkcpIHsKKwkJCWxkYXBfYmFzZV9kbiA9IFpfU1RSVkFMX1BQKGJhc2VfZG4p OworCQl9IGVsc2UgaWYgKFpfVFlQRV9QUChiYXNlX2RuKSA9PSBJU19VTklDT0RFKSB7CisJCQlj aGFyICp0bXAgPSB6ZW5kX3VuaWNvZGVfdG9fYXNjaWkoWl9VU1RSVkFMX1BQKGJhc2VfZG4pLCBa X1VTVFJMRU5fUFAoYmFzZV9kbikgVFNSTUxTX0NDKTsKKwkJCWxkYXBfYmFzZV9kbiA9IGVzdHJk dXAodG1wKTsKKwkJCWZyZWVfYmFzZV9kbiA9IDE7CiAJCX0KLQkJUkVUVVJOX0ZBTFNFOwotCX0K LQotCXBocF9zZXRfb3B0cyhsZC0+bGluaywgbGRhcF9zaXplbGltaXQsIGxkYXBfdGltZWxpbWl0 LCBsZGFwX2RlcmVmKTsKLQotCS8qIFJ1biB0aGUgYWN0dWFsIHNlYXJjaCAqLwkKLQllcnJubyA9 IGxkYXBfc2VhcmNoX3MobGQtPmxpbmssIGxkYXBfYmFzZV9kbiwgc2NvcGUsIGxkYXBfZmlsdGVy LCBsZGFwX2F0dHJzLCBsZGFwX2F0dHJzb25seSwgJmxkYXBfcmVzKTsKLQotCWlmIChsZGFwX2F0 dHJzICE9IE5VTEwpIHsKLQkJZWZyZWUobGRhcF9hdHRycyk7Ci0JfQogCi0JaWYgKGVycm5vICE9 IExEQVBfU1VDQ0VTUwotCQkmJiBlcnJubyAhPSBMREFQX1NJWkVMSU1JVF9FWENFRURFRAorCQls ZCA9IChsZGFwX2xpbmtkYXRhICopIHplbmRfZmV0Y2hfcmVzb3VyY2UobGluayBUU1JNTFNfQ0Ms IC0xLCAibGRhcCBsaW5rIiwgTlVMTCwgMSwgbGVfbGluayk7CisJCWlmIChsZCA9PSBOVUxMKSB7 CisJCQlyZXQgPSAwOworCQkJZ290byBjbGVhbnVwOworCQl9CisJCisJCXBocF9zZXRfb3B0cyhs ZC0+bGluaywgbGRhcF9zaXplbGltaXQsIGxkYXBfdGltZWxpbWl0LCBsZGFwX2RlcmVmKTsKKwkK KwkJLyogUnVuIHRoZSBhY3R1YWwgc2VhcmNoICovCQorCQllcnJubyA9IGxkYXBfc2VhcmNoX3Mo bGQtPmxpbmssIGxkYXBfYmFzZV9kbiwgc2NvcGUsIGxkYXBfZmlsdGVyLCBsZGFwX2F0dHJzLCBs ZGFwX2F0dHJzb25seSwgJmxkYXBfcmVzKTsKKwkKKwkJaWYgKGVycm5vICE9IExEQVBfU1VDQ0VT UworCQkJJiYgZXJybm8gIT0gTERBUF9TSVpFTElNSVRfRVhDRUVERUQKICNpZmRlZiBMREFQX0FE TUlOTElNSVRfRVhDRUVERUQKLQkJJiYgZXJybm8gIT0gTERBUF9BRE1JTkxJTUlUX0VYQ0VFREVE CisJCQkmJiBlcnJubyAhPSBMREFQX0FETUlOTElNSVRfRVhDRUVERUQKICNlbmRpZgogI2lmZGVm IExEQVBfUkVGRVJSQUwKLQkJJiYgZXJybm8gIT0gTERBUF9SRUZFUlJBTAorCQkJJiYgZXJybm8g IT0gTERBUF9SRUZFUlJBTAogI2VuZGlmCi0JKSB7Ci0JCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBU U1JNTFNfQ0MsIEVfV0FSTklORywgIlNlYXJjaDogJXMiLCBsZGFwX2VycjJzdHJpbmcoZXJybm8p KTsKLQkJUkVUVkFMX0ZBTFNFOyAKLQl9IGVsc2UgewotCQlpZiAoZXJybm8gPT0gTERBUF9TSVpF TElNSVRfRVhDRUVERUQpIHsKLQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVf V0FSTklORywgIlBhcnRpYWwgc2VhcmNoIHJlc3VsdHMgcmV0dXJuZWQ6IFNpemVsaW1pdCBleGNl ZWRlZCIpOwotCQl9CisJCSkgeworCQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywg RV9XQVJOSU5HLCAiU2VhcmNoOiAlcyIsIGxkYXBfZXJyMnN0cmluZyhlcnJubykpOworCQkJcmV0 ID0gMDsKKwkJfSBlbHNlIHsKKwkJCWlmIChlcnJubyA9PSBMREFQX1NJWkVMSU1JVF9FWENFRURF RCkgeworCQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgIlBh cnRpYWwgc2VhcmNoIHJlc3VsdHMgcmV0dXJuZWQ6IFNpemVsaW1pdCBleGNlZWRlZCIpOworCQkJ fQogI2lmZGVmIExEQVBfQURNSU5MSU1JVF9FWENFRURFRAotCQllbHNlIGlmIChlcnJubyA9PSBM REFQX0FETUlOTElNSVRfRVhDRUVERUQpIHsKLQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JN TFNfQ0MsIEVfV0FSTklORywgIlBhcnRpYWwgc2VhcmNoIHJlc3VsdHMgcmV0dXJuZWQ6IEFkbWlu bGltaXQgZXhjZWVkZWQiKTsKLQkJfQorCQkJZWxzZSBpZiAoZXJybm8gPT0gTERBUF9BRE1JTkxJ TUlUX0VYQ0VFREVEKSB7CisJCQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9X QVJOSU5HLCAiUGFydGlhbCBzZWFyY2ggcmVzdWx0cyByZXR1cm5lZDogQWRtaW5saW1pdCBleGNl ZWRlZCIpOworCQkJfQogI2VuZGlmCi0JCQotCQlaRU5EX1JFR0lTVEVSX1JFU09VUkNFKHJldHVy bl92YWx1ZSwgbGRhcF9yZXMsIGxlX3Jlc3VsdCk7CisJCQkKKwkJCVpFTkRfUkVHSVNURVJfUkVT T1VSQ0UocmV0dXJuX3ZhbHVlLCBsZGFwX3JlcywgbGVfcmVzdWx0KTsKKwkJfQorCX0KKworY2xl YW51cDoKKwlpZiAobGRhcF9hdHRycyAhPSBOVUxMKSB7CisJCWVmcmVlKGxkYXBfYXR0cnMpOwor CX0KKwlpZiAoZnJlZV9iYXNlX2RuKSB7CisJCWVmcmVlKGxkYXBfYmFzZV9kbik7CisJfQorCWlm ICghcmV0KSB7CisJCVJFVFZBTF9CT09MKHJldCk7CiAJfQogfQogLyogfX19ICovCkBAIC0xMDUw LDggKzEwNTUsOCBAQAogCWxkYXBfcmVzdWx0ZW50cnkgKnJlc3VsdGVudHJ5OwogCWNoYXIgKmF0 dHJpYnV0ZTsKIAotCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRT Uk1MU19DQywgInJyIiwgJmxpbmssICZyZXN1bHRfZW50cnkpID09IEZBSUxVUkUpIHsKLQkJV1JP TkdfUEFSQU1fQ09VTlQ7CisJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdT KCkgVFNSTUxTX0NDLCAicnIiLCAmbGluaywgJnJlc3VsdF9lbnRyeSkgIT0gU1VDQ0VTUykgewor CQlyZXR1cm47CiAJfQogCiAJWkVORF9GRVRDSF9SRVNPVVJDRShsZCwgbGRhcF9saW5rZGF0YSAq LCAmbGluaywgLTEsICJsZGFwIGxpbmsiLCBsZV9saW5rKTsKQEAgLTEwNzcsOCArMTA4Miw4IEBA CiAJbGRhcF9yZXN1bHRlbnRyeSAqcmVzdWx0ZW50cnk7CiAJY2hhciAqYXR0cmlidXRlOwogCi0J aWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAicnIi LCAmbGluaywgJnJlc3VsdF9lbnRyeSkgPT0gRkFJTFVSRSkgewotCQlXUk9OR19QQVJBTV9DT1VO VDsKKwlpZiAoemVuZF9wYXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0Ms ICJyciIsICZsaW5rLCAmcmVzdWx0X2VudHJ5KSAhPSBTVUNDRVNTKSB7CisJCXJldHVybjsKIAl9 CiAKIAlaRU5EX0ZFVENIX1JFU09VUkNFKGxkLCBsZGFwX2xpbmtkYXRhICosICZsaW5rLCAtMSwg ImxkYXAgbGluayIsIGxlX2xpbmspOwpAQCAtMTgzNyw3ICsxODQyLDcgQEAKIAkJCQkJZXJyb3Ig PSAxOwogCQkJCQlicmVhazsKIAkJCQl9Ci0JCQkJaWYgKHplbmRfaGFzaF9maW5kKFpfQVJSVkFM X1BQKGN0cmx2YWwpLCAib2lkIiwgc2l6ZW9mKCJvaWQiKSwgKHZvaWQgKiopICZ2YWwpICE9IFNV Q0NFU1MpIHsKKwkJCQlpZiAoemVuZF91dGY4X2hhc2hfZmluZChaX0FSUlZBTF9QUChjdHJsdmFs KSwgIm9pZCIsIHNpemVvZigib2lkIiksICh2b2lkICoqKSAmdmFsKSAhPSBTVUNDRVNTKSB7CiAJ CQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgIkNvbnRyb2wg bXVzdCBoYXZlIGFuIG9pZCBrZXkiKTsKIAkJCQkJZXJyb3IgPSAxOwogCQkJCQlicmVhazsKQEAg LTE4NDUsNyArMTg1MCw3IEBACiAJCQkJY3RybCA9ICpjdHJscCA9IGVtYWxsb2Moc2l6ZW9mKCoq Y3RybHApKTsKIAkJCQljb252ZXJ0X3RvX3N0cmluZ19leCh2YWwpOwogCQkJCWN0cmwtPmxkY3Rs X29pZCA9IFpfU1RSVkFMX1BQKHZhbCk7Ci0JCQkJaWYgKHplbmRfaGFzaF9maW5kKFpfQVJSVkFM X1BQKGN0cmx2YWwpLCAidmFsdWUiLCBzaXplb2YoInZhbHVlIiksICh2b2lkICoqKSAmdmFsKSA9 PSBTVUNDRVNTKSB7CisJCQkJaWYgKHplbmRfdXRmOF9oYXNoX2ZpbmQoWl9BUlJWQUxfUFAoY3Ry bHZhbCksICJ2YWx1ZSIsIHNpemVvZigidmFsdWUiKSwgKHZvaWQgKiopICZ2YWwpID09IFNVQ0NF U1MpIHsKIAkJCQkJY29udmVydF90b19zdHJpbmdfZXgodmFsKTsKIAkJCQkJY3RybC0+bGRjdGxf dmFsdWUuYnZfdmFsID0gWl9TVFJWQUxfUFAodmFsKTsKIAkJCQkJY3RybC0+bGRjdGxfdmFsdWUu YnZfbGVuID0gWl9TVFJMRU5fUFAodmFsKTsKQEAgLTE4NTMsNyArMTg1OCw3IEBACiAJCQkJCWN0 cmwtPmxkY3RsX3ZhbHVlLmJ2X3ZhbCA9IE5VTEw7CiAJCQkJCWN0cmwtPmxkY3RsX3ZhbHVlLmJ2 X2xlbiA9IDA7CiAJCQkJfQotCQkJCWlmICh6ZW5kX2hhc2hfZmluZChaX0FSUlZBTF9QUChjdHJs dmFsKSwgImlzY3JpdGljYWwiLCBzaXplb2YoImlzY3JpdGljYWwiKSwgKHZvaWQgKiopICZ2YWwp ID09IFNVQ0NFU1MpIHsKKwkJCQlpZiAoemVuZF91dGY4X2hhc2hfZmluZChaX0FSUlZBTF9QUChj dHJsdmFsKSwgImlzY3JpdGljYWwiLCBzaXplb2YoImlzY3JpdGljYWwiKSwgKHZvaWQgKiopICZ2 YWwpID09IFNVQ0NFU1MpIHsKIAkJCQkJY29udmVydF90b19ib29sZWFuX2V4KHZhbCk7CiAJCQkJ CWN0cmwtPmxkY3RsX2lzY3JpdGljYWwgPSBaX0JWQUxfUFAodmFsKTsKIAkJCQl9IGVsc2UgewpA QCAtMjE2NSw3ICsyMTcwLDggQEAKIAogCVpFTkRfRkVUQ0hfUkVTT1VSQ0UobGQsIGxkYXBfbGlu a2RhdGEgKiwgJmxpbmssIC0xLCAibGRhcCBsaW5rIiwgbGVfbGluayk7CiAKLQlpZiAoWl9UWVBF X1AoY2FsbGJhY2spID09IElTX1NUUklORyAmJiBaX1NUUkxFTl9QKGNhbGxiYWNrKSA9PSAwKSB7 CisJaWYgKChaX1RZUEVfUChjYWxsYmFjaykgPT0gSVNfU1RSSU5HICYmIFpfU1RSTEVOX1AoY2Fs bGJhY2spID09IDApIHx8CisJICAgIChaX1RZUEVfUChjYWxsYmFjaykgPT0gSVNfVU5JQ09ERSAm JiBaX1VTVFJMRU5fUChjYWxsYmFjaykgPT0gMCkpIHsKIAkJLyogdW5yZWdpc3RlciByZWJpbmQg cHJvY2VkdXJlICovCiAJCWlmIChsZC0+cmViaW5kcHJvYyAhPSBOVUxMKSB7CiAJCQl6dmFsX2R0 b3IobGQtPnJlYmluZHByb2MpOwo= --001485f1dc128a0364046afb2168--