Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:1143 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 58537 invoked from network); 1 May 2003 23:04:56 -0000 Received: from unknown (HELO milton.schell.de) (217.160.72.35) by pb1.pair.com with SMTP; 1 May 2003 23:04:56 -0000 Received: (qmail 29205 invoked by uid 501); 1 May 2003 23:04:48 -0000 Received: from unknown (HELO eco.foo) (80.143.15.128) by kdserv.de with SMTP; 1 May 2003 23:04:48 -0000 Received: from localhost (localhost [127.0.0.1]) by eco.foo (Postfix) with ESMTP id CE31644DFC for ; Fri, 2 May 2003 01:04:47 +0200 (CEST) Date: Fri, 2 May 2003 01:04:47 +0200 (CEST) X-X-Sender: sas@eco.foo To: internals@lists.php.net Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="662784-1009783104-1051829369=:409" Subject: [PATCH] Deprecate use of stdio From: sascha@schumann.cx (Sascha Schumann) --662784-1009783104-1051829369=:409 Content-Type: TEXT/PLAIN; charset=US-ASCII The following patches are aimed at deprecating the use of stdio by the script lexer in PHP 4, because certain stdio libraries impose restrictive limits on the number of open handles*. The patches have been split functionally for the benefit of the reviewer. Patch 1 adds a stream interface which fills in a zend_file_handle. This is simply a modified copy of the open_as_file function. Patch 2 adds zend_open() which expects the implementation to fill in a zend_file_handle. Patch 3 makes PHP supply a zend_open implementation. Patch 4 modifies the lexer skeleton so that it can read using POSIX functions and stdio. It also makes open_file_for_scanning use zend_open. * Background: Even the most modern Solaris ships with a stdio library which cannot handle fds over 255. This severely limits any web server which may open more than 255 fds per process, because it won't be able to parse PHP scripts anymore. I've evaluated integrating sfio into the build process, but as it turns out, a full and complete integration would be a lot more complex than addressing the issue up-front. - Sascha --662784-1009783104-1051829369=:409 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-01-streams Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch-01-streams SW5kZXg6IG1haW4vcGhwX3N0cmVhbXMuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocDQvbWFpbi9waHBfc3Ry ZWFtcy5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS42MS4yLjEwDQpkaWZm IC11IC1yMS42MS4yLjEwIHBocF9zdHJlYW1zLmgNCi0tLSBtYWluL3BocF9z dHJlYW1zLmgJMTggTWFyIDIwMDMgMjM6Mzk6MzEgLTAwMDAJMS42MS4yLjEw DQorKysgbWFpbi9waHBfc3RyZWFtcy5oCTEgTWF5IDIwMDMgMjI6NTI6MTUg LTAwMDANCkBAIC01NTEsNiArNTUxLDEwIEBADQogUEhQQVBJIEZJTEUgKiBf cGhwX3N0cmVhbV9vcGVuX3dyYXBwZXJfYXNfZmlsZShjaGFyICogcGF0aCwg Y2hhciAqIG1vZGUsIGludCBvcHRpb25zLCBjaGFyICoqb3BlbmVkX3BhdGgg U1RSRUFNU19EQyBUU1JNTFNfREMpOw0KICNkZWZpbmUgcGhwX3N0cmVhbV9v cGVuX3dyYXBwZXJfYXNfZmlsZShwYXRoLCBtb2RlLCBvcHRpb25zLCBvcGVu ZWRfcGF0aCkgX3BocF9zdHJlYW1fb3Blbl93cmFwcGVyX2FzX2ZpbGUoKHBh dGgpLCAobW9kZSksIChvcHRpb25zKSwgKG9wZW5lZF9wYXRoKSBTVFJFQU1T X0NDIFRTUk1MU19DQykNCiANCisNCitQSFBBUEkgemVuZF9ib29sIF9waHBf c3RyZWFtX29wZW5fd3JhcHBlcl9hc19maWxlX2hhbmRsZShjaGFyICogcGF0 aCwgY2hhciAqIG1vZGUsIGludCBvcHRpb25zLCB6ZW5kX2ZpbGVfaGFuZGxl ICogU1RSRUFNU19EQyBUU1JNTFNfREMpOw0KKyNkZWZpbmUgcGhwX3N0cmVh bV9vcGVuX3dyYXBwZXJfYXNfZmlsZV9oYW5kbGUocGF0aCwgbW9kZSwgb3B0 aW9ucywgZmgpIF9waHBfc3RyZWFtX29wZW5fd3JhcHBlcl9hc19maWxlX2hh bmRsZSgocGF0aCksIChtb2RlKSwgKG9wdGlvbnMpLCAoZmgpIFNUUkVBTVNf Q0MgVFNSTUxTX0NDKQ0KKw0KIC8qIGZvciB1c2VyLXNwYWNlIHN0cmVhbXMg Ki8NCiBQSFBBUEkgZXh0ZXJuIHBocF9zdHJlYW1fb3BzIHBocF9zdHJlYW1f dXNlcnNwYWNlX29wczsNCiBQSFBBUEkgZXh0ZXJuIHBocF9zdHJlYW1fb3Bz IHBocF9zdHJlYW1fdXNlcnNwYWNlX2Rpcl9vcHM7DQpJbmRleDogbWFpbi9z dHJlYW1zLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAv cmVwb3NpdG9yeS9waHA0L21haW4vQXR0aWMvc3RyZWFtcy5jLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS4xMjUuMi41Mg0KZGlmZiAtdSAtcjEuMTI1LjIu NTIgc3RyZWFtcy5jDQotLS0gbWFpbi9zdHJlYW1zLmMJMTYgQXByIDIwMDMg MTI6NTU6MjEgLTAwMDAJMS4xMjUuMi41Mg0KKysrIG1haW4vc3RyZWFtcy5j CTEgTWF5IDIwMDMgMjI6NTI6MTUgLTAwMDANCkBAIC0yNjk0LDYgKzI2OTQs NjIgQEANCiB9DQogLyogfX19ICovDQogDQorDQorDQorLyoge3t7IHBocF9z dHJlYW1fb3Blbl93cmFwcGVyX2FzX2ZpbGVfaGFuZGxlICovDQorUEhQQVBJ IHplbmRfYm9vbCBfcGhwX3N0cmVhbV9vcGVuX3dyYXBwZXJfYXNfZmlsZV9o YW5kbGUoY2hhciAqcGF0aCwgY2hhciAqbW9kZSwgaW50IG9wdGlvbnMsIHpl bmRfZmlsZV9oYW5kbGUgKmZoIFNUUkVBTVNfREMgVFNSTUxTX0RDKQ0KK3sN CisJcGhwX3N0cmVhbSAqc3RyZWFtID0gTlVMTDsNCisNCisJc3RyZWFtID0g cGhwX3N0cmVhbV9vcGVuX3dyYXBwZXJfcmVsKHBhdGgsIG1vZGUsIG9wdGlv bnN8U1RSRUFNX1dJTExfQ0FTVCwgJmZoLT5vcGVuZWRfcGF0aCk7DQorDQor CWlmIChzdHJlYW0gPT0gTlVMTCkNCisJCXJldHVybiBGQUlMVVJFOw0KKw0K KyNpZmRlZiBQSFBfV0lOMzINCisJLyogQXZvaWQgcG9zc2libGUgc3RyYW5n ZSBwcm9ibGVtcyB3aGVuIHdvcmtpbmcgd2l0aCBzb2NrZXQgYmFzZWQgc3Ry ZWFtcyAqLw0KKwlpZiAoKG9wdGlvbnMgJiBTVFJFQU1fT1BFTl9GT1JfSU5D TFVERSkgJiYgcGhwX3N0cmVhbV9pcyhzdHJlYW0sIFBIUF9TVFJFQU1fSVNf U09DS0VUKSkgew0KKwkJY2hhciBidWZbQ0hVTktfU0laRV07DQorCQlGSUxF ICpmcDsNCisNCisJCWZwID0gcGhwX29wZW5fdGVtcG9yYXJ5X2ZpbGUoTlVM TCwgInBocCIsIE5VTEwgVFNSTUxTX0NDKTsNCisJCWlmIChmcCkgew0KKwkJ CXdoaWxlICghcGhwX3N0cmVhbV9lb2Yoc3RyZWFtKSkgew0KKwkJCQlzaXpl X3QgZGlkcmVhZCA9IHBocF9zdHJlYW1fcmVhZChzdHJlYW0sIGJ1Ziwgc2l6 ZW9mKGJ1ZikpOw0KKwkJCQlpZiAoZGlkcmVhZCA+IDApIHsNCisJCQkJCWZ3 cml0ZShidWYsIDEsIGRpZHJlYWQsIGZwKTsNCisJCQkJfSBlbHNlIHsNCisJ CQkJCWJyZWFrOw0KKwkJCQl9DQorCQkJfQ0KKwkJCXBocF9zdHJlYW1fY2xv c2Uoc3RyZWFtKTsNCisJCQlyZXdpbmQoZnApOw0KKwkJCWZoLT5oYW5kbGUu ZnAgPSBmcDsNCisJCQlmaC0+dHlwZSA9IFpFTkRfSEFORExFX0ZQOw0KKwkJ CXJldHVybiBTVUNDRVNTOw0KKwkJfQ0KKwl9DQorI2VuZGlmDQorDQorCWlm IChwaHBfc3RyZWFtX2Nhc3Qoc3RyZWFtLCBQSFBfU1RSRUFNX0FTX0ZEIHwg UEhQX1NUUkVBTV9DQVNUX1RSWV9IQVJEIA0KKwkJCQl8IFBIUF9TVFJFQU1f Q0FTVF9SRUxFQVNFLCAodm9pZCAqKikgJmZoLT5oYW5kbGUuZmQsIA0KKwkJ CQlSRVBPUlRfRVJST1JTKSA9PSBTVUNDRVNTKSB7DQorCQlmaC0+dHlwZSA9 IFpFTkRfSEFORExFX0ZEOw0KKwl9IGVsc2UgaWYgKHBocF9zdHJlYW1fY2Fz dChzdHJlYW0sIFBIUF9TVFJFQU1fQVNfU1RESU8NCisJCQkJfFBIUF9TVFJF QU1fQ0FTVF9UUllfSEFSRCB8IFBIUF9TVFJFQU1fQ0FTVF9SRUxFQVNFLA0K KwkJCQkodm9pZCoqKSAmZmgtPmhhbmRsZS5mcCwgUkVQT1JUX0VSUk9SUykg PT0gU1VDQ0VTUykgew0KKwkJZmgtPnR5cGUgPSBaRU5EX0hBTkRMRV9GUDsN CisJfSBlbHNlIHsNCisJCXBocF9zdHJlYW1fY2xvc2Uoc3RyZWFtKTsNCisJ CWlmIChmaC0+b3BlbmVkX3BhdGgpDQorCQkJZWZyZWUoZmgtPm9wZW5lZF9w YXRoKTsNCisJCWZoLT5vcGVuZWRfcGF0aCA9IE5VTEw7DQorCQlyZXR1cm4g RkFJTFVSRTsNCisJfQ0KKwlyZXR1cm4gU1VDQ0VTUzsNCit9DQorLyogfX19 ICovDQorDQogLyoge3t7IHBocF9zdHJlYW1fbWFrZV9zZWVrYWJsZSAqLw0K IFBIUEFQSSBpbnQgX3BocF9zdHJlYW1fbWFrZV9zZWVrYWJsZShwaHBfc3Ry ZWFtICpvcmlnc3RyZWFtLCBwaHBfc3RyZWFtICoqbmV3c3RyZWFtLCBpbnQg ZmxhZ3MgU1RSRUFNU19EQyBUU1JNTFNfREMpDQogew0K --662784-1009783104-1051829369=:409 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-02-add-zend_open Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch-02-add-zend_open SW5kZXg6IFplbmQvemVuZC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZC96ZW5kLmMsdg0KcmV0cmlldmlu ZyByZXZpc2lvbiAxLjE2Mi4yLjINCmRpZmYgLXUgLXIxLjE2Mi4yLjIgemVu ZC5jDQotLS0gWmVuZC96ZW5kLmMJMzEgRGVjIDIwMDIgMTY6MjI6NTYgLTAw MDAJMS4xNjIuMi4yDQorKysgWmVuZC96ZW5kLmMJMSBNYXkgMjAwMyAyMjo1 MjoxNiAtMDAwMA0KQEAgLTQ4LDYgKzQ4LDcgQEANCiBaRU5EX0FQSSBpbnQg KCp6ZW5kX3ByaW50ZikoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOw0KIFpF TkRfQVBJIHplbmRfd3JpdGVfZnVuY190IHplbmRfd3JpdGU7DQogWkVORF9B UEkgRklMRSAqKCp6ZW5kX2ZvcGVuKShjb25zdCBjaGFyICpmaWxlbmFtZSwg Y2hhciAqKm9wZW5lZF9wYXRoKTsNCitaRU5EX0FQSSB6ZW5kX2Jvb2wgKCp6 ZW5kX29wZW4pKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB6ZW5kX2ZpbGVfaGFu ZGxlICopOw0KIFpFTkRfQVBJIHZvaWQgKCp6ZW5kX2Jsb2NrX2ludGVycnVw dGlvbnMpKHZvaWQpOw0KIFpFTkRfQVBJIHZvaWQgKCp6ZW5kX3VuYmxvY2tf aW50ZXJydXB0aW9ucykodm9pZCk7DQogWkVORF9BUEkgdm9pZCAoKnplbmRf dGlja3NfZnVuY3Rpb24pKGludCB0aWNrcyk7DQpAQCAtMjU1LDYgKzI1Niwx OCBAQA0KIH0NCiANCiANCitzdGF0aWMgemVuZF9ib29sIHplbmRfb3Blbl93 cmFwcGVyKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB6ZW5kX2ZpbGVfaGFuZGxl ICpmaCkNCit7DQorCWZoLT5oYW5kbGUuZnAgPSB6ZW5kX2ZvcGVuKGZpbGVu YW1lLCAmZmgtPm9wZW5lZF9wYXRoKTsNCisNCisJaWYgKGZoLT5oYW5kbGUu ZnApIHsNCisJCWZoLT50eXBlID0gWkVORF9IQU5ETEVfRlA7DQorCQlyZXR1 cm4gU1VDQ0VTUzsNCisJfQ0KKwlyZXR1cm4gRkFJTFVSRTsNCit9DQorDQor DQogc3RhdGljIEZJTEUgKnplbmRfZm9wZW5fd3JhcHBlcihjb25zdCBjaGFy ICpmaWxlbmFtZSwgY2hhciAqKm9wZW5lZF9wYXRoKQ0KIHsNCiAJaWYgKG9w ZW5lZF9wYXRoKSB7DQpAQCAtNDMyLDYgKzQ0NSwxMCBAQA0KIAl6ZW5kX2Zv cGVuID0gdXRpbGl0eV9mdW5jdGlvbnMtPmZvcGVuX2Z1bmN0aW9uOw0KIAlp ZiAoIXplbmRfZm9wZW4pIHsNCiAJCXplbmRfZm9wZW4gPSB6ZW5kX2ZvcGVu X3dyYXBwZXI7DQorCX0NCisJemVuZF9vcGVuID0gdXRpbGl0eV9mdW5jdGlv bnMtPm9wZW5fZnVuY3Rpb247DQorCWlmICghemVuZF9vcGVuKSB7DQorCQl6 ZW5kX29wZW4gPSB6ZW5kX29wZW5fd3JhcHBlcjsNCiAJfQ0KIAl6ZW5kX21l c3NhZ2VfZGlzcGF0Y2hlcl9wID0gdXRpbGl0eV9mdW5jdGlvbnMtPm1lc3Nh Z2VfaGFuZGxlcjsNCiAJemVuZF9ibG9ja19pbnRlcnJ1cHRpb25zID0gdXRp bGl0eV9mdW5jdGlvbnMtPmJsb2NrX2ludGVycnVwdGlvbnM7DQpJbmRleDog WmVuZC96ZW5kLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9aZW5kL3plbmQuaCx2DQpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTY0LjIuNQ0KZGlmZiAtdSAtcjEuMTY0LjIuNSB6ZW5kLmgNCi0t LSBaZW5kL3plbmQuaAkxOCBBcHIgMjAwMyAxNzo1NzowMCAtMDAwMAkxLjE2 NC4yLjUNCisrKyBaZW5kL3plbmQuaAkxIE1heSAyMDAzIDIyOjUyOjE2IC0w MDAwDQpAQCAtMjc5LDYgKzI3OSw3IEBADQogCWludCAoKmhhbmRsZV9wcm9w ZXJ0eV9zZXQpKHplbmRfcHJvcGVydHlfcmVmZXJlbmNlICpwcm9wZXJ0eV9y ZWZlcmVuY2UsIHp2YWwgKnZhbHVlKTsNCiB9Ow0KIA0KK3N0cnVjdCBfemVu ZF9maWxlX2hhbmRsZTsNCiANCiANCiB0eXBlZGVmIHN0cnVjdCBfemVuZF91 dGlsaXR5X2Z1bmN0aW9ucyB7DQpAQCAtMjg2LDYgKzI4Nyw3IEBADQogCWlu dCAoKnByaW50Zl9mdW5jdGlvbikoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p Ow0KIAlpbnQgKCp3cml0ZV9mdW5jdGlvbikoY29uc3QgY2hhciAqc3RyLCB1 aW50IHN0cl9sZW5ndGgpOw0KIAlGSUxFICooKmZvcGVuX2Z1bmN0aW9uKShj b25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqKm9wZW5lZF9wYXRoKTsNCisJ emVuZF9ib29sICgqb3Blbl9mdW5jdGlvbikoY29uc3QgY2hhciAqZmlsZW5h bWUsIHN0cnVjdCBfemVuZF9maWxlX2hhbmRsZSAqKTsNCiAJdm9pZCAoKm1l c3NhZ2VfaGFuZGxlcikobG9uZyBtZXNzYWdlLCB2b2lkICpkYXRhKTsNCiAJ dm9pZCAoKmJsb2NrX2ludGVycnVwdGlvbnMpKHZvaWQpOw0KIAl2b2lkICgq dW5ibG9ja19pbnRlcnJ1cHRpb25zKSh2b2lkKTsNCkBAIC00MTIsMTEgKzQx NCwxMyBAQA0KICNkZWZpbmUgWkVORF9QVVRTKHN0cikJCQkJCXplbmRfd3Jp dGUoKHN0ciksIHN0cmxlbigoc3RyKSkpDQogI2RlZmluZSBaRU5EX1BVVEMo YykJCQkJCXplbmRfd3JpdGUoJihjKSwgMSksIChjKQ0KIA0KK3N0cnVjdCBf emVuZF9maWxlX2hhbmRsZTsNCiANCiBCRUdJTl9FWFRFUk5fQygpDQogZXh0 ZXJuIFpFTkRfQVBJIGludCAoKnplbmRfcHJpbnRmKShjb25zdCBjaGFyICpm b3JtYXQsIC4uLik7DQogZXh0ZXJuIFpFTkRfQVBJIHplbmRfd3JpdGVfZnVu Y190IHplbmRfd3JpdGU7DQogZXh0ZXJuIFpFTkRfQVBJIEZJTEUgKigqemVu ZF9mb3BlbikoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipvcGVuZWRf cGF0aCk7DQorZXh0ZXJuIFpFTkRfQVBJIHplbmRfYm9vbCAoKnplbmRfb3Bl bikoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBfemVuZF9maWxlX2hh bmRsZSAqZmgpOw0KIGV4dGVybiBaRU5EX0FQSSB2b2lkICgqemVuZF9ibG9j a19pbnRlcnJ1cHRpb25zKSh2b2lkKTsNCiBleHRlcm4gWkVORF9BUEkgdm9p ZCAoKnplbmRfdW5ibG9ja19pbnRlcnJ1cHRpb25zKSh2b2lkKTsNCiBleHRl cm4gWkVORF9BUEkgdm9pZCAoKnplbmRfdGlja3NfZnVuY3Rpb24pKGludCB0 aWNrcyk7DQo= --662784-1009783104-1051829369=:409 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-03-use-zend-open Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch-03-use-zend-open SW5kZXg6IG1haW4vbWFpbi5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwNC9tYWluL21haW4uYyx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuNTEyLjIuMjUNCmRpZmYgLXUgLXIxLjUxMi4y LjI1IG1haW4uYw0KLS0tIG1haW4vbWFpbi5jCTI4IEFwciAyMDAzIDIxOjAw OjQxIC0wMDAwCTEuNTEyLjIuMjUNCisrKyBtYWluL21haW4uYwkxIE1heSAy MDAzIDIyOjUyOjE3IC0wMDAwDQpAQCAtNzYyLDYgKzc2MiwxNyBAQA0KIH0N CiAvKiB9fX0gKi8NCiANCisNCisvKiB7e3sgcGhwX29wZW5fd3JhcHBlcl9m b3JfemVuZA0KKyAqLw0KK3N0YXRpYyB6ZW5kX2Jvb2wgcGhwX29wZW5fd3Jh cHBlcl9mb3JfemVuZChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IF96 ZW5kX2ZpbGVfaGFuZGxlICpmaCkNCit7DQorCVRTUk1MU19GRVRDSCgpOw0K Kw0KKwlyZXR1cm4gcGhwX3N0cmVhbV9vcGVuX3dyYXBwZXJfYXNfZmlsZV9o YW5kbGUoKGNoYXIgKilmaWxlbmFtZSwgInJiIiwgRU5GT1JDRV9TQUZFX01P REV8VVNFX1BBVEh8SUdOT1JFX1VSTF9XSU58UkVQT1JUX0VSUk9SU3xTVFJF QU1fT1BFTl9GT1JfSU5DTFVERSwgZmgpOw0KK30NCisvKiB9fX0gKi8NCisN CiAvKiB7e3sgcGhwX2dldF9jb25maWd1cmF0aW9uX2RpcmVjdGl2ZV9mb3Jf emVuZA0KICAqLw0KIHN0YXRpYyBpbnQgcGhwX2dldF9jb25maWd1cmF0aW9u X2RpcmVjdGl2ZV9mb3JfemVuZChjaGFyICpuYW1lLCB1aW50IG5hbWVfbGVu Z3RoLCB6dmFsICpjb250ZW50cykNCkBAIC0xMDk1LDYgKzExMDYsNyBAQA0K IAl6dWYucHJpbnRmX2Z1bmN0aW9uID0gcGhwX3ByaW50ZjsNCiAJenVmLndy aXRlX2Z1bmN0aW9uID0gcGhwX2JvZHlfd3JpdGVfd3JhcHBlcjsNCiAJenVm LmZvcGVuX2Z1bmN0aW9uID0gcGhwX2ZvcGVuX3dyYXBwZXJfZm9yX3plbmQ7 DQorCXp1Zi5vcGVuX2Z1bmN0aW9uID0gcGhwX29wZW5fd3JhcHBlcl9mb3Jf emVuZDsNCiAJenVmLm1lc3NhZ2VfaGFuZGxlciA9IHBocF9tZXNzYWdlX2hh bmRsZXJfZm9yX3plbmQ7DQogCXp1Zi5ibG9ja19pbnRlcnJ1cHRpb25zID0g c2FwaV9tb2R1bGUuYmxvY2tfaW50ZXJydXB0aW9uczsNCiAJenVmLnVuYmxv Y2tfaW50ZXJydXB0aW9ucyA9IHNhcGlfbW9kdWxlLnVuYmxvY2tfaW50ZXJy dXB0aW9uczsNCg== --662784-1009783104-1051829369=:409 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-04-lex-file-handle Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch-04-lex-file-handle SW5kZXg6IFplbmQvZmxleC5za2wNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kL2ZsZXguc2tsLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS4yNw0KZGlmZiAtdSAtcjEuMjcgZmxleC5za2wN Ci0tLSBaZW5kL2ZsZXguc2tsCTE1IEF1ZyAyMDAyIDAwOjIyOjM2IC0wMDAw CTEuMjcNCisrKyBaZW5kL2ZsZXguc2tsCTEgTWF5IDIwMDMgMjI6NTI6MTkg LTAwMDANCkBAIC0xMCw2ICsxMCw5IEBADQogDQogJS0NCiAjaW5jbHVkZSA8 c3RkaW8uaD4NCisjaWZkZWYgSEFWRV9VTklTVERfSA0KKyMgaW5jbHVkZSA8 dW5pc3RkLmg+DQorI2VuZGlmDQogJSoNCiANCiANCkBAIC0xNTQsNyArMTU3 LDcgQEANCiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlDQogCXsNCiAlLQ0KLQlG SUxFICp5eV9pbnB1dF9maWxlOw0KKwlzdHJ1Y3QgX3plbmRfZmlsZV9oYW5k bGUgKnl5X2lucHV0X2ZpbGU7DQogJSsNCiAJaXN0cmVhbSogeXlfaW5wdXRf ZmlsZTsNCiAlKg0KQEAgLTI1NiwxMyArMjU5LDEzIEBADQogLyogc3RhdGlj IGludCB5eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9lb2Y7ICovDQogI2RlZmlu ZSB5eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9lb2YgU0NORyhfeXlfZGlkX2J1 ZmZlcl9zd2l0Y2hfb25fZW9mKQ0KIA0KLXZvaWQgeXlyZXN0YXJ0IFlZX1BS T1RPKCggRklMRSAqaW5wdXRfZmlsZSBUU1JNTFNfREMgKSk7DQordm9pZCB5 eXJlc3RhcnQgWVlfUFJPVE8oKCBzdHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUg ICppbnB1dF9maWxlIFRTUk1MU19EQyApKTsNCiANCiB2b2lkIHl5X3N3aXRj aF90b19idWZmZXIgWVlfUFJPVE8oKCBZWV9CVUZGRVJfU1RBVEUgbmV3X2J1 ZmZlciBUU1JNTFNfREMgKSk7DQogdm9pZCB5eV9sb2FkX2J1ZmZlcl9zdGF0 ZSBZWV9QUk9UTygoIFRTUk1MU19EICkpOw0KLVlZX0JVRkZFUl9TVEFURSB5 eV9jcmVhdGVfYnVmZmVyIFlZX1BST1RPKCggRklMRSAqZmlsZSwgaW50IHNp emUgVFNSTUxTX0RDICkpOw0KK1lZX0JVRkZFUl9TVEFURSB5eV9jcmVhdGVf YnVmZmVyIFlZX1BST1RPKCggc3RydWN0IF96ZW5kX2ZpbGVfaGFuZGxlICpm aWxlLCBpbnQgc2l6ZSBUU1JNTFNfREMgKSk7DQogdm9pZCB5eV9kZWxldGVf YnVmZmVyIFlZX1BST1RPKCggWVlfQlVGRkVSX1NUQVRFIGIgVFNSTUxTX0RD ICkpOw0KLXZvaWQgeXlfaW5pdF9idWZmZXIgWVlfUFJPVE8oKCBZWV9CVUZG RVJfU1RBVEUgYiwgRklMRSAqZmlsZSBUU1JNTFNfREMgKSk7DQordm9pZCB5 eV9pbml0X2J1ZmZlciBZWV9QUk9UTygoIFlZX0JVRkZFUl9TVEFURSBiLCBz dHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUgKmZpbGUgVFNSTUxTX0RDICkpOw0K IHZvaWQgeXlfZmx1c2hfYnVmZmVyIFlZX1BST1RPKCggWVlfQlVGRkVSX1NU QVRFIGIgVFNSTUxTX0RDICkpOw0KICNkZWZpbmUgWVlfRkxVU0hfQlVGRkVS IHl5X2ZsdXNoX2J1ZmZlciggeXlfY3VycmVudF9idWZmZXIgVFNSTUxTX0ND ICkNCiANCkBAIC00MzUsMTkgKzQzOCwyMyBAQA0KIC8qIENvcHkgd2hhdGV2 ZXIgdGhlIGxhc3QgcnVsZSBtYXRjaGVkIHRvIHRoZSBzdGFuZGFyZCBvdXRw dXQuICovDQogDQogI2lmbmRlZiBFQ0hPDQotJS0gU3RhbmRhcmQgKG5vbi1D KyspIGRlZmluaXRpb24NCi0vKiBUaGlzIHVzZWQgdG8gYmUgYW4gZnB1dHMo KSwgYnV0IHNpbmNlIHRoZSBzdHJpbmcgbWlnaHQgY29udGFpbiBOVUwncywN Ci0gKiB3ZSBub3cgdXNlIGZ3cml0ZSgpLg0KLSAqLw0KLSNkZWZpbmUgRUNI TyAodm9pZCkgZndyaXRlKCB5eXRleHQsIHl5bGVuZywgMSwgU0NORyh5eV9v dXQpICkNCi0lKyBDKysgZGVmaW5pdGlvbg0KLSNkZWZpbmUgRUNITyBMZXhl ck91dHB1dCggeXl0ZXh0LCB5eWxlbmcgKQ0KLSUqDQorI2RlZmluZSBFQ0hP DQogI2VuZGlmDQogDQogLyogR2V0cyBpbnB1dCBhbmQgc3R1ZmZzIGl0IGlu dG8gImJ1ZiIuICBudW1iZXIgb2YgY2hhcmFjdGVycyByZWFkLCBvciBZWV9O VUxMLA0KICAqIGlzIHJldHVybmVkIGluICJyZXN1bHQiLg0KICAqLw0KKw0K KyNkZWZpbmUgWVlfSU5QVVQoYnVmLHJlc3VsdCxtYXhfc2l6ZSkgZG8gewkJ CQlcDQorCXJlc3VsdCA9IHl5aW4tPnR5cGUgPT0gWkVORF9IQU5ETEVfRkQg PyAJCQlcDQorCQkJcmVhZCh5eWluLT5oYW5kbGUuZmQsIGJ1ZiwgbWF4X3Np emUpCQlcDQorCQkJOiB5eWluLT50eXBlID09IFpFTkRfSEFORExFX0ZQID8g CQkJXA0KKwkJCWZyZWFkKGJ1ZiwgbWF4X3NpemUsIDEsIHl5aW4tPmhhbmRs ZS5mcCkJXA0KKwkJCTogLTE7CQkJCQkJCQkJCVwNCisJaWYgKHJlc3VsdCA8 IDApCQkJCQkJCQkJCVwNCisJCVlZX0ZBVEFMX0VSUk9SKCJpbnB1dCBpbiBm bGV4IHNjYW5uZXIgZmFpbGVkIik7CVwNCit9IHdoaWxlICgwKQ0KKw0KICNp Zm5kZWYgWVlfSU5QVVQNCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZixyZXN1bHQs bWF4X3NpemUpIFwNCiAlJSBmcmVhZCgpL3JlYWQoKSBkZWZpbml0aW9uIG9m IFlZX0lOUFVUIGdvZXMgaGVyZSB1bmxlc3Mgd2UncmUgZG9pbmcgQysrDQpA QCAtNTI0LDYgKzUzMSw3IEBADQogCQlpZiAoICEgeXlfc3RhcnQgKQ0KIAkJ CXl5X3N0YXJ0ID0gMTsJLyogZmlyc3Qgc3RhcnQgc3RhdGUgKi8NCiANCisj aWYgMA0KIAkJaWYgKCAhIFNDTkcoeXlfaW4pICkNCiAlLQ0KIAkJCVNDTkco eXlfaW4pID0gc3RkaW47DQpAQCAtNTM3LDYgKzU0NSw3IEBADQogJSsNCiAJ CQlTQ05HKHl5X291dCkgPSAmY291dDsNCiAlKg0KKyNlbmRpZg0KIA0KIAkJ aWYgKCAhIHl5X2N1cnJlbnRfYnVmZmVyICkNCiAJCQl5eV9jdXJyZW50X2J1 ZmZlciA9DQpAQCAtMTExMSwxMCArMTEyMCwxMCBAQA0KIA0KICUtDQogI2lm ZGVmIFlZX1VTRV9QUk9UT1MNCi12b2lkIHl5cmVzdGFydCggRklMRSAqaW5w dXRfZmlsZSBUU1JNTFNfREMgKQ0KK3ZvaWQgeXlyZXN0YXJ0KCBzdHJ1Y3Qg X3plbmRfZmlsZV9oYW5kbGUgKmlucHV0X2ZpbGUgVFNSTUxTX0RDICkNCiAj ZWxzZQ0KIHZvaWQgeXlyZXN0YXJ0KCBpbnB1dF9maWxlIFRTUk1MU19DQyAp DQotRklMRSAqaW5wdXRfZmlsZTsNCitzdHJ1Y3QgX3plbmRfZmlsZV9oYW5k bGUgKmlucHV0X2ZpbGU7DQogI2VuZGlmDQogJSsNCiB2b2lkIHl5RmxleExl eGVyOjp5eXJlc3RhcnQoIGlzdHJlYW0qIGlucHV0X2ZpbGUgVFNSTUxTX0RD ICkNCkBAIC0xMTg3LDEwICsxMTk2LDEwIEBADQogDQogJS0NCiAjaWZkZWYg WVlfVVNFX1BST1RPUw0KLVlZX0JVRkZFUl9TVEFURSB5eV9jcmVhdGVfYnVm ZmVyKCBGSUxFICpmaWxlLCBpbnQgc2l6ZSBUU1JNTFNfREMgKQ0KK1lZX0JV RkZFUl9TVEFURSB5eV9jcmVhdGVfYnVmZmVyKCBzdHJ1Y3QgX3plbmRfZmls ZV9oYW5kbGUgKmZpbGUsIGludCBzaXplIFRTUk1MU19EQyApDQogI2Vsc2UN CiBZWV9CVUZGRVJfU1RBVEUgeXlfY3JlYXRlX2J1ZmZlciggZmlsZSwgc2l6 ZSBUU1JNTFNfQ0MgKQ0KLUZJTEUgKmZpbGU7DQorc3RydWN0IF96ZW5kX2Zp bGVfaGFuZGxlICpmaWxlOw0KIGludCBzaXplOw0KICNpZmRlZiBaVFMNCiB2 b2lkICoqKnRzcm1fbHM7DQpAQCAtMTI1OCwxMSArMTI2NywxMSBAQA0KICNl bmRpZg0KIA0KICNpZmRlZiBZWV9VU0VfUFJPVE9TDQotdm9pZCB5eV9pbml0 X2J1ZmZlciggWVlfQlVGRkVSX1NUQVRFIGIsIEZJTEUgKmZpbGUgVFNSTUxT X0RDICkNCit2b2lkIHl5X2luaXRfYnVmZmVyKCBZWV9CVUZGRVJfU1RBVEUg Yiwgc3RydWN0IF96ZW5kX2ZpbGVfaGFuZGxlICpmaWxlIFRTUk1MU19EQyAp DQogI2Vsc2UNCiB2b2lkIHl5X2luaXRfYnVmZmVyKCBiLCBmaWxlIFRTUk1M U19DQyApDQogWVlfQlVGRkVSX1NUQVRFIGI7DQotRklMRSAqZmlsZTsNCitz dHJ1Y3QgX3plbmRfZmlsZV9oYW5kbGUgKmZpbGU7DQogI2lmZGVmIFpUUw0K IHZvaWQgKioqdHNybV9sczsNCiAjZW5kaWYNCkBAIC0xMjg2LDcgKzEyOTUs NyBAQA0KICNpZiBZWV9ORVZFUl9JTlRFUkFDVElWRQ0KIAliLT55eV9pc19p bnRlcmFjdGl2ZSA9IDA7DQogI2Vsc2UNCi0JYi0+eXlfaXNfaW50ZXJhY3Rp dmUgPSBmaWxlID8gKGlzYXR0eSggZmlsZW5vKGZpbGUpICkgPiAwKSA6IDA7 DQorCWItPnl5X2lzX2ludGVyYWN0aXZlID0gZmlsZSA/IChmaWxlLT5pc190 dHkgPT0gWkVORF9UVFlfWUVTID8gMSA6IGZpbGUtPmlzX3R0eSA9PSBaRU5E X1RUWV9OTyA/IDAgOiBmaWxlLT50eXBlID09IFpFTkRfSEFORExFX0ZEID8g ZmlsZS0+aXNfdHR5ID0gaXNhdHR5KGZpbGUtPmhhbmRsZS5mZCkgOiBmaWxl LT50eXBlID09IFpFTkRfSEFORExFX0ZQID8gZmlsZS0+aXNfdHR5ID0gaXNh dHR5KGZpbGVubyhmaWxlLT5oYW5kbGUuZnApKSA6IDApIDogMDsNCiAjZW5k aWYNCiAjZW5kaWYNCiAlKw0KSW5kZXg6IFplbmQvemVuZF9nbG9iYWxzLmgN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9aZW5kL3plbmRfZ2xvYmFscy5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS45My4yLjENCmRpZmYgLXUgLXIxLjkzLjIuMSB6ZW5kX2dsb2JhbHMuaA0K LS0tIFplbmQvemVuZF9nbG9iYWxzLmgJMzEgRGVjIDIwMDIgMTY6MjM6MDIg LTAwMDAJMS45My4yLjENCisrKyBaZW5kL3plbmRfZ2xvYmFscy5oCTEgTWF5 IDIwMDMgMjI6NTI6MTkgLTAwMDANCkBAIC0yMzgsOCArMjM4LDggQEANCiB9 Ow0KIA0KIHN0cnVjdCBfemVuZF9zY2FubmVyX2dsb2JhbHMgew0KLQlGSUxF ICp5eV9pbjsNCi0JRklMRSAqeXlfb3V0Ow0KKwl6ZW5kX2ZpbGVfaGFuZGxl ICp5eV9pbjsNCisJemVuZF9maWxlX2hhbmRsZSAqeXlfb3V0Ow0KIAlpbnQg eXlfbGVuZzsNCiAJY2hhciAqeXlfdGV4dDsNCiAJc3RydWN0IHl5X2J1ZmZl cl9zdGF0ZSAqY3VycmVudF9idWZmZXI7DQpJbmRleDogWmVuZC96ZW5kX2lu aV9zY2FubmVyLmwNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9aZW5kL3plbmRfaW5pX3NjYW5uZXIubCx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMjYuMi4xDQpkaWZmIC11IC1yMS4yNi4yLjEg emVuZF9pbmlfc2Nhbm5lci5sDQotLS0gWmVuZC96ZW5kX2luaV9zY2FubmVy LmwJMjcgRmViIDIwMDMgMDA6MTA6NDMgLTAwMDAJMS4yNi4yLjENCisrKyBa ZW5kL3plbmRfaW5pX3NjYW5uZXIubAkxIE1heSAyMDAzIDIyOjUyOjE5IC0w MDAwDQpAQCAtODQsNyArODQsNyBAQA0KIAl9DQogDQogCWluaXRfaW5pX3Nj YW5uZXIoVFNSTUxTX0MpOw0KLQl5eWluID0gZnA7DQorCXl5aW4gPSBmaDsN CiAJeXlfc3dpdGNoX3RvX2J1ZmZlcih5eV9jcmVhdGVfYnVmZmVyKHl5aW4s IFlZX0JVRl9TSVpFIFRTUk1MU19DQykgVFNSTUxTX0NDKTsNCiAJaW5pX2Zp bGVuYW1lID0gZmgtPmZpbGVuYW1lOw0KIAlyZXR1cm4gU1VDQ0VTUzsNCklu ZGV4OiBaZW5kL3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5oDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZC96ZW5k X2xhbmd1YWdlX3NjYW5uZXIuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTAuNC4xDQpkaWZmIC11IC1yMS4xMC40LjEgemVuZF9sYW5ndWFnZV9zY2Fu bmVyLmgNCi0tLSBaZW5kL3plbmRfbGFuZ3VhZ2Vfc2Nhbm5lci5oCTMxIERl YyAyMDAyIDE2OjIzOjAzIC0wMDAwCTEuMTAuNC4xDQorKysgWmVuZC96ZW5k X2xhbmd1YWdlX3NjYW5uZXIuaAkxIE1heSAyMDAzIDIyOjUyOjE5IC0wMDAw DQpAQCAtMjQsNyArMjQsNyBAQA0KIHR5cGVkZWYgc3RydWN0IF96ZW5kX2xl eF9zdGF0ZSB7DQogCVlZX0JVRkZFUl9TVEFURSBidWZmZXJfc3RhdGU7DQog CWludCBzdGF0ZTsNCi0JRklMRSAqaW47DQorCXplbmRfZmlsZV9oYW5kbGUg KmluOw0KIAl1aW50IGxpbmVubzsNCiAJY2hhciAqZmlsZW5hbWU7DQogI2lm ZGVmIFpFTkRfTVVMVElCWVRFDQpJbmRleDogWmVuZC96ZW5kX2xhbmd1YWdl X3NjYW5uZXIubA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6 IC9yZXBvc2l0b3J5L1plbmQvemVuZF9sYW5ndWFnZV9zY2FubmVyLmwsdg0K cmV0cmlldmluZyByZXZpc2lvbiAxLjU0LjIuMTENCmRpZmYgLXUgLXIxLjU0 LjIuMTEgemVuZF9sYW5ndWFnZV9zY2FubmVyLmwNCi0tLSBaZW5kL3plbmRf bGFuZ3VhZ2Vfc2Nhbm5lci5sCTI1IEFwciAyMDAzIDEwOjE0OjI4IC0wMDAw CTEuNTQuMi4xMQ0KKysrIFplbmQvemVuZF9sYW5ndWFnZV9zY2FubmVyLmwJ MSBNYXkgMjAwMyAyMjo1MjoxOSAtMDAwMA0KQEAgLTE5MCw2ICsxOTAsOSBA QA0KIFpFTkRfQVBJIHZvaWQgemVuZF9maWxlX2hhbmRsZV9kdG9yKHplbmRf ZmlsZV9oYW5kbGUgKmZoKQ0KIHsNCiAJc3dpdGNoIChmaC0+dHlwZSkgew0K KwkJY2FzZSBaRU5EX0hBTkRMRV9GRDoNCisJCQljbG9zZShmaC0+aGFuZGxl LmZkKTsNCisJCQlicmVhazsNCiAJCWNhc2UgWkVORF9IQU5ETEVfRlA6DQog CQkJZmNsb3NlKGZoLT5oYW5kbGUuZnApOw0KIAkJCWJyZWFrOw0KQEAgLTIw MSw5ICsyMDQsMTEgQEANCiAJfQ0KIAlpZiAoZmgtPm9wZW5lZF9wYXRoKSB7 DQogCQllZnJlZShmaC0+b3BlbmVkX3BhdGgpOw0KKwkJZmgtPm9wZW5lZF9w YXRoID0gTlVMTDsNCiAJfQ0KIAlpZiAoZmgtPmZyZWVfZmlsZW5hbWUgJiYg ZmgtPmZpbGVuYW1lKSB7DQogCQllZnJlZShmaC0+ZmlsZW5hbWUpOw0KKwkJ ZmgtPmZpbGVuYW1lID0gTlVMTDsNCiAJfQ0KIH0NCiANCkBAIC0yMTcsNiAr MjIyLDkgQEANCiAJCWNhc2UgWkVORF9IQU5ETEVfRlA6DQogCQkJcmV0dXJu IGZoMS0+aGFuZGxlLmZwPT1maDItPmhhbmRsZS5mcDsNCiAJCQlicmVhazsN CisJCWNhc2UgWkVORF9IQU5ETEVfRkQ6DQorCQkJcmV0dXJuIGZoMS0+aGFu ZGxlLmZkPT1maDItPmhhbmRsZS5mZDsNCisJCQlicmVhazsNCiAJfQ0KIAly ZXR1cm4gMDsNCiB9DQpAQCAtMjI3LDMyICsyMzUsMzIgQEANCiAJemVuZF9s bGlzdF9kZWxfZWxlbWVudCgmQ0cob3Blbl9maWxlcyksIGZpbGVfaGFuZGxl LCAoaW50ICgqKSh2b2lkICosIHZvaWQgKikpIHplbmRfY29tcGFyZV9maWxl X2hhbmRsZXMpOw0KIH0NCiANCisjZGVmaW5lIFpFTkRfSVNfVkFMSURfSEFO RExFKGhuKSAgICgoKGhuKS0+dHlwZSA9PSBaRU5EX0hBTkRMRV9GRCAmJiAo aG4pLT5oYW5kbGUuZmQgPj0gMCkgfHwgKChobiktPnR5cGUgPT0gWkVORF9I QU5ETEVfRlAgJiYgKGhuKS0+aGFuZGxlLmZwICE9IE5VTEwpKQ0KIA0KIFpF TkRfQVBJIGludCBvcGVuX2ZpbGVfZm9yX3NjYW5uaW5nKHplbmRfZmlsZV9o YW5kbGUgKmZpbGVfaGFuZGxlIFRTUk1MU19EQykNCiB7DQogCWNoYXIgKmZp bGVfcGF0aD1OVUxMOw0KKwlpbnQgZG9fYWRkID0gMTsNCiANCiAJc3dpdGNo IChmaWxlX2hhbmRsZS0+dHlwZSkgew0KIAkJY2FzZSBaRU5EX0hBTkRMRV9G SUxFTkFNRToNCi0JCQlmaWxlX2hhbmRsZS0+aGFuZGxlLmZwID0gemVuZF9m b3BlbihmaWxlX2hhbmRsZS0+ZmlsZW5hbWUsICZmaWxlX2hhbmRsZS0+b3Bl bmVkX3BhdGgpOw0KLQkJCWJyZWFrOw0KLQkJY2FzZSBaRU5EX0hBTkRMRV9G RDoNCi0JCQlmaWxlX2hhbmRsZS0+aGFuZGxlLmZwID0gZmRvcGVuKGZpbGVf aGFuZGxlLT5oYW5kbGUuZmQsICJyIik7DQotCQkJYnJlYWs7DQotCQljYXNl IFpFTkRfSEFORExFX0ZQOg0KLQkJCWZpbGVfaGFuZGxlLT5oYW5kbGUuZnAg PSBmaWxlX2hhbmRsZS0+aGFuZGxlLmZwOw0KKwkJCWlmICh6ZW5kX29wZW4o ZmlsZV9oYW5kbGUtPmZpbGVuYW1lLCBmaWxlX2hhbmRsZSkgPT0gRkFJTFVS RSkNCisJCQkJcmV0dXJuIEZBSUxVUkU7DQogCQkJYnJlYWs7DQogCX0NCi0J aWYgKCFmaWxlX2hhbmRsZS0+aGFuZGxlLmZwKSB7DQotCQlyZXR1cm4gRkFJ TFVSRTsNCi0JfQ0KKwlmaWxlX2hhbmRsZS0+aXNfdHR5ID0gWkVORF9UVFlf VU5LTk9XTjsNCiANCi0JZmlsZV9oYW5kbGUtPnR5cGUgPSBaRU5EX0hBTkRM RV9GUDsJDQotCWlmIChmaWxlX2hhbmRsZS0+aGFuZGxlLmZwICE9IHN0ZGlu KSB7DQorCWlmICghWkVORF9JU19WQUxJRF9IQU5ETEUoZmlsZV9oYW5kbGUp KQ0KKwkJCXJldHVybiBGQUlMVVJFOw0KKwkNCisJaWYgKGZpbGVfaGFuZGxl LT50eXBlID09IFpFTkRfSEFORExFX0ZQICYmIGZpbGVfaGFuZGxlLT5oYW5k bGUuZnAgPT0gc3RkaW4pDQorCQlkb19hZGQgPSAwOw0KKwkNCisJaWYgKGRv X2FkZCkgew0KIAkJemVuZF9sbGlzdF9hZGRfZWxlbWVudCgmQ0cob3Blbl9m aWxlcyksIGZpbGVfaGFuZGxlKTsNCiAJfQ0KIAkvKiBSZXNldCB0aGUgc2Nh bm5lciBmb3Igc2Nhbm5pbmcgdGhlIG5ldyBmaWxlICovDQotCVNDTkcoeXlf aW4pID0gZmlsZV9oYW5kbGUtPmhhbmRsZS5mcDsNCisJU0NORyh5eV9pbikg PSBmaWxlX2hhbmRsZTsNCiAjaWZkZWYgWkVORF9NVUxUSUJZVEUNCiAJaWYg KHplbmRfcmVhZF9maWxlKFRTUk1MU19DKSAhPSAwKSB7DQogCQlyZXR1cm4g RkFJTFVSRTsNCkBAIC0zOTcsOSArNDA1LDggQEANCiAJZmlsZV9oYW5kbGUu dHlwZSA9IFpFTkRfSEFORExFX0ZJTEVOQU1FOw0KIAlmaWxlX2hhbmRsZS5v cGVuZWRfcGF0aCA9IE5VTEw7DQogDQotDQogCXJldHZhbCA9IHplbmRfY29t cGlsZV9maWxlKCZmaWxlX2hhbmRsZSwgdHlwZSBUU1JNTFNfQ0MpOw0KLQlp ZiAocmV0dmFsICYmIGZpbGVfaGFuZGxlLmhhbmRsZS5mcCkgew0KKwlpZiAo cmV0dmFsICYmIFpFTkRfSVNfVkFMSURfSEFORExFKCZmaWxlX2hhbmRsZSkp IHsNCiAJCWludCBkdW1teSA9IDE7DQogCQ0KIAkJaWYgKCFmaWxlX2hhbmRs ZS5vcGVuZWRfcGF0aCkgew0KSW5kZXg6IFplbmQvemVuZF9jb21waWxlLmgN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9aZW5kL3plbmRfY29tcGlsZS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS4xNDQuNC4xDQpkaWZmIC11IC1yMS4xNDQuNC4xIHplbmRfY29tcGlsZS5o DQotLS0gWmVuZC96ZW5kX2NvbXBpbGUuaAkzMSBEZWMgMjAwMiAxNjoyMjo1 OCAtMDAwMAkxLjE0NC40LjENCisrKyBaZW5kL3plbmRfY29tcGlsZS5oCTEg TWF5IDIwMDMgMjI6NTI6MTkgLTAwMDANCkBAIC0xNzMsNiArMTczLDcgQEAN CiAJCUZJTEUgKmZwOw0KIAl9IGhhbmRsZTsNCiAJemVuZF9ib29sIGZyZWVf ZmlsZW5hbWU7DQorCWVudW0geyBaRU5EX1RUWV9OTyA9IDAsIFpFTkRfVFRZ X1lFUyA9IDEsICBaRU5EX1RUWV9VTktOT1dOfSBpc190dHk7DQogfSB6ZW5k X2ZpbGVfaGFuZGxlOw0KIA0KIA0K --662784-1009783104-1051829369=:409--