Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:52468 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 13854 invoked from network); 20 May 2011 01:25:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 20 May 2011 01:25:14 -0000 Authentication-Results: pb1.pair.com header.from=yohgaki@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=yohgaki@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.42 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: yohgaki@gmail.com X-Host-Fingerprint: 209.85.214.42 mail-bw0-f42.google.com Received: from [209.85.214.42] ([209.85.214.42:56519] helo=mail-bw0-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id EC/72-33258-9F2C5DD4 for ; Thu, 19 May 2011 21:25:13 -0400 Received: by bwz18 with SMTP id 18so2979821bwz.29 for ; Thu, 19 May 2011 18:25:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:from:date :x-google-sender-auth:message-id:subject:to:content-type; bh=z0qvJneEnVX+zOnYZWoEmo/iVcXca8NEv0xKROd5uf4=; b=U/A1EdAIKgq6hFkgSsu2wZt8szuR0dSDlxrFTJOx6JeFSaiMFUhjcBPibj6D+jdEGz PUlRNnx4eW1V5c1xh1JKSusMVodzxEVyUW5jm97yrSDgN0QHyVR0DZwaOK+BVmpVMTos hppI7S+8NzQqteu6H+KtL7Ny30mD1edh057fQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:from:date:x-google-sender-auth:message-id :subject:to:content-type; b=IfYfFOHxkBu+LnOjsMa74hW1pb7ilU6Q9KEWVCdpSu3qeN/R3V7o1zIAmPJZhoep3Y UXm4kATUkfG3J1ljZmqop1FVVdLG01TXFrzKyeExeKFX/Olh42IR8YBIw61mO+l5+DM8 SJ0tKyDJDoo5vlaDEthX2jBLWBUZ25n6XBGMo= Received: by 10.204.3.193 with SMTP id 1mr3499995bko.72.1305854710150; Thu, 19 May 2011 18:25:10 -0700 (PDT) MIME-Version: 1.0 Sender: yohgaki@gmail.com Received: by 10.204.119.79 with HTTP; Thu, 19 May 2011 18:24:30 -0700 (PDT) Date: Fri, 20 May 2011 10:24:30 +0900 X-Google-Sender-Auth: kpfdK9VkRh5CnrHFvneqpNVTEUk Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=001517510e5420793204a3aafe31 Subject: [PATCH] pg_escape_literal/pg_escape_identifier for pgsql From: yohgaki@ohgaki.net (Yasuo Ohgaki) --001517510e5420793204a3aafe31 Content-Type: text/plain; charset=ISO-8859-1 Hi all Current PostgreSQL has new escape functions for literals and identifiers. Since there is no function for that, I made patch for that. Attached patch is for trunk and tested with PostgreSQL 8.4 and 9.0. This patch would also applied to 5.4 branch but how about 5.3? It's pain not to have escape functions. Any comments? -- Yasuo Ohgaki yohgaki@ohgaki.net --001517510e5420793204a3aafe31 Content-Type: text/x-patch; charset=UTF-8; name="pgsql-escape-literal.patch" Content-Disposition: attachment; filename="pgsql-escape-literal.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnwg3my70 SW5kZXg6IGV4dC9wZ3NxbC90ZXN0cy8wOGVzY2FwZS5waHB0Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGV4dC9w Z3NxbC90ZXN0cy8wOGVzY2FwZS5waHB0CSjjg6rjg5Pjgrjjg6fjg7MgMzExMjQ1KQorKysgZXh0 L3Bnc3FsL3Rlc3RzLzA4ZXNjYXBlLnBocHQJKOS9nOalreOCs+ODlOODvCkKQEAgLTExLDggKzEx LDkgQEAKIC8vIHBnX2VzY2FwZV9zdHJpbmcoKSB0ZXN0CiAkYmVmb3JlID0gIkFCQ1xcQUJDXCci OwogJGV4cGVjdCAgPSAiQUJDXFxcXEFCQ1xcJyI7CiskZXhwZWN0MiAgPSAiQUJDXFxcXEFCQ1xc XFwnJyI7IC8vdGhlIHdheSBlc2NhcGUgc3RyaW5nIGRpZmZlcnMgZnJvbSBQb3N0Z3JlU1FMIDku MAogJGFmdGVyID0gcGdfZXNjYXBlX3N0cmluZygkYmVmb3JlKTsKLWlmICgkZXhwZWN0ID09PSAk YWZ0ZXIpIHsKK2lmICgkZXhwZWN0ID09PSAkYWZ0ZXIgfHwgJGV4cGVjdDIgPT09ICRhZnRlcikg ewogCWVjaG8gInBnX2VzY2FwZV9zdHJpbmcoKSBpcyBPa1xuIjsKIH0KIGVsc2UgewpAQCAtNTgs MTEgKzU5LDM4IEBACiAJZWNobyAicGdfZXNjYXBlX2J5dGVhKCkgaXMgYnJva2VuXG4iOwogfQog CisvLyBwZ19lc2NhcGVfbGl0ZXJhbC9wZ19lc2NhcGVfaWRlbnRpZmllcgorJGJlZm9yZSA9ICJB QkNcXEFCQ1wnIjsKKyRleHBlY3QgID0gIiBFJ0FCQ1xcXFxBQkNcXFxcJycnIjsKKyRhZnRlciA9 IHBnX2VzY2FwZV9saXRlcmFsKCRiZWZvcmUpOworaWYgKCRleHBlY3QgPT09ICRhZnRlcikgewor CWVjaG8gInBnX2VzY2FwZV9saXRlcmFsKCkgaXMgT2tcbiI7Cit9CitlbHNlIHsKKwllY2hvICJw Z19lc2NhcGVfbGl0ZXJhbCgpIGlzIE5PVCBPa1xuIjsKKwl2YXJfZHVtcCgkYmVmb3JlKTsKKwl2 YXJfZHVtcCgkYWZ0ZXIpOworCXZhcl9kdW1wKCRleHBlY3QpOworfQorCiskYmVmb3JlID0gIkFC Q1xcQUJDXCciOworJGV4cGVjdCAgPSAiXCJBQkNcQUJDXCdcIiI7CiskYWZ0ZXIgPSBwZ19lc2Nh cGVfaWRlbnRpZmllcigkYmVmb3JlKTsKK2lmICgkZXhwZWN0ID09PSAkYWZ0ZXIpIHsKKwllY2hv ICJwZ19lc2NhcGVfaWRlbnRpZmllcigpIGlzIE9rXG4iOworfQorZWxzZSB7CisJZWNobyAicGdf ZXNjYXBlX2lkZW50aWZpZXIoKSBpcyBOT1QgT2tcbiI7CisJdmFyX2R1bXAoJGJlZm9yZSk7CisJ dmFyX2R1bXAoJGFmdGVyKTsKKwl2YXJfZHVtcCgkZXhwZWN0KTsKK30KKworCiA/PgogLS1FWFBF Q1QtLQotcGdfZXNjYXBlX3N0cmluZygpIGlzIE5PVCBPawotc3RyaW5nKDkpICJBQkNcQUJDXCci Ci1zdHJpbmcoMTIpICJBQkNcXEFCQ1xcJyciCi1zdHJpbmcoMTApICJBQkNcXEFCQ1wnIgorcGdf ZXNjYXBlX3N0cmluZygpIGlzIE9rCiBwZ19lc2NhcGVfYnl0ZWEoKSBpcyBPawogcGdfZXNjYXBl X2J5dGVhKCkgYWN0dWFsbHkgd29ya3Mgd2l0aCBkYXRhYmFzZQorcGdfZXNjYXBlX2xpdGVyYWwo KSBpcyBPaworcGdfZXNjYXBlX2lkZW50aWZpZXIoKSBpcyBPawpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKSW5kZXg6IGV4dC9wZ3NxbC9waHBfcGdzcWwuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQv cGdzcWwvcGhwX3Bnc3FsLmgJKOODquODk+OCuOODp+ODsyAzMTEyNDUpCisrKyBleHQvcGdzcWwv cGhwX3Bnc3FsLmgJKOS9nOalreOCs+ODlOODvCkKQEAgLTE3Myw2ICsxNzMsOCBAQAogUEhQX0ZV TkNUSU9OKHBnX2VzY2FwZV9ieXRlYSk7CiBQSFBfRlVOQ1RJT04ocGdfdW5lc2NhcGVfYnl0ZWEp OwogI2VuZGlmCitQSFBfRlVOQ1RJT04ocGdfZXNjYXBlX2xpdGVyYWwpOworUEhQX0ZVTkNUSU9O KHBnX2VzY2FwZV9pZGVudGlmaWVyKTsKIAogLyogbWlzYyBmdW5jdGlvbnMgKi8KIFBIUF9GVU5D VElPTihwZ19tZXRhX2RhdGEpOwpJbmRleDogZXh0L3Bnc3FsL2NvbmZpZy5tNAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBleHQvcGdzcWwvY29uZmlnLm00CSjjg6rjg5Pjgrjjg6fjg7MgMzExMjQ1KQorKysgZXh0 L3Bnc3FsL2NvbmZpZy5tNAko5L2c5qWt44Kz44OU44O8KQpAQCAtOTQsNiArOTQsNyBAQAogICBB Q19DSEVDS19MSUIocHEsIHBnX2VuY29kaW5nX3RvX2NoYXIsQUNfREVGSU5FKEhBVkVfUEdTUUxf V0lUSF9NVUxUSUJZVEVfU1VQUE9SVCwxLFtXaGV0aGVyIGxpYnBxIGlzIGNvbXBpbGVkIHdpdGgg LS1lbmFibGUtbXVsdGlieXRlXSkpCiAgIEFDX0NIRUNLX0xJQihwcSwgbG9fY3JlYXRlLCBBQ19E RUZJTkUoSEFWRV9QR19MT19DUkVBVEUsMSxbUG9zdGdyZVNRTCA4LjEgb3IgbGF0ZXJdKSkKICAg QUNfQ0hFQ0tfTElCKHBxLCBsb19pbXBvcnRfd2l0aF9vaWQsIEFDX0RFRklORShIQVZFX1BHX0xP X0lNUE9SVF9XSVRIX09JRCwxLFtQb3N0Z3JlU1FMIDguNCBvciBsYXRlcl0pKQorICBBQ19DSEVD S19MSUIocHEsIFBRZXNjYXBlTGl0ZXJhbCwgQUNfREVGSU5FKEhBVkVfUFFFU0NBUEVMSVRFUkFM LDEsW1Bvc3RncmVTUUwgOS4wIG9yIGxhdGVyXSkpCiAgIExJQlM9JG9sZF9MSUJTCiAgIExERkxB R1M9JG9sZF9MREZMQUdTCiAKSW5kZXg6IGV4dC9wZ3NxbC9wZ3NxbC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGV4dC9wZ3NxbC9wZ3NxbC5jCSjjg6rjg5Pjgrjjg6fjg7MgMzExMjQ1KQorKysgZXh0L3Bnc3Fs L3Bnc3FsLmMJKOS9nOalreOCs+ODlOODvCkKQEAgLTQyMiw2ICs0MjIsMTcgQEAKIFpFTkRfRU5E X0FSR19JTkZPKCkKICNlbmRpZgogCisjaWYgSEFWRV9QUUVTQ0FQRQorWkVORF9CRUdJTl9BUkdf SU5GT19FWChhcmdpbmZvX3BnX2VzY2FwZV9saXRlcmFsLCAwLCAwLCAwKQorCVpFTkRfQVJHX0lO Rk8oMCwgY29ubmVjdGlvbikKKwlaRU5EX0FSR19JTkZPKDAsIGRhdGEpCitaRU5EX0VORF9BUkdf SU5GTygpCitaRU5EX0JFR0lOX0FSR19JTkZPX0VYKGFyZ2luZm9fcGdfZXNjYXBlX2lkZW50aWZp ZXIsIDAsIDAsIDApCisJWkVORF9BUkdfSU5GTygwLCBjb25uZWN0aW9uKQorCVpFTkRfQVJHX0lO Rk8oMCwgZGF0YSkKK1pFTkRfRU5EX0FSR19JTkZPKCkKKyNlbmRpZgorCiBaRU5EX0JFR0lOX0FS R19JTkZPX0VYKGFyZ2luZm9fcGdfcmVzdWx0X2Vycm9yLCAwLCAwLCAxKQogCVpFTkRfQVJHX0lO Rk8oMCwgcmVzdWx0KQogWkVORF9FTkRfQVJHX0lORk8oKQpAQCAtNjUzLDYgKzY2NCw4IEBACiAJ UEhQX0ZFKHBnX2VzY2FwZV9ieXRlYSwgCWFyZ2luZm9fcGdfZXNjYXBlX2J5dGVhKQogCVBIUF9G RShwZ191bmVzY2FwZV9ieXRlYSwgCWFyZ2luZm9fcGdfdW5lc2NhcGVfYnl0ZWEpCiAjZW5kaWYK KwlQSFBfRkUocGdfZXNjYXBlX2xpdGVyYWwsIAlhcmdpbmZvX3BnX2VzY2FwZV9saXRlcmFsKQor CVBIUF9GRShwZ19lc2NhcGVfaWRlbnRpZmllciwgCWFyZ2luZm9fcGdfZXNjYXBlX2lkZW50aWZp ZXIpCiAjaWYgSEFWRV9QUVNFVEVSUk9SVkVSQk9TSVRZCiAJUEhQX0ZFKHBnX3NldF9lcnJvcl92 ZXJib3NpdHksCWFyZ2luZm9fcGdfc2V0X2Vycm9yX3ZlcmJvc2l0eSkKICNlbmRpZgpAQCAtODE1 LDcgKzgyOCw3IEBACiAJVFNSTUxTX0ZFVENIKCk7CiAJaWYgKCEgUEdHKGlnbm9yZV9ub3RpY2Vz KSkgewogCQlub3RpY2UgPSAocGhwX3Bnc3FsX25vdGljZSAqKWVtYWxsb2Moc2l6ZW9mKHBocF9w Z3NxbF9ub3RpY2UpKTsKLQkJbm90aWNlLT5tZXNzYWdlID0gX3BocF9wZ3NxbF90cmltX21lc3Nh Z2UobWVzc2FnZSwgJm5vdGljZS0+bGVuKTsKKwkJbm90aWNlLT5tZXNzYWdlID0gX3BocF9wZ3Nx bF90cmltX21lc3NhZ2UobWVzc2FnZSwgKGludCAqKSZub3RpY2UtPmxlbik7CiAJCWlmIChQR0co bG9nX25vdGljZXMpKSB7CiAJCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX05P VElDRSwgIiVzIiwgbm90aWNlLT5tZXNzYWdlKTsKIAkJfQpAQCAtNDIwMCw2ICs0MjEzLDEyOCBA QAogLyogfX19ICovCiAjZW5kaWYKIAorI2lmICFIQVZFX1BRRVNDQVBFTElURVJBTAorLyogZW11 bGF0ZSBsaWJwcSdzIFBRZXNjYXBlSW50ZXJuYWwoKSA5LjAgb3IgbGF0ZXIgKi8KK3N0YXRpYyBj aGFyKiBwaHBfcGdzcWxfUFFlc2NhcGVJbnRlcm5hbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnN0ciwgc2l6ZV90IGxlbiwgaW50IGVzY2FwZV9saXRlcmFsKSB7CisgICAgY2hhciAqcmVzdWx0 LCAqcnA7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBzaXplX3QgdG1wX2xlbjsKKyAgICBpbnQg aW5wdXRfbGVuID0gbGVuOworICAgIGNoYXIgcXVvdGVfY2hhciA9IGVzY2FwZV9saXRlcmFsID8g J1wnJyA6ICciJzsKKworICAgIGlmICghY29ubikgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisKKyAgICAvKgorICAgICAqIE5PVEU6IG11bHRpYnl0ZSBzdHJpbmdzIHRoYXQgY291bGQg Y29pbnRhaW4gc2xhc2hlcyBzaG91bGQgYmUgY29uc2lkZXJlZC4KKyAgICAgKiAoZS5nLiBTSklT LCBCSUc1KSBIb3dldmVyLCBpdCBjYW5ub3QgYmUgZG9uZSB3aXRob3V0IHZhbGlkIFBHY29ubiBh bmQgbWJzdHJpbmcuIAorICAgICAqIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBz dXBwb3J0IHN1Y2ggZW5jb2RpbmdzIGN1cnJlbnRseS4KKyAgICAgKiBGSVhNRTogYWRkIGVuY29k aW5nIGNoZWNrIGFuZCBza2lwIG11bHRpYnl0ZSBjaGFyIGJ5dGVzIGlmIHRoZXJlIGlzIHZhaWxk IFBHY29ubi4KKyAgICAgKi8KKworICAgIC8qIGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgKi8KKyAg ICBycCA9IHJlc3VsdCA9IChjaGFyICopZW1hbGxvYyhsZW4qMiArIDUpOyAvKiBsZWFkaW5nICIg RSIgbmVlZHMgZXh0cmEgMiBieXRlcyArIHF1b3RlX2NoYXJzIG9uIGJvdGggZW5kIGZvciAyIGJ5 dGVzICsgTlVMTCAqLworCisgICAgaWYgKGVzY2FwZV9saXRlcmFsKSB7CisgICAgICAgIC8qIGNo ZWNrIGJhY2tzbGFzaGVzICovCisgICAgICAgIHRtcF9sZW4gPSBzdHJzcG4oc3RyLCAiXFwiKTsK KyAgICAgICAgaWYgKHRtcF9sZW4gIT0gbGVuKSB7CisgICAgICAgICAgICAvKiBhZGQgIiBFIiBm b3IgZXNjYXBpbmcgc2xhc2hlcyAqLworICAgICAgICAgICAgKnJwKysgPSAnICc7CisgICAgICAg ICAgICAqcnArKyA9ICdFJzsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBvcGVuIHF1b3RlICov CisgICAgKnJwKysgPSBxdW90ZV9jaGFyOworICAgIGZvciAocyA9IHN0cjsgcyAtIHN0ciA8IGlu cHV0X2xlbjsgKytzKSB7CisgICAgICAgIGlmICgqcyA9PSBxdW90ZV9jaGFyIHx8IChlc2NhcGVf bGl0ZXJhbCAmJiAqcyA9PSAnXFwnKSkgeworICAgICAgICAgICAgKnJwKysgPSAqczsKKyAgICAg ICAgICAgICpycCsrID0gKnM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcnArKyA9 ICpzOworICAgICAgICB9CisgICAgfQorICAgICpycCsrID0gcXVvdGVfY2hhcjsKKyAgICAqcnAg PSAnXDAnOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworc3RhdGljIHZv aWQgcGhwX3Bnc3FsX2VzY2FwZV9pbnRlcm5hbChJTlRFUk5BTF9GVU5DVElPTl9QQVJBTUVURVJT LCBpbnQgZXNjYXBlX2xpdGVyYWwpIHsKKwljaGFyICpmcm9tID0gTlVMTCwgKnRvID0gTlVMTCwg KnRtcCA9IE5VTEw7CisJenZhbCAqcGdzcWxfbGluayA9IE5VTEw7CisJUEdjb25uICpwZ3NxbDsK KwlpbnQgdG9fbGVuOworCWludCBmcm9tX2xlbjsKKwlpbnQgaWQgPSAtMTsKKworCXN3aXRjaCAo WkVORF9OVU1fQVJHUygpKSB7CisJCWNhc2UgMToKKwkJCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRl cnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInMiLCAmZnJvbSwgJmZyb21fbGVuKSA9PSBG QUlMVVJFKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJcGdzcWxfbGluayA9IE5VTEw7CisJCQlp ZCA9IFBHRyhkZWZhdWx0X2xpbmspOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWlmICh6 ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInJzIiwgJnBn c3FsX2xpbmssICZmcm9tLCAmZnJvbV9sZW4pID09IEZBSUxVUkUpIHsKKwkJCQlyZXR1cm47CisJ CQl9CisJCQlicmVhazsKKwl9CisKKwlpZiAocGdzcWxfbGluayA9PSBOVUxMICYmIGlkID09IC0x KSB7CisJCVJFVFVSTl9GQUxTRTsKKwl9CisKKyAgICBaRU5EX0ZFVENIX1JFU09VUkNFMihwZ3Nx bCwgUEdjb25uICosICZwZ3NxbF9saW5rLCBpZCwgIlBvc3RncmVTUUwgbGluayIsIGxlX2xpbmss IGxlX3BsaW5rKTsKKyAgICBpZiAocGdzcWwgPT0gTlVMTCkgeworICAgICAgICBwaHBfZXJyb3Jf ZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsIkNhbm5vdCBnZXQgZGVmYXVsdCBwZ3Nx bCBsaW5rIik7CisgICAgICAgIFJFVFVSTl9GQUxTRTsKKyAgICB9CisjaWZkZWYgSEFWRV9QUUVT Q0FQRUxJVEVSQUwKKyAgICBpZiAoZXNjYXBlX2xpdGVyYWwpIHsKKyAgICAgICAgdG1wID0gUFFl c2NhcGVMaXRlcmFsKHBnc3FsLCBmcm9tLCAoc2l6ZV90KWZyb21fbGVuKTsKKyAgICB9IGVsc2Ug eworICAgICAgICB0bXAgPSBQUWVzY2FwZUlkZW50aWZpZXIocGdzcWwsIGZyb20sIChzaXplX3Qp ZnJvbV9sZW4pOworICAgIH0KKyAgICBpZiAoIXRtcCkgeworCQlwaHBfZXJyb3JfZG9jcmVmKE5V TEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsIkZhaWxlZCB0byBlc2NhcGUiKTsKKyAgICAgICAgUkVU VVJOX0ZBTFNFOworICAgIH0KKyAgICB0byA9IGVzdHJkdXAodG1wKTsKKyAgICBQUWZyZWVtZW0o dG1wKTsKKyNlbHNlIAorICAgIHRvID0gcGhwX3Bnc3FsX1BRZXNjYXBlSW50ZXJuYWwocGdzcWws IGZyb20sIChzaXplX3QpZnJvbV9sZW4sIGVzY2FwZV9saXRlcmFsKTsKKyAgICBpZiAoIXRvKSB7 CisJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywiRmFpbGVkIHRv IGVzY2FwZSIpOworICAgICAgICBSRVRVUk5fRkFMU0U7CisgICAgfQorI2VuZGlmCisKKwlSRVRV Uk5fU1RSSU5HKHRvLCAwKTsKK30KKworLyoge3t7IHByb3RvIHN0cmluZyBwZ19lc2NhcGVfbGl0 ZXJhbChbcmVzb3VyY2UgY29ubmVjdGlvbixdIHN0cmluZyBkYXRhKQorICAgRXNjYXBlIHBhcmFt ZXRlciBhcyBzdHJpbmcgbGl0ZXJhbCAoaS5lLiBwYXJhbWV0ZXIpICAqLworUEhQX0ZVTkNUSU9O KHBnX2VzY2FwZV9saXRlcmFsKQoreworICAgIHBocF9wZ3NxbF9lc2NhcGVfaW50ZXJuYWwoSU5U RVJOQUxfRlVOQ1RJT05fUEFSQU1fUEFTU1RIUlUsIDEpOworfQorLyogfX19ICovCisKKy8qIHt7 eyBwcm90byBzdHJpbmcgcGdfZXNjYXBlX2lkZW50aWZpZXIoW3Jlc291cmNlIGNvbm5lY3Rpb24s XSBzdHJpbmcgZGF0YSkKKyAgIEVzY2FwZSBpZGVudGlmaWVyIChpLmUuIHRhYmxlIG5hbWUsIGZp ZWxkIG5hbWUpICAqLworUEhQX0ZVTkNUSU9OKHBnX2VzY2FwZV9pZGVudGlmaWVyKQoreworICAg IHBocF9wZ3NxbF9lc2NhcGVfaW50ZXJuYWwoSU5URVJOQUxfRlVOQ1RJT05fUEFSQU1fUEFTU1RI UlUsIDApOworfQorLyogfX19ICovCisKKwogLyoge3t7IHByb3RvIHN0cmluZyBwZ19yZXN1bHRf ZXJyb3IocmVzb3VyY2UgcmVzdWx0KQogICAgR2V0IGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3 aXRoIHJlc3VsdCAqLwogUEhQX0ZVTkNUSU9OKHBnX3Jlc3VsdF9lcnJvcikKQEAgLTYyMTQsNyAr NjM0OSw3IEBACiAJCQkJCWNvbnN0IHNpemVfdCBlbGVtZW50X2xlbiA9IHN0cmxlbihlbGVtZW50 KTsKIAogCQkJCQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1bnRpbWUpKSB7Ci0JCQkJCQlkYXRhID0g cGhwX2FkZHNsYXNoZXMoZWxlbWVudCwgZWxlbWVudF9sZW4sICZkYXRhX2xlbiwgMCBUU1JNTFNf Q0MpOworCQkJCQkJZGF0YSA9IHBocF9hZGRzbGFzaGVzKGVsZW1lbnQsIGVsZW1lbnRfbGVuLCAo aW50ICopJmRhdGFfbGVuLCAwIFRTUk1MU19DQyk7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQlkYXRh ID0gc2FmZV9lc3RybmR1cChlbGVtZW50LCBlbGVtZW50X2xlbik7CiAJCQkJCQlkYXRhX2xlbiA9 IGVsZW1lbnRfbGVuOwo= --001517510e5420793204a3aafe31--