Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:26664 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 6157 invoked by uid 1010); 17 Nov 2006 22:02:44 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 6142 invoked from network); 17 Nov 2006 22:02:44 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 17 Nov 2006 22:02:44 -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 66.249.82.236 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: 66.249.82.236 wx-out-0506.google.com Linux 2.4/2.6 Received: from [66.249.82.236] ([66.249.82.236:19640] helo=wx-out-0506.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 21/32-20533-2813E554 for ; Fri, 17 Nov 2006 17:02:44 -0500 Received: by wx-out-0506.google.com with SMTP id i27so1199426wxd for ; Fri, 17 Nov 2006 14:02:40 -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=tjGFFBovQbKaxO08ZN45l2sHxD/uiyLerZcL8cl2tZR+I0edKFkgcDdlWhyoUcDGzMWEN8U/PQyT4kILfLggB6YmtHgemeSUcRlo/nw0KMeRRLyMPiQmXbM+vdh53H/2ISqU1nVX3ROPGVgxdwGFALVvafIXmbbalh8UyUfJiXA= Received: by 10.90.52.18 with SMTP id z18mr2221840agz.1163800959800; Fri, 17 Nov 2006 14:02:39 -0800 (PST) Received: by 10.90.93.12 with HTTP; Fri, 17 Nov 2006 14:02:39 -0800 (PST) Message-ID: <9bb5e33f0611171402u7ca7523ci382b3c07cf8e8815@mail.gmail.com> Date: Fri, 17 Nov 2006 23:02:39 +0100 To: "Wez Furlong" Cc: internals@lists.php.net In-Reply-To: <4e89b4260611160840p19ad23acg100d9ce44655bd2c@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_45242_5838512.1163800959607" References: <9bb5e33f0611160505u2ac2b1dbt1b04feea4314331c@mail.gmail.com> <4e89b4260611160629o1855ed28pf37139f1576fa99b@mail.gmail.com> <9bb5e33f0611160721l6676cbe5ud0185127fad03402@mail.gmail.com> <9bb5e33f0611160745i4ef015e7i16933d7a4904a6ff@mail.gmail.com> <9bb5e33f0611160752g38cdc4acy92e0f72b9aee9c8b@mail.gmail.com> <4e89b4260611160840p19ad23acg100d9ce44655bd2c@mail.gmail.com> Subject: Re: [PHP-DEV] Enable authorizer-feature in PDO_SQLITE From: wolfshoehle@googlemail.com ("Mario Wolff") ------=_Part_45242_5838512.1163800959607 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline 2006/11/16, Wez Furlong : > I think it would be better to pass in the pdo_dbh_t as the autharg to > the C level callback and then use that to determine if any of the > expensive work needs to be done in the callback. Saves the sqlite_set_authorizer recall in SetAuthorizer, Looks simpler and cleaner. -> done > static int authorizer(....) > { > pdo_dbh_t *db; > > /* keep the current safemode / basedir checks "cheap" and fast */ > if (existing safe_mode and open_base dir return SQLITE_DENY) { > return SQLITE_DENY; > } > > db = (pdo_dbh_t*)autharg; > if (db->user_authorizer) { > TSRMLS_FETCH(); What is this? I'm not familiar with the hole php-stuff, sorry! Done by: + pdo_dbh_t *dbh; + pdo_sqlite_db_handle *H; ... + dbh=(pdo_dbh_t*)autharg; + PDO_CONSTRUCT_CHECK; + H = (pdo_sqlite_db_handle *)dbh->driver_data; + + if( H->user_authorizer ){ OK? > ... > > free stuff > } > } > > You should take a look at how the pdo_sqlite_fci stuff works and adopt > that for the authorizer callback, as it will help improve runtime > performance there. Can't find usefull stuff to adopt. Can you hint me further? > It would also be best to register constants for the various SQLITE_XXX codes > rather than creating strings and having the PHP code check against strings. > This will also improve performance at runtime. I like talking parameters! But you are right, performance comes first! -> done > > Short test script: Modified: sqliteSetAuthorizer('auth'); $db->exec( "CREATE TABLE strings( a)"); $insert = $db->prepare( 'INSERT INTO strings VALUES ( ?)'); foreach ( $data as $str) { $insert->execute( array( $str)); } $insert = null; if( $delete = $db->prepare( 'DELETE FROM strings where a=?')){ if( $delete->execute(array( "six" ))){ echo "delete done!\n"; } $delete = null; }else{ echo "delete not prepared\n"; } echo "unregister authorizer\n"; $db->sqliteSetAuthorizer(); if( $delete = $db->prepare( 'DELETE FROM strings where a=?')){ if( $delete->execute(array( "six" ))){ echo "delete done!\n"; } $delete = null; }else{ echo "delete not prepared\n"; } function auth($type,$arga,$argb,$argc,$argd ){ echo "$type\t$arga\t$argb\t$argc\t$argd\n"; if( $type==SQLITE_DELETE ){ return SQLITE_DENY; } return SQLITE_OK; } print_r( $db->query( 'SELECT sqlite_version( *);')->fetchAll( )); print_r( $db->query( 'SELECT * from strings;')->fetchAll( )); ?> > > gives: now: register authorizer 18 sqlite_master main 2 strings main 23 sqlite_master type main 23 sqlite_master name main 23 sqlite_master tbl_name main 23 sqlite_master rootpage main 23 sqlite_master sql main 20 sqlite_master ROWID main 20 sqlite_master name main 20 sqlite_master rootpage main 20 sqlite_master sql main 20 sqlite_master tbl_name main 18 strings main 9 strings main delete not prepared unregister authorizer delete done! Array ( [0] => Array ( [sqlite_version( *)] => 3.3.7 [0] => 3.3.7 ) ) Array ( [0] => Array ( [a] => one [0] => one ) [1] => Array ( [a] => two [0] => two ) [2] => Array ( [a] => three [0] => three ) [3] => Array ( [a] => four [0] => four ) [4] => Array ( [a] => five [0] => five ) ) Regards, Mario ------=_Part_45242_5838512.1163800959607 Content-Type: text/x-patch; name=pdo_sqlite.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_eun4zb2l Content-Disposition: attachment; filename="pdo_sqlite.diff" ZGlmZiAtdXIgcGhwLTUuMi4wL2V4dC9wZG9fc3FsaXRlL3Bkb19zcWxpdGUuYyBwaHAtNS4yLjAt bmV3L2V4dC9wZG9fc3FsaXRlL3Bkb19zcWxpdGUuYwotLS0gcGhwLTUuMi4wL2V4dC9wZG9fc3Fs aXRlL3Bkb19zcWxpdGUuYwkyMDA2LTAxLTAxIDEzOjUwOjEyLjAwMDAwMDAwMCArMDEwMAorKysg cGhwLTUuMi4wLW5ldy9leHQvcGRvX3NxbGl0ZS9wZG9fc3FsaXRlLmMJMjAwNi0xMS0xNiAyMTow MzozMy4wMDAwMDAwMDAgKzAxMDAKQEAgLTc3LDYgKzc3LDQyIEBACiAvKiB7e3sgUEhQX01JTklU X0ZVTkNUSU9OICovCiBQSFBfTUlOSVRfRlVOQ1RJT04ocGRvX3NxbGl0ZSkKIHsKKwlSRUdJU1RF Ul9MT05HX0NPTlNUQU5UKCJTUUxJVEVfQ09QWSIsICAgU1FMSVRFX0NPUFksIENPTlNUX1BFUlNJ U1RFTlQgfCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0NSRUFU RV9JTkRFWCIsICAgU1FMSVRFX0NSRUFURV9JTkRFWCwgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNU X0NTKTsKKwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVfQ1JFQVRFX1RBQkxFIiwgICBT UUxJVEVfQ1JFQVRFX1RBQkxFLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lT VEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9DUkVBVEVfVEVNUF9JTkRFWCIsICAgICAgU1FMSVRF X0NSRUFURV9URU1QX0lOREVYLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lT VEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9DUkVBVEVfVEVNUF9UQUJMRSIsICAgICAgU1FMSVRF X0NSRUFURV9URU1QX1RBQkxFLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lT VEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9DUkVBVEVfVEVNUF9UUklHR0VSIiwgICAgU1FMSVRF X0NSRUFURV9URU1QX1RSSUdHRVIsIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJUkVH SVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0NSRUFURV9URU1QX1ZJRVciLCAgICAgICBTUUxJ VEVfQ1JFQVRFX1RFTVBfVklFVywgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJ U1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVfQ1JFQVRFX1RSSUdHRVIiLCBTUUxJVEVfQ1JFQVRF X1RSSUdHRVIsIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9OR19D T05TVEFOVCgiU1FMSVRFX0NSRUFURV9WSUVXIiwgICAgU1FMSVRFX0NSRUFURV9WSUVXLCBDT05T VF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElU RV9ERUxFVEUiLCBTUUxJVEVfREVMRVRFLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOwor CVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9EUk9QX0lOREVYIiwgICAgIFNRTElURV9E Uk9QX0lOREVYLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdf Q09OU1RBTlQoIlNRTElURV9EUk9QX1RBQkxFIiwgICAgIFNRTElURV9EUk9QX1RBQkxFLCBDT05T VF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElU RV9EUk9QX1RFTVBfSU5ERVgiLCAgICAgICAgU1FMSVRFX0RST1BfVEVNUF9JTkRFWCwgQ09OU1Rf UEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVf RFJPUF9URU1QX1RBQkxFIiwgICAgICAgIFNRTElURV9EUk9QX1RFTVBfVEFCTEUsIENPTlNUX1BF UlNJU1RFTlQgfCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0RS T1BfVEVNUF9UUklHR0VSIiwgICAgICBTUUxJVEVfRFJPUF9URU1QX1RSSUdHRVIsIENPTlNUX1BF UlNJU1RFTlQgfCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0RS T1BfVEVNUF9WSUVXIiwgU1FMSVRFX0RST1BfVEVNUF9WSUVXLCBDT05TVF9QRVJTSVNURU5UIHwg Q09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9EUk9QX1RSSUdHRVIi LCAgIFNRTElURV9EUk9QX1RSSUdHRVIsIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJ UkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0RST1BfVklFVyIsICAgICAgU1FMSVRFX0RS T1BfVklFVywgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05HX0NP TlNUQU5UKCJTUUxJVEVfSU5TRVJUIiwgU1FMSVRFX0lOU0VSVCwgQ09OU1RfUEVSU0lTVEVOVCB8 IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVfUFJBR01BIiwgU1FM SVRFX1BSQUdNQSwgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05H X0NPTlNUQU5UKCJTUUxJVEVfUkVBRCIsICAgU1FMSVRFX1JFQUQsIENPTlNUX1BFUlNJU1RFTlQg fCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX1NFTEVDVCIsIFNR TElURV9TRUxFQ1QsIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJUkVHSVNURVJfTE9O R19DT05TVEFOVCgiU1FMSVRFX1RSQU5TQUNUSU9OIiwgICAgU1FMSVRFX1RSQU5TQUNUSU9OLCBD T05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNR TElURV9VUERBVEUiLCBTUUxJVEVfVVBEQVRFLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1Mp OworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9BVFRBQ0giLCBTUUxJVEVfQVRUQUNI LCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQo IlNRTElURV9ERVRBQ0giLCBTUUxJVEVfREVUQUNILCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1Rf Q1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElURV9BTFRFUl9UQUJMRSIsICAgIFNR TElURV9BTFRFUl9UQUJMRSwgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJU1RF Ul9MT05HX0NPTlNUQU5UKCJTUUxJVEVfUkVJTkRFWCIsICAgICAgICBTUUxJVEVfUkVJTkRFWCwg Q09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJT UUxJVEVfQU5BTFlaRSIsICAgICAgICBTUUxJVEVfQU5BTFlaRSwgQ09OU1RfUEVSU0lTVEVOVCB8 IENPTlNUX0NTKTsKKwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVfQ1JFQVRFX1ZUQUJM RSIsICBTUUxJVEVfQ1JFQVRFX1ZUQUJMRSwgQ09OU1RfUEVSU0lTVEVOVCB8IENPTlNUX0NTKTsK KwlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJTUUxJVEVfRFJPUF9WVEFCTEUiLCAgICBTUUxJVEVf RFJPUF9WVEFCTEUsIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJLy8gUkVHSVNURVJf TE9OR19DT05TVEFOVCgiU1FMSVRFX0ZVTkNUSU9OIiwgICAgICAgU1FMSVRFX0ZVTkNUSU9OLCBD T05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNR TElURV9PSyIsICAgICBTUUxJVEVfT0ssIENPTlNUX1BFUlNJU1RFTlQgfCBDT05TVF9DUyk7CisJ UkVHSVNURVJfTE9OR19DT05TVEFOVCgiU1FMSVRFX0RFTlkiLCAgIFNRTElURV9ERU5ZLCBDT05T VF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOworCVJFR0lTVEVSX0xPTkdfQ09OU1RBTlQoIlNRTElU RV9JR05PUkUiLCBTUUxJVEVfSUdOT1JFLCBDT05TVF9QRVJTSVNURU5UIHwgQ09OU1RfQ1MpOwor CiAJcmV0dXJuIHBocF9wZG9fcmVnaXN0ZXJfZHJpdmVyKCZwZG9fc3FsaXRlX2RyaXZlcik7CiB9 CiAvKiB9fX0gKi8KZGlmZiAtdXIgcGhwLTUuMi4wL2V4dC9wZG9fc3FsaXRlL3BocF9wZG9fc3Fs aXRlX2ludC5oIHBocC01LjIuMC1uZXcvZXh0L3Bkb19zcWxpdGUvcGhwX3Bkb19zcWxpdGVfaW50 LmgKLS0tIHBocC01LjIuMC9leHQvcGRvX3NxbGl0ZS9waHBfcGRvX3NxbGl0ZV9pbnQuaAkyMDA2 LTAxLTAxIDEzOjUwOjEyLjAwMDAwMDAwMCArMDEwMAorKysgcGhwLTUuMi4wLW5ldy9leHQvcGRv X3NxbGl0ZS9waHBfcGRvX3NxbGl0ZV9pbnQuaAkyMDA2LTExLTE2IDIwOjUxOjQyLjAwMDAwMDAw MCArMDEwMApAQCAtNDksNiArNDksNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogCXNxbGl0ZTMgKmRi OwogCXBkb19zcWxpdGVfZXJyb3JfaW5mbyBlaW5mbzsKKyAgICB6dmFsICp1c2VyX2F1dGhvcml6 ZXI7CiAJc3RydWN0IHBkb19zcWxpdGVfZnVuYyAqZnVuY3M7CiB9IHBkb19zcWxpdGVfZGJfaGFu ZGxlOwogCmRpZmYgLXVyIHBocC01LjIuMC9leHQvcGRvX3NxbGl0ZS9zcWxpdGVfZHJpdmVyLmMg cGhwLTUuMi4wLW5ldy9leHQvcGRvX3NxbGl0ZS9zcWxpdGVfZHJpdmVyLmMKLS0tIHBocC01LjIu MC9leHQvcGRvX3NxbGl0ZS9zcWxpdGVfZHJpdmVyLmMJMjAwNi0wOS0xNiAyMDozMDowMy4wMDAw MDAwMDAgKzAyMDAKKysrIHBocC01LjIuMC1uZXcvZXh0L3Bkb19zcWxpdGUvc3FsaXRlX2RyaXZl ci5jCTIwMDYtMTEtMTcgMTA6MDU6MzAuNTUyNjEzMjU2ICswMTAwCkBAIC01OTMsOSArNTkzLDU5 IEBACiAJUkVUVVJOX0ZBTFNFOwogfQogLyogfX19ICovCisKKy8qIHt7eyBib29sIFNRTGl0ZTo6 c3FsaXRlU2V0QXV0aG9yaXplciggbWl4ZWQgY2FsbGJhY2sgKQorICAgUmVnaXN0ZXJzIGEgY2Fs bGJhY2sgZm9yIGF1dGhvcml6YXRpb24gd2l0aCB0aGUgc3FsaXRlIGRiIGhhbmRsZSAqLworc3Rh dGljIFBIUF9NRVRIT0QoU1FMaXRlLCBzcWxpdGVTZXRBdXRob3JpemVyKQoreworCXp2YWwgKnVz ZXJfYXV0aG9yaXplcj1OVUxMOyAKKwlzdHJ1Y3QgcGRvX3NxbGl0ZV9mdW5jICpmdW5jOworCXp2 YWwgKmNhbGxiYWNrPU5VTEw7CisJY2hhciAqY2JuYW1lID0gTlVMTDsKKwlwZG9fZGJoX3QgKmRi aDsKKwlwZG9fc3FsaXRlX2RiX2hhbmRsZSAqSDsKKwlpbnQgcmV0OworCisJaWYgKEZBSUxVUkUg PT0gemVuZF9wYXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJ8eiIs CisJCQkmY2FsbGJhY2spKSB7CisJCVJFVFVSTl9GQUxTRTsKKwl9CisKKwlkYmggPSB6ZW5kX29i amVjdF9zdG9yZV9nZXRfb2JqZWN0KGdldFRoaXMoKSBUU1JNTFNfQ0MpOworCVBET19DT05TVFJV Q1RfQ0hFQ0s7CisJSCA9IChwZG9fc3FsaXRlX2RiX2hhbmRsZSAqKWRiaC0+ZHJpdmVyX2RhdGE7 CisKKwlpZiggY2FsbGJhY2s9PU5VTEwgKXsKKwkJaWYgKEgtPnVzZXJfYXV0aG9yaXplciE9TlVM TCl7CisJCQlGUkVFX1pWQUwoSC0+dXNlcl9hdXRob3JpemVyKTsKKwkJCUgtPnVzZXJfYXV0aG9y aXplcj1OVUxMOworCQl9CisJCVJFVFVSTl9UUlVFOworCX0KKwkKKwlpZiAoIXplbmRfaXNfY2Fs bGFibGUoY2FsbGJhY2ssIDAsICZjYm5hbWUpKSB7CisJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBU U1JNTFNfQ0MsIEVfV0FSTklORywgImZ1bmN0aW9uICclcycgaXMgbm90IGNhbGxhYmxlIiwgY2Ju YW1lKTsKKwkJZWZyZWUoY2JuYW1lKTsKKwkJUkVUVVJOX0ZBTFNFOworCX0KKwllZnJlZShjYm5h bWUpOworCQorCisJaWYgKEgtPnVzZXJfYXV0aG9yaXplciE9TlVMTCl7CisJCUZSRUVfWlZBTChI LT51c2VyX2F1dGhvcml6ZXIpOworCX0KKwkKKwlNQUtFX1NURF9aVkFMKHVzZXJfYXV0aG9yaXpl cik7CisJWlZBTF9TVFJJTkcodXNlcl9hdXRob3JpemVyLCBjYWxsYmFjay0+dmFsdWUuc3RyLnZh bCwgMSk7CisJSC0+dXNlcl9hdXRob3JpemVyPXVzZXJfYXV0aG9yaXplcjsKKwlSRVRVUk5fVFJV RTsKK30KKy8qIH19fSAqLworCiBzdGF0aWMgemVuZF9mdW5jdGlvbl9lbnRyeSBkYmhfbWV0aG9k c1tdID0gewogCVBIUF9NRShTUUxpdGUsIHNxbGl0ZUNyZWF0ZUZ1bmN0aW9uLCBOVUxMLCBaRU5E X0FDQ19QVUJMSUMpCiAJUEhQX01FKFNRTGl0ZSwgc3FsaXRlQ3JlYXRlQWdncmVnYXRlLCBOVUxM LCBaRU5EX0FDQ19QVUJMSUMpCisJUEhQX01FKFNRTGl0ZSwgc3FsaXRlU2V0QXV0aG9yaXplciwg TlVMTCwgWkVORF9BQ0NfUFVCTElDKQogCXtOVUxMLCBOVUxMLCBOVUxMfQogfTsKIApAQCAtNjE3 LDYgKzY2NywxMCBAQAogCSAqIHJlcXVlc3QgKi8KIAlpZiAoSCkgewogCQlwZG9fc3FsaXRlX2Ns ZWFudXBfY2FsbGJhY2tzKEggVFNSTUxTX0NDKTsKKwkJaWYoIEgtPnVzZXJfYXV0aG9yaXplciE9 MCApeworCQkJRlJFRV9aVkFMKEgtPnVzZXJfYXV0aG9yaXplcik7CisJCQlILT51c2VyX2F1dGhv cml6ZXI9TlVMTDsKKwkJfQogCX0KIH0KIApAQCAtNjYzLDMyICs3MTcsOTQgQEAKIHN0YXRpYyBp bnQgYXV0aG9yaXplcih2b2lkICphdXRoYXJnLCBpbnQgYWNjZXNzX3R5cGUsIGNvbnN0IGNoYXIg KmFyZzMsIGNvbnN0IGNoYXIgKmFyZzQsCiAJCWNvbnN0IGNoYXIgKmFyZzUsIGNvbnN0IGNoYXIg KmFyZzYpCiB7CisJcGRvX2RiaF90ICpkYmg7CisJcGRvX3NxbGl0ZV9kYl9oYW5kbGUgKkg7CisJ enZhbCAqY2FsbGJhY2s9TlVMTCwqemFjY2Vzc190eXBlLCp6YXJnMywqemFyZzQsKnphcmc1LCp6 YXJnNjsKKwlpbnQgcmV0dmFsPVNRTElURV9PSzsKIAljaGFyICpmaWxlbmFtZTsKLQlzd2l0Y2gg KGFjY2Vzc190eXBlKSB7Ci0JCWNhc2UgU1FMSVRFX0NPUFk6IHsKLQkJCVRTUk1MU19GRVRDSCgp OwotCQkJZmlsZW5hbWUgPSBtYWtlX2ZpbGVuYW1lX3NhZmUoYXJnNCBUU1JNTFNfQ0MpOwotCQkJ aWYgKCFmaWxlbmFtZSkgewotCQkJCXJldHVybiBTUUxJVEVfREVOWTsKKwlpZiAoUEcoc2FmZV9t b2RlKSB8fCAoUEcob3Blbl9iYXNlZGlyKSAmJiAqUEcob3Blbl9iYXNlZGlyKSkpIHsKKwkJc3dp dGNoIChhY2Nlc3NfdHlwZSkgeworCQkJY2FzZSBTUUxJVEVfQ09QWTogeworCQkJCVRTUk1MU19G RVRDSCgpOworCQkJCWZpbGVuYW1lID0gbWFrZV9maWxlbmFtZV9zYWZlKGFyZzQgVFNSTUxTX0ND KTsKKwkJCQlpZiAoIWZpbGVuYW1lKSB7CisJCQkJCXJldHVybiBTUUxJVEVfREVOWTsKKwkJCQl9 CisJCQkJZWZyZWUoZmlsZW5hbWUpOworCQkJfQorCQkJY2FzZSBTUUxJVEVfQVRUQUNIOiB7CisJ CQkJVFNSTUxTX0ZFVENIKCk7CisJCQkJZmlsZW5hbWUgPSBtYWtlX2ZpbGVuYW1lX3NhZmUoYXJn MyBUU1JNTFNfQ0MpOworCQkJCWlmICghZmlsZW5hbWUpIHsKKwkJCQkJcmV0dXJuIFNRTElURV9E RU5ZOworCQkJCX0KKwkJCQllZnJlZShmaWxlbmFtZSk7CiAJCQl9Ci0JCQllZnJlZShmaWxlbmFt ZSk7Ci0JCQlyZXR1cm4gU1FMSVRFX09LOwogCQl9Ci0KLQkJY2FzZSBTUUxJVEVfQVRUQUNIOiB7 Ci0JCQlUU1JNTFNfRkVUQ0goKTsKLQkJCWZpbGVuYW1lID0gbWFrZV9maWxlbmFtZV9zYWZlKGFy ZzMgVFNSTUxTX0NDKTsKLQkJCWlmICghZmlsZW5hbWUpIHsKLQkJCQlyZXR1cm4gU1FMSVRFX0RF Tlk7CisJfQorCWRiaD0ocGRvX2RiaF90KilhdXRoYXJnOworCVBET19DT05TVFJVQ1RfQ0hFQ0s7 CisJSCA9IChwZG9fc3FsaXRlX2RiX2hhbmRsZSAqKWRiaC0+ZHJpdmVyX2RhdGE7CisJCisJaWYo IEgtPnVzZXJfYXV0aG9yaXplciApeworCQljYWxsYmFjaz0oenZhbCopSC0+dXNlcl9hdXRob3Jp emVyOworCQl6dmFsICoqYXJnc1s1XTsKKwkJemVuZF9mY2FsbF9pbmZvX2NhY2hlIGZjaV9jYWNo ZSA9IGVtcHR5X2ZjYWxsX2luZm9fY2FjaGU7CisJCXp2YWwgKnJlc3VsdCA9IE5VTEw7CisJCXpl bmRfZmNhbGxfaW5mbyBmY2k7CisJCQorCQlNQUtFX1NURF9aVkFMKHphY2Nlc3NfdHlwZSk7CisJ CVpWQUxfTE9ORyh6YWNjZXNzX3R5cGUsYWNjZXNzX3R5cGUpOworCQlhcmdzWzBdPSZ6YWNjZXNz X3R5cGU7CisKKwkJTUFLRV9TVERfWlZBTCh6YXJnMyk7CisJCVpWQUxfU1RSSU5HKHphcmczLGFy ZzM/KGNoYXIqKWFyZzM6IiIsIDEpOworCQlhcmdzWzFdPSZ6YXJnMzsKKwkJCisJCU1BS0VfU1RE X1pWQUwoemFyZzQpOworCQlaVkFMX1NUUklORyh6YXJnNCxhcmc0PyhjaGFyKilhcmc0OiIiLCAx KTsKKwkJYXJnc1syXT0memFyZzQ7CisJCQorCQlNQUtFX1NURF9aVkFMKHphcmc1KTsKKwkJWlZB TF9TVFJJTkcoemFyZzUsYXJnNT8oY2hhciopYXJnNToiIiwgMSk7CisJCWFyZ3NbM109Jnphcmc1 OworCQkKKwkJTUFLRV9TVERfWlZBTCh6YXJnNik7CisJCVpWQUxfU1RSSU5HKHphcmc2LGFyZzY/ KGNoYXIqKWFyZzY6IiIsIDEpOworCQlhcmdzWzRdPSZ6YXJnNjsKKwkJCisJCWZjaS5zaXplID0g c2l6ZW9mKGZjaSk7CisJCWZjaS5mdW5jdGlvbl90YWJsZSA9IEVHKGZ1bmN0aW9uX3RhYmxlKTsK KwkJZmNpLmZ1bmN0aW9uX25hbWUgPSBjYWxsYmFjazsKKwkJZmNpLnN5bWJvbF90YWJsZSA9IE5V TEw7CisJCWZjaS5vYmplY3RfcHAgPSBOVUxMOworCQlmY2kucmV0dmFsX3B0cl9wdHIgPSAmcmVz dWx0OworCQlmY2kucGFyYW1fY291bnQgPSA1OworCQlmY2kucGFyYW1zID0gYXJnczsKKwkJZmNp Lm5vX3NlcGFyYXRpb24gPSAwOworCQkKKwkJaWYgKHplbmRfY2FsbF9mdW5jdGlvbigmZmNpLCAm ZmNpX2NhY2hlIFRTUk1MU19DQykgPT0gU1VDQ0VTUyAmJiByZXN1bHQpIHsKKwkJCWlmKCByZXN1 bHQtPnR5cGU9PUlTX0JPT0wgKXsKKwkJCQlyZXR2YWw9KHJlc3VsdC0+dmFsdWUubHZhbD09MCk7 CisJCQl9ZWxzZSBpZiggcmVzdWx0LT50eXBlPT1JU19MT05HICl7CisJCQkJcmV0dmFsPXJlc3Vs dC0+dmFsdWUubHZhbDsKKwkJCX1lbHNleworCQkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JN TFNfQ0MsIEVfV0FSTklORywgImludmFsaWQgcmV0dXJuIGZyb20gYXV0aG9yaXplciwgbmVlZCBi b29sIG9yIGludCIpOworCQkJCXJldHZhbD1TUUxJVEVfREVOWTsKIAkJCX0KLQkJCWVmcmVlKGZp bGVuYW1lKTsKLQkJCXJldHVybiBTUUxJVEVfT0s7CisJCX0gZWxzZSB7CisJCQlwaHBfZXJyb3Jf ZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJBbiBlcnJvciBvY2N1cnJlZCB3aGls ZSBpbnZva2luZyB0aGUgcmVkdWN0aW9uIGNhbGxiYWNrIik7CisJCQlyZXR2YWw9U1FMSVRFX0RF Tlk7CiAJCX0KLQotCQlkZWZhdWx0OgotCQkJLyogYWNjZXNzIGFsbG93ZWQgKi8KLQkJCXJldHVy biBTUUxJVEVfT0s7CisJCQorCQlGUkVFX1pWQUwoemFjY2Vzc190eXBlKTsKKwkJRlJFRV9aVkFM KHphcmczKTsKKwkJRlJFRV9aVkFMKHphcmc0KTsKKwkJRlJFRV9aVkFMKHphcmc1KTsKKwkJRlJF RV9aVkFMKHphcmc2KTsKKwkJCiAJfQorCXJldHVybiByZXR2YWw7CiB9CiAKIHN0YXRpYyBpbnQg cGRvX3NxbGl0ZV9oYW5kbGVfZmFjdG9yeShwZG9fZGJoX3QgKmRiaCwgenZhbCAqZHJpdmVyX29w dGlvbnMgVFNSTUxTX0RDKSAvKiB7e3sgKi8KQEAgLTcwMiw2ICs4MTgsNyBAQAogCQogCUgtPmVp bmZvLmVycmNvZGUgPSAwOwogCUgtPmVpbmZvLmVycm1zZyA9IE5VTEw7CisJSC0+dXNlcl9hdXRo b3JpemVyID0gTlVMTDsKIAlkYmgtPmRyaXZlcl9kYXRhID0gSDsKIAogCWZpbGVuYW1lID0gbWFr ZV9maWxlbmFtZV9zYWZlKGRiaC0+ZGF0YV9zb3VyY2UgVFNSTUxTX0NDKTsKQEAgLTcyMSw5ICs4 MzgsNyBAQAogCQlnb3RvIGNsZWFudXA7CiAJfQogCi0JaWYgKFBHKHNhZmVfbW9kZSkgfHwgKFBH KG9wZW5fYmFzZWRpcikgJiYgKlBHKG9wZW5fYmFzZWRpcikpKSB7Ci0JCXNxbGl0ZTNfc2V0X2F1 dGhvcml6ZXIoSC0+ZGIsIGF1dGhvcml6ZXIsIE5VTEwpOwotCX0KKwlzcWxpdGUzX3NldF9hdXRo b3JpemVyKEgtPmRiLCBhdXRob3JpemVyLCBkYmgpOwogCiAJaWYgKGRyaXZlcl9vcHRpb25zKSB7 CiAJCXRpbWVvdXQgPSBwZG9fYXR0cl9sdmFsKGRyaXZlcl9vcHRpb25zLCBQRE9fQVRUUl9USU1F T1VULCB0aW1lb3V0IFRTUk1MU19DQyk7Cg== ------=_Part_45242_5838512.1163800959607--