Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:26642 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 41152 invoked by uid 1010); 16 Nov 2006 14:52:29 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 41136 invoked from network); 16 Nov 2006 14:52:29 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Nov 2006 14:52:29 -0000 Authentication-Results: pb1.pair.com smtp.mail=wolfshoehle@googlemail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=wolfshoehle@googlemail.com; sender-id=pass; domainkeys=good Received-SPF: pass (pb1.pair.com: domain googlemail.com designates 64.233.184.238 as permitted sender) DomainKey-Status: good X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: wolfshoehle@googlemail.com X-Host-Fingerprint: 64.233.184.238 wr-out-0506.google.com Linux 2.4/2.6 Received: from [64.233.184.238] ([64.233.184.238:54598] helo=wr-out-0506.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id A8/73-01084-C2B7C554 for ; Thu, 16 Nov 2006 09:52:29 -0500 Received: by wr-out-0506.google.com with SMTP id i32so138510wra for ; Thu, 16 Nov 2006 06:52:25 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=googlemail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=c1TSeGv122WZXz1nsg06NaMNHs1Xt29ozsdKZdiTC3e3YaA7eqsP+iH133tpOROaapqxc6kewBn79AXSvDFEzEtrUJvtEZ0DF624jOX4QPIxWVFUzj1gl2+ZCzEQYVRao7jYVjfN0A4Y4kN+xm6D/gSoxBPXpMO8/PeZ5b5nET8= Received: by 10.90.25.7 with SMTP id 7mr383440agy.1163688745470; Thu, 16 Nov 2006 06:52:25 -0800 (PST) Received: by 10.90.93.12 with HTTP; Thu, 16 Nov 2006 06:52:25 -0800 (PST) Message-ID: <9bb5e33f0611160652h450b0eb7pc5a56d379f35ab80@mail.gmail.com> Date: Thu, 16 Nov 2006 15:52:25 +0100 To: "Wez Furlong" Cc: internals@lists.php.net In-Reply-To: <4e89b4260611160629o1855ed28pf37139f1576fa99b@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21189_31557130.1163688745422" References: <9bb5e33f0611160505u2ac2b1dbt1b04feea4314331c@mail.gmail.com> <4e89b4260611160629o1855ed28pf37139f1576fa99b@mail.gmail.com> Subject: Re: [PHP-DEV] Enable authorizer-feature in PDO_SQLITE From: wolfshoehle@googlemail.com ("Mario Wolff") ------=_Part_21189_31557130.1163688745422 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline @Wez: Whoop, just found you as maintainer in Pecl and send the same request direct to you, sorry! 2006/11/16, Wez Furlong : > Two comments about the patch: > > - could you create a unified diff and post that instead? Here it is! > - static local variable usage is not thread safe; state should be > stored in the pdo_dbh_t structure. Makes sense, even for cleanup. pdo_sqlite_request_shutdown cant free the callback-zval right now. > And one concern: > > I deliberately left this feature unimplemented so far because the > authorization callback will happen "a lot", and frequent callbacks > into PHP script will make things slower. It is only called at compiletime of a query! I think thats not as hard! Maybe it could be an optional feature? > I suggest that you adjust your patch to cache the function callback > information in the pdo_dbh_t to reduce some of that overhead, and run > some benchmarks for a simple authorizer function in PHP that always > returns true vs the same script with no authorizer, so that we get a > feel for what kind of impact that has for various common queries. The Sqlite-Api keeps the user-authorizer in the userdata-void-pointer. The static definition is only ment for clean up! > One other thing that is important is to ensure that the PHP > safe_mode/open_basedir checks have higher priority than the PHP script > callback. If safe_mode/open_basedir decide that the path is not > accessible, then the PHP script must not be able to override that. > However, if safe_mode/open_basedir say that access is ok, the PHP > script can optionally override that decision. Have a look on my authorizer, the user-authorizer is only called if your rules gives SQLITE_OK. The user-authorizer is called from a default authorizer, not from the sqlite-api! > --Wez. Regards, Mario > > > On 11/16/06, Mario Wolff wrote: > > Hello list, > > i've extended sqlite_driver to get access to the authorizer-feature of > > sqlite. This is my first contact with the Zend-API and my last c skill > > is more than a bit outdated. > > Could someone review/cleanup my code to get it merged to the > > distribution? Hint and comment welcome! > > Thanks, > > Mario Wolff > > > > PS: Patch applys against 5.2.0! > > > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > > ------=_Part_21189_31557130.1163688745422 Content-Type: text/x-patch; name=sqlite_driver.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_eul9vf4s Content-Disposition: attachment; filename="sqlite_driver.diff" LS0tIHBocC01LjIuMC9leHQvcGRvX3NxbGl0ZS9zcWxpdGVfZHJpdmVyLmMJMjAwNi0wOS0xNiAy MDozMDowMy4wMDAwMDAwMDAgKzAyMDAKKysrIHBocC01LjIuMC1uZXcvZXh0L3Bkb19zcWxpdGUv c3FsaXRlX2RyaXZlci5jCTIwMDYtMTEtMTYgMTM6Mzg6MzMuOTg1OTg5MTQ0ICswMTAwCkBAIC0z MSw2ICszMSw4IEBACiAjaW5jbHVkZSAicGhwX3Bkb19zcWxpdGVfaW50LmgiCiAjaW5jbHVkZSAi emVuZF9leGNlcHRpb25zLmgiCiAKK3N0YXRpYyBpbnQgYXV0aG9yaXplcih2b2lkICphdXRoYXJn LCBpbnQgYWNjZXNzX3R5cGUsIGNvbnN0IGNoYXIgKmFyZzMsIGNvbnN0IGNoYXIgKmFyZzQsCisJ CWNvbnN0IGNoYXIgKmFyZzUsIGNvbnN0IGNoYXIgKmFyZzYpOwogaW50IF9wZG9fc3FsaXRlX2Vy cm9yKHBkb19kYmhfdCAqZGJoLCBwZG9fc3RtdF90ICpzdG10LCBjb25zdCBjaGFyICpmaWxlLCBp bnQgbGluZSBUU1JNTFNfREMpIC8qIHt7eyAqLwogewogCXBkb19zcWxpdGVfZGJfaGFuZGxlICpI ID0gKHBkb19zcWxpdGVfZGJfaGFuZGxlICopZGJoLT5kcml2ZXJfZGF0YTsKQEAgLTU5Myw5ICs1 OTUsNTkgQEAKIAlSRVRVUk5fRkFMU0U7CiB9CiAvKiB9fX0gKi8KKworLyoge3t7IGJvb2wgU1FM aXRlOjpzcWxpdGVTZXRBdXRob3JpemVyKHN0cmluZyBuYW1lLCBtaXhlZCBjYWxsYmFjayBbLCBp bnQgYXJnY291bnRdKQorICAgUmVnaXN0ZXJzIGEgVURGIHdpdGggdGhlIHNxbGl0ZSBkYiBoYW5k bGUgKi8KK3N0YXRpYyBQSFBfTUVUSE9EKFNRTGl0ZSwgc3FsaXRlU2V0QXV0aG9yaXplcikKK3sK KwlzdGF0aWMgenZhbCp1c2VyX2F1dGhvcml6ZXI9TlVMTDsgCisJc3RydWN0IHBkb19zcWxpdGVf ZnVuYyAqZnVuYzsKKwl6dmFsICpjYWxsYmFjaz1OVUxMOworCWNoYXIgKmNibmFtZSA9IE5VTEw7 CisJcGRvX2RiaF90ICpkYmg7CisJcGRvX3NxbGl0ZV9kYl9oYW5kbGUgKkg7CisJaW50IHJldDsK KworCWlmIChGQUlMVVJFID09IHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkg VFNSTUxTX0NDLCAifHoiLAorCQkJJmNhbGxiYWNrKSkgeworCQlSRVRVUk5fRkFMU0U7CisJfQor CisJZGJoID0gemVuZF9vYmplY3Rfc3RvcmVfZ2V0X29iamVjdChnZXRUaGlzKCkgVFNSTUxTX0ND KTsKKwlQRE9fQ09OU1RSVUNUX0NIRUNLOworCUggPSAocGRvX3NxbGl0ZV9kYl9oYW5kbGUgKilk YmgtPmRyaXZlcl9kYXRhOworCisJaWYoIGNhbGxiYWNrPT1OVUxMIHx8IGNhbGxiYWNrLT50eXBl ID09IElTX1NUUklORyAmJiAhIHN0cmNtcChjYWxsYmFjay0+dmFsdWUuc3RyLnZhbCwiIikgKXsK KwkJaWYgKHVzZXJfYXV0aG9yaXplciE9TlVMTCl7CisJCQlGUkVFX1pWQUwodXNlcl9hdXRob3Jp emVyKTsKKwkJCXNxbGl0ZTNfc2V0X2F1dGhvcml6ZXIoSC0+ZGIsIGF1dGhvcml6ZXIsTlVMTCk7 CisJCX0KKwkJUkVUVVJOX1RSVUU7CisJfQorCQorCWlmICghemVuZF9pc19jYWxsYWJsZShjYWxs YmFjaywgMCwgJmNibmFtZSkpIHsKKwkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywg RV9XQVJOSU5HLCAiZnVuY3Rpb24gJyVzJyBpcyBub3QgY2FsbGFibGUiLCBjYm5hbWUpOworCQll ZnJlZShjYm5hbWUpOworCQlSRVRVUk5fRkFMU0U7CisJfQorCWVmcmVlKGNibmFtZSk7CisJCisK KwlpZiAodXNlcl9hdXRob3JpemVyIT1OVUxMKXsKKwkJRlJFRV9aVkFMKHVzZXJfYXV0aG9yaXpl cik7CisJfQorCQorCU1BS0VfU1REX1pWQUwodXNlcl9hdXRob3JpemVyKTsKKwlaVkFMX1NUUklO Ryh1c2VyX2F1dGhvcml6ZXIsIGNhbGxiYWNrLT52YWx1ZS5zdHIudmFsLCAxKTsKKwlzcWxpdGUz X3NldF9hdXRob3JpemVyKEgtPmRiLCBhdXRob3JpemVyLCB1c2VyX2F1dGhvcml6ZXIpOworCVJF VFVSTl9UUlVFOworfQorLyogfX19ICovCisKIHN0YXRpYyB6ZW5kX2Z1bmN0aW9uX2VudHJ5IGRi aF9tZXRob2RzW10gPSB7CiAJUEhQX01FKFNRTGl0ZSwgc3FsaXRlQ3JlYXRlRnVuY3Rpb24sIE5V TEwsIFpFTkRfQUNDX1BVQkxJQykKIAlQSFBfTUUoU1FMaXRlLCBzcWxpdGVDcmVhdGVBZ2dyZWdh dGUsIE5VTEwsIFpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUoU1FMaXRlLCBzcWxpdGVTZXRBdXRo b3JpemVyLCBOVUxMLCBaRU5EX0FDQ19QVUJMSUMpCiAJe05VTEwsIE5VTEwsIE5VTEx9CiB9Owog CkBAIC02NjMsMzIgKzcxNSwxNDcgQEAKIHN0YXRpYyBpbnQgYXV0aG9yaXplcih2b2lkICphdXRo YXJnLCBpbnQgYWNjZXNzX3R5cGUsIGNvbnN0IGNoYXIgKmFyZzMsIGNvbnN0IGNoYXIgKmFyZzQs CiAJCWNvbnN0IGNoYXIgKmFyZzUsIGNvbnN0IGNoYXIgKmFyZzYpCiB7CisJenZhbCAqY2FsbGJh Y2s9TlVMTCwqemFjY2Vzc190eXBlLCp6YXJnMywqemFyZzQsKnphcmc1LCp6YXJnNjsKKwlpbnQg cmV0dmFsPVNRTElURV9PSzsKIAljaGFyICpmaWxlbmFtZTsKLQlzd2l0Y2ggKGFjY2Vzc190eXBl KSB7Ci0JCWNhc2UgU1FMSVRFX0NPUFk6IHsKLQkJCVRTUk1MU19GRVRDSCgpOwotCQkJZmlsZW5h bWUgPSBtYWtlX2ZpbGVuYW1lX3NhZmUoYXJnNCBUU1JNTFNfQ0MpOwotCQkJaWYgKCFmaWxlbmFt ZSkgewotCQkJCXJldHVybiBTUUxJVEVfREVOWTsKKwlpZiAoUEcoc2FmZV9tb2RlKSB8fCAoUEco b3Blbl9iYXNlZGlyKSAmJiAqUEcob3Blbl9iYXNlZGlyKSkpIHsKKwkJc3dpdGNoIChhY2Nlc3Nf dHlwZSkgeworCQkJY2FzZSBTUUxJVEVfQ09QWTogeworCQkJCVRTUk1MU19GRVRDSCgpOworCQkJ CWZpbGVuYW1lID0gbWFrZV9maWxlbmFtZV9zYWZlKGFyZzQgVFNSTUxTX0NDKTsKKwkJCQlpZiAo IWZpbGVuYW1lKSB7CisJCQkJCXJldHZhbD1TUUxJVEVfREVOWTsKKwkJCQl9ZWxzZXsKKwkJCQkJ ZWZyZWUoZmlsZW5hbWUpOworCQkJCQlyZXR2YWw9U1FMSVRFX09LOworCQkJCX0KIAkJCX0KLQkJ CWVmcmVlKGZpbGVuYW1lKTsKLQkJCXJldHVybiBTUUxJVEVfT0s7Ci0JCX0KIAotCQljYXNlIFNR TElURV9BVFRBQ0g6IHsKLQkJCVRTUk1MU19GRVRDSCgpOwotCQkJZmlsZW5hbWUgPSBtYWtlX2Zp bGVuYW1lX3NhZmUoYXJnMyBUU1JNTFNfQ0MpOwotCQkJaWYgKCFmaWxlbmFtZSkgewotCQkJCXJl dHVybiBTUUxJVEVfREVOWTsKKwkJCWNhc2UgU1FMSVRFX0FUVEFDSDogeworCQkJCVRTUk1MU19G RVRDSCgpOworCQkJCWZpbGVuYW1lID0gbWFrZV9maWxlbmFtZV9zYWZlKGFyZzMgVFNSTUxTX0ND KTsKKwkJCQlpZiAoIWZpbGVuYW1lKSB7CisJCQkJCXJldHZhbD1TUUxJVEVfREVOWTsKKwkJCQl9 ZWxzZXsKKwkJCQkJZWZyZWUoZmlsZW5hbWUpOworCQkJCQlyZXR2YWw9U1FMSVRFX09LOworCQkJ CX0KIAkJCX0KLQkJCWVmcmVlKGZpbGVuYW1lKTsKLQkJCXJldHVybiBTUUxJVEVfT0s7Ci0JCX0K IAotCQlkZWZhdWx0OgotCQkJLyogYWNjZXNzIGFsbG93ZWQgKi8KLQkJCXJldHVybiBTUUxJVEVf T0s7CisJCQlkZWZhdWx0OgorCQkJCS8qIGFjY2VzcyBhbGxvd2VkICovCisJCQkJcmV0dmFsPVNR TElURV9PSzsKKwkJfQorCX0KKwlpZiggcmV0dmFsPT1TUUxJVEVfT0sgJiYgYXV0aGFyZyE9TlVM TCApeworCQljYWxsYmFjaz0oenZhbCopYXV0aGFyZzsKKwkJenZhbCAqKmFyZ3NbNV07CisJCXpl bmRfZmNhbGxfaW5mb19jYWNoZSBmY2lfY2FjaGUgPSBlbXB0eV9mY2FsbF9pbmZvX2NhY2hlOwor CQl6dmFsICpyZXN1bHQgPSBOVUxMOworCQl6ZW5kX2ZjYWxsX2luZm8gZmNpOworCQljaGFyKiB6 Q29kZTsKKwkJc3dpdGNoKCBhY2Nlc3NfdHlwZSApeworCQkJY2FzZSBTUUxJVEVfQ09QWSAgICAg ICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX0NPUFkiOyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX0NS RUFURV9JTkRFWCAgICAgIDogekNvZGU9IlNRTElURV9DUkVBVEVfSU5ERVgiOyBicmVhazsKKwkJ CWNhc2UgU1FMSVRFX0NSRUFURV9UQUJMRSAgICAgIDogekNvZGU9IlNRTElURV9DUkVBVEVfVEFC TEUiOyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX0NSRUFURV9URU1QX0lOREVYIDogekNvZGU9IlNR TElURV9DUkVBVEVfVEVNUF9JTkRFWCI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfQ1JFQVRFX1RF TVBfVEFCTEUgOiB6Q29kZT0iU1FMSVRFX0NSRUFURV9URU1QX1RBQkxFIjsgYnJlYWs7CisJCQlj YXNlIFNRTElURV9DUkVBVEVfVEVNUF9UUklHR0VSOiB6Q29kZT0iU1FMSVRFX0NSRUFURV9URU1Q X1RSSUdHRVIiOyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX0NSRUFURV9URU1QX1ZJRVcgIDogekNv ZGU9IlNRTElURV9DUkVBVEVfVEVNUF9WSUVXIjsgYnJlYWs7CisJCQljYXNlIFNRTElURV9DUkVB VEVfVFJJR0dFUiAgICA6IHpDb2RlPSJTUUxJVEVfQ1JFQVRFX1RSSUdHRVIiOyBicmVhazsKKwkJ CWNhc2UgU1FMSVRFX0NSRUFURV9WSUVXICAgICAgIDogekNvZGU9IlNRTElURV9DUkVBVEVfVklF VyI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfREVMRVRFICAgICAgICAgICAgOiB6Q29kZT0iU1FM SVRFX0RFTEVURSI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfRFJPUF9JTkRFWCAgICAgICAgOiB6 Q29kZT0iU1FMSVRFX0RST1BfSU5ERVgiOyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX0RST1BfVEFC TEUgICAgICAgIDogekNvZGU9IlNRTElURV9EUk9QX1RBQkxFIjsgYnJlYWs7CisJCQljYXNlIFNR TElURV9EUk9QX1RFTVBfSU5ERVggICA6IHpDb2RlPSJTUUxJVEVfRFJPUF9URU1QX0lOREVYIjsg YnJlYWs7CisJCQljYXNlIFNRTElURV9EUk9QX1RFTVBfVEFCTEUgICA6IHpDb2RlPSJTUUxJVEVf RFJPUF9URU1QX1RBQkxFIjsgYnJlYWs7CisJCQljYXNlIFNRTElURV9EUk9QX1RFTVBfVFJJR0dF UiA6IHpDb2RlPSJTUUxJVEVfRFJPUF9URU1QX1RSSUdHRVIiOyBicmVhazsKKwkJCWNhc2UgU1FM SVRFX0RST1BfVEVNUF9WSUVXICAgIDogekNvZGU9IlNRTElURV9EUk9QX1RFTVBfVklFVyI7IGJy ZWFrOworCQkJY2FzZSBTUUxJVEVfRFJPUF9UUklHR0VSICAgICAgOiB6Q29kZT0iU1FMSVRFX0RS T1BfVFJJR0dFUiI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfRFJPUF9WSUVXICAgICAgICAgOiB6 Q29kZT0iU1FMSVRFX0RST1BfVklFVyI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfSU5TRVJUICAg ICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX0lOU0VSVCI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVf UFJBR01BICAgICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX1BSQUdNQSI7IGJyZWFrOworCQkJY2Fz ZSBTUUxJVEVfUkVBRCAgICAgICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX1JFQUQiOyBicmVhazsK KwkJCWNhc2UgU1FMSVRFX1NFTEVDVCAgICAgICAgICAgIDogekNvZGU9IlNRTElURV9TRUxFQ1Qi OyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX1RSQU5TQUNUSU9OICAgICAgIDogekNvZGU9IlNRTElU RV9UUkFOU0FDVElPTiI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfVVBEQVRFICAgICAgICAgICAg OiB6Q29kZT0iU1FMSVRFX1VQREFURSI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfQVRUQUNIICAg ICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX0FUVEFDSCI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVf REVUQUNIICAgICAgICAgICAgOiB6Q29kZT0iU1FMSVRFX0RFVEFDSCI7IGJyZWFrOworCQkJY2Fz ZSBTUUxJVEVfQUxURVJfVEFCTEUgICAgICAgOiB6Q29kZT0iU1FMSVRFX0FMVEVSX1RBQkxFIjsg YnJlYWs7CisJCQljYXNlIFNRTElURV9SRUlOREVYICAgICAgICAgICA6IHpDb2RlPSJTUUxJVEVf UkVJTkRFWCI7IGJyZWFrOworCQkJY2FzZSBTUUxJVEVfQU5BTFlaRSAgICAgICAgICAgOiB6Q29k ZT0iU1FMSVRFX0FOQUxZWkUiOyBicmVhazsKKwkJCWNhc2UgU1FMSVRFX0NSRUFURV9WVEFCTEUg ICAgIDogekNvZGU9IlNRTElURV9DUkVBVEVfVlRBQkxFIjsgYnJlYWs7CisJCQljYXNlIFNRTElU RV9EUk9QX1ZUQUJMRSAgICAgICA6IHpDb2RlPSJTUUxJVEVfRFJPUF9WVEFCTEUiOyBicmVhazsK KwkJCWRlZmF1bHQgICAgICAgICAgICAgICAgICAgICAgIDogekNvZGU9Ij8/Pz8iOyBicmVhazsK KwkJfQorCQlNQUtFX1NURF9aVkFMKHphY2Nlc3NfdHlwZSk7CisJCVpWQUxfU1RSSU5HKHphY2Nl c3NfdHlwZSx6Q29kZSwgMSk7CisJCWFyZ3NbMF09JnphY2Nlc3NfdHlwZTsKKworCQlNQUtFX1NU RF9aVkFMKHphcmczKTsKKwkJaWYoIGFyZzMhPU5VTEwgKXsKKwkJCVpWQUxfU1RSSU5HKHphcmcz LChjaGFyKilhcmczLCAxKTsKKwkJfWVsc2V7CisJCQlaVkFMX1NUUklORyh6YXJnMywiIiwgMSk7 CisJCX0KKwkJYXJnc1sxXT0memFyZzM7CisJCQorCQlNQUtFX1NURF9aVkFMKHphcmc0KTsKKwkJ aWYoIGFyZzQhPU5VTEwgKXsKKwkJCVpWQUxfU1RSSU5HKHphcmc0LChjaGFyKilhcmc0LCAxKTsK KwkJfWVsc2V7CisJCQlaVkFMX1NUUklORyh6YXJnNCwiIiwgMSk7CisJCX0KKwkJYXJnc1syXT0m emFyZzQ7CisJCQorCQlNQUtFX1NURF9aVkFMKHphcmc1KTsKKwkJaWYoIGFyZzUhPU5VTEwgKXsK KwkJCVpWQUxfU1RSSU5HKHphcmc1LChjaGFyKilhcmc1LCAxKTsKKwkJfWVsc2V7CisJCQlaVkFM X1NUUklORyh6YXJnNSwiIiwgMSk7CisJCX0KKwkJYXJnc1szXT0memFyZzU7CisJCQorCQlNQUtF X1NURF9aVkFMKHphcmc2KTsKKwkJaWYoIGFyZzYhPU5VTEwgKXsKKwkJCVpWQUxfU1RSSU5HKHph cmc2LChjaGFyKilhcmc2LCAxKTsKKwkJfWVsc2V7CisJCQlaVkFMX1NUUklORyh6YXJnNiwiIiwg MSk7CisJCX0KKwkJYXJnc1s0XT0memFyZzY7CisJCQorCQlmY2kuc2l6ZSA9IHNpemVvZihmY2kp OworCQlmY2kuZnVuY3Rpb25fdGFibGUgPSBFRyhmdW5jdGlvbl90YWJsZSk7CisJCWZjaS5mdW5j dGlvbl9uYW1lID0gY2FsbGJhY2s7CisJCWZjaS5zeW1ib2xfdGFibGUgPSBOVUxMOworCQlmY2ku b2JqZWN0X3BwID0gTlVMTDsKKwkJZmNpLnJldHZhbF9wdHJfcHRyID0gJnJlc3VsdDsKKwkJZmNp LnBhcmFtX2NvdW50ID0gNTsKKwkJZmNpLnBhcmFtcyA9IGFyZ3M7CisJCWZjaS5ub19zZXBhcmF0 aW9uID0gMDsKKwkJCisJCWlmICh6ZW5kX2NhbGxfZnVuY3Rpb24oJmZjaSwgJmZjaV9jYWNoZSBU U1JNTFNfQ0MpID09IFNVQ0NFU1MgJiYgcmVzdWx0KSB7CisJCQlpZiggcmVzdWx0LT50eXBlPT1J U19CT09MICl7CisJCQkJcmV0dmFsPShyZXN1bHQtPnZhbHVlLmx2YWw9PTApOworCQkJfWVsc2Ug aWYoIHJlc3VsdC0+dHlwZT09SVNfTE9ORyApeworCQkJCXJldHZhbD1yZXN1bHQtPnZhbHVlLmx2 YWw7CisJCQl9ZWxzZXsKKwkJCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dB Uk5JTkcsICJpbnZhbGlkIHJldHVybiBmcm9tIGF1dGhvcml6ZXIsIG5lZWQgYm9vbCBvciBpbnQi KTsKKwkJCQlyZXR2YWw9U1FMSVRFX0RFTlk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlwaHBfZXJy b3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJBbiBlcnJvciBvY2N1cnJlZCB3 aGlsZSBpbnZva2luZyB0aGUgcmVkdWN0aW9uIGNhbGxiYWNrIik7CisJCQlyZXR2YWw9U1FMSVRF X0RFTlk7CisJCX0KKwkJCisJCUZSRUVfWlZBTCh6YWNjZXNzX3R5cGUpOworCQlGUkVFX1pWQUwo emFyZzMpOworCQlGUkVFX1pWQUwoemFyZzQpOworCQlGUkVFX1pWQUwoemFyZzUpOworCQlGUkVF X1pWQUwoemFyZzYpOworCQkKIAl9CisJcmV0dXJuIHJldHZhbDsKIH0KIAogc3RhdGljIGludCBw ZG9fc3FsaXRlX2hhbmRsZV9mYWN0b3J5KHBkb19kYmhfdCAqZGJoLCB6dmFsICpkcml2ZXJfb3B0 aW9ucyBUU1JNTFNfREMpIC8qIHt7eyAqLwpAQCAtNzIxLDkgKzg4OCw3IEBACiAJCWdvdG8gY2xl YW51cDsKIAl9CiAKLQlpZiAoUEcoc2FmZV9tb2RlKSB8fCAoUEcob3Blbl9iYXNlZGlyKSAmJiAq UEcob3Blbl9iYXNlZGlyKSkpIHsKLQkJc3FsaXRlM19zZXRfYXV0aG9yaXplcihILT5kYiwgYXV0 aG9yaXplciwgTlVMTCk7Ci0JfQorCXNxbGl0ZTNfc2V0X2F1dGhvcml6ZXIoSC0+ZGIsIGF1dGhv cml6ZXIsIE5VTEwpOwogCiAJaWYgKGRyaXZlcl9vcHRpb25zKSB7CiAJCXRpbWVvdXQgPSBwZG9f YXR0cl9sdmFsKGRyaXZlcl9vcHRpb25zLCBQRE9fQVRUUl9USU1FT1VULCB0aW1lb3V0IFRTUk1M U19DQyk7Cg== ------=_Part_21189_31557130.1163688745422--