Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:34356 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 37178 invoked by uid 1010); 3 Jan 2008 21:40:59 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 37163 invoked from network); 3 Jan 2008 21:40:59 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Jan 2008 21:40:59 -0000 Authentication-Results: pb1.pair.com smtp.mail=travis.raybold@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=travis.raybold@gmail.com; sender-id=pass; domainkeys=bad Received-SPF: pass (pb1.pair.com: domain gmail.com designates 64.233.166.178 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: travis.raybold@gmail.com X-Host-Fingerprint: 64.233.166.178 py-out-1112.google.com Received: from [64.233.166.178] ([64.233.166.178:30237] helo=py-out-1112.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id CD/9C-20810-9665D774 for ; Thu, 03 Jan 2008 16:40:58 -0500 Received: by py-out-1112.google.com with SMTP id u77so8808653pyb.16 for ; Thu, 03 Jan 2008 13:40:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:mime-version:content-type:x-google-sender-auth; bh=KddUph+QFHasK0tISrxjEKid5Dgz5ziohS+dxkY+tdQ=; b=ez0B/7N2idevDQ3f9712YwRJD/H9yVSIBIHKTpV7SV1GtT/yJ/IewsE/2Vs6A2Y4eERB7AFCIxIuOQ2xd3NNwaFLEgOg0W5yJDtX4Ev2tRG4yTt173xqOjeBo0ddLvluarHcHYU/1kEcgV0AViBfd1o4myk0e3jiwIngYEMuTzE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type:x-google-sender-auth; b=dx+0ToA4P1MJJ74QxcF8OI8qtv9nr59mxoJvu65lmBEuz757bDQObWX7U453IYC+QveTSt3YClnM9tJRY4i9pGK7mai1djgoBNuHNSX+dNaOF2r5zHkxpIetm4PpFk5+XawpH6bMqQ1sKEfhr85oFBy5imr4P9S0FPQS5fresnU= Received: by 10.35.109.2 with SMTP id l2mr19703379pym.54.1199396455601; Thu, 03 Jan 2008 13:40:55 -0800 (PST) Received: by 10.35.98.16 with HTTP; Thu, 3 Jan 2008 13:40:55 -0800 (PST) Message-ID: <98edc0cf0801031340l5a66f8d7pd6024745c9b4368f@mail.gmail.com> Date: Thu, 3 Jan 2008 13:40:55 -0800 Sender: travis.raybold@gmail.com To: internals@lists.php.net MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2719_463895.1199396455587" X-Google-Sender-Auth: c3f8e399e8ed6695 Subject: Patch for PDO_ODBC bug causing end of string character in Unicode strings From: travis@raybold.com ("Travis Raybold") ------=_Part_2719_463895.1199396455587 Content-Type: multipart/alternative; boundary="----=_Part_2720_20972204.1199396455588" ------=_Part_2720_20972204.1199396455588 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Any queries through PDO_ODBC that return Unicode data will have an end of string character midway through the string. Wez created this patch to fix the problem but has not been able to get it into CVS because I seem to always ask him at the wrong time. Could someone take a look at this and apply the patch? I've been using a branched version with this patch for two years and would love to upgrade to the latest version. Thanks, --Travis ------=_Part_2720_20972204.1199396455588 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Any queries through PDO_ODBC that return Unicode data will have an end of string character midway through the string.

Wez created this patch to fix the problem but has not been able to get it into CVS because I seem to always ask him at the wrong time.

Could someone take a look at this and apply the patch? I've been using a branched version with this patch for two years and would love to upgrade to the latest version.

Thanks,

--Travis
------=_Part_2720_20972204.1199396455588-- ------=_Part_2719_463895.1199396455587 Content-Type: text/plain; name="pdo_odbc patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_faztljbp0 Content-Disposition: attachment; filename="pdo_odbc patch.txt" ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBvZGJjX2RyaXZlci5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMvZXh0L3Bkb19vZGJjL29kYmNfZHJpdmVy LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjcuMi4yCmRpZmYgLXUgLXAgLXIxLjI3LjIuMiBv ZGJjX2RyaXZlci5jCi0tLSBvZGJjX2RyaXZlci5jCTE0IERlYyAyMDA1IDA0OjU2OjIyIC0wMDAw CTEuMjcuMi4yCisrKyBvZGJjX2RyaXZlci5jCTMwIE1hciAyMDA2IDE5OjA2OjQ0IC0wMDAwCkBA IC0yLDcgKzIsNyBAQAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBQSFAgVmVyc2lvbiA1ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwotICB8IENvcHlyaWdodCAoYykgMTk5Ny0yMDA1IFRoZSBQSFAgR3JvdXAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCBDb3B5cmlnaHQgKGMpIDE5OTct MjAwNiBUaGUgUEhQIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwogICB8IFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB2ZXJzaW9u IDMuMCBvZiB0aGUgUEhQIGxpY2Vuc2UsICAgICAgIHwKICAgfCB0aGF0IGlzIGJ1bmRsZWQgd2l0 aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRSwgYW5kIGlzICAgICAgICB8CkBAIC0x NTMsNiArMTUzLDcgQEAgc3RhdGljIGludCBvZGJjX2hhbmRsZV9wcmVwYXJlcihwZG9fZGJoXwog CWludCBuc3FsX2xlbiA9IDA7CiAKIAlTLT5IID0gSDsKKwlTLT5hc3N1bWVfdXRmOCA9IEgtPmFz c3VtZV91dGY4OwogCiAJLyogYmVmb3JlIHdlIHByZXBhcmUsIHdlIG5lZWQgdG8gcGVlayBhdCB0 aGUgcXVlcnk7IGlmIGl0IHVzZXMgbmFtZWQgcGFyYW1ldGVycywKIAkgKiB3ZSB3YW50IFBETyB0 byByZXdyaXRlIHRoZW0gZm9yIHVzICovCkBAIC0zMTksOCArMzIwLDI0IEBAIHN0YXRpYyBpbnQg b2RiY19oYW5kbGVfcm9sbGJhY2socGRvX2RiaF8KIAlyZXR1cm4gMTsKIH0KIAorc3RhdGljIGlu dCBvZGJjX2hhbmRsZV9zZXRfYXR0cihwZG9fZGJoX3QgKmRiaCwgbG9uZyBhdHRyLCB6dmFsICp2 YWwgVFNSTUxTX0RDKQoreworCXBkb19vZGJjX2RiX2hhbmRsZSAqSCA9IChwZG9fb2RiY19kYl9o YW5kbGUgKilkYmgtPmRyaXZlcl9kYXRhOworCXN3aXRjaCAoYXR0cikgeworCQljYXNlIFBET19P REJDX0FUVFJfQVNTVU1FX1VURjg6CisJCQlILT5hc3N1bWVfdXRmOCA9IHp2YWxfaXNfdHJ1ZSh2 YWwpOworCQkJcmV0dXJuIDE7CisJCWRlZmF1bHQ6CisJCQlzdHJjcHkoSC0+ZWluZm8ubGFzdF9l cnJfbXNnLCAiVW5rbm93biBBdHRyaWJ1dGUiKTsKKwkJCUgtPmVpbmZvLndoYXQgPSAic2V0QXR0 cmlidXRlIjsKKwkJCXN0cmNweShILT5laW5mby5sYXN0X3N0YXRlLCAiSU0wMDAxIik7CisJCQly ZXR1cm4gLTE7CisJfQorfQorCiBzdGF0aWMgaW50IG9kYmNfaGFuZGxlX2dldF9hdHRyKHBkb19k YmhfdCAqZGJoLCBsb25nIGF0dHIsIHp2YWwgKnZhbCBUU1JNTFNfREMpCiB7CisJcGRvX29kYmNf ZGJfaGFuZGxlICpIID0gKHBkb19vZGJjX2RiX2hhbmRsZSAqKWRiaC0+ZHJpdmVyX2RhdGE7CiAJ c3dpdGNoIChhdHRyKSB7CiAJCWNhc2UgUERPX0FUVFJfQ0xJRU5UX1ZFUlNJT046CiAJCQlaVkFM X1NUUklORyh2YWwsICJPREJDLSIgUERPX09EQkNfVFlQRSwgMSk7CkBAIC0zMzMsNiArMzUwLDkg QEAgc3RhdGljIGludCBvZGJjX2hhbmRsZV9nZXRfYXR0cihwZG9fZGJoXwogCQljYXNlIFBET19B VFRSX0NPTk5FQ1RJT05fU1RBVFVTOgogCQkJYnJlYWs7CiAKKwkJY2FzZSBQRE9fT0RCQ19BVFRS X0FTU1VNRV9VVEY4OgorCQkJWlZBTF9CT09MKHZhbCwgSC0+YXNzdW1lX3V0ZjggPyAxIDogMCk7 CisJCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0zNDUsNyArMzY1LDcgQEAgc3Rh dGljIHN0cnVjdCBwZG9fZGJoX21ldGhvZHMgb2RiY19tZXRobwogCW9kYmNfaGFuZGxlX2JlZ2lu LAogCW9kYmNfaGFuZGxlX2NvbW1pdCwKIAlvZGJjX2hhbmRsZV9yb2xsYmFjaywKLQlOVUxMLCAJ Lyogc2V0IGF0dHIgKi8KKwlvZGJjX2hhbmRsZV9zZXRfYXR0ciwKIAlOVUxMLAkvKiBsYXN0IGlk ICovCiAJcGRvX29kYmNfZmV0Y2hfZXJyb3JfZnVuYywKIAlvZGJjX2hhbmRsZV9nZXRfYXR0ciwJ LyogZ2V0IGF0dHIgKi8KSW5kZXg6IG9kYmNfc3RtdC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9y ZXBvc2l0b3J5L3BocC1zcmMvZXh0L3Bkb19vZGJjL29kYmNfc3RtdC5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjI2LjIuMgpkaWZmIC11IC1wIC1yMS4yNi4yLjIgb2RiY19zdG10LmMKLS0tIG9k YmNfc3RtdC5jCTI3IE1hciAyMDA2IDIxOjA0OjEyIC0wMDAwCTEuMjYuMi4yCisrKyBvZGJjX3N0 bXQuYwkzMCBNYXIgMjAwNiAxOTowNjo0NCAtMDAwMApAQCAtMiw3ICsyLDcgQEAKICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCiAgIHwgUEhQIFZlcnNpb24gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgfCBDb3B5 cmlnaHQgKGMpIDE5OTctMjAwNSBUaGUgUEhQIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CisgIHwgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDYgVGhlIFBIUCBHcm91cCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBUaGlz IHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAzLjAgb2YgdGhlIFBIUCBsaWNlbnNl LCAgICAgICB8CiAgIHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBm aWxlIExJQ0VOU0UsIGFuZCBpcyAgICAgICAgfApAQCAtMzAsNiArMzAsOTkgQEAKICNpbmNsdWRl ICJwaHBfcGRvX29kYmMuaCIKICNpbmNsdWRlICJwaHBfcGRvX29kYmNfaW50LmgiCiAKK2VudW0g cGRvX29kYmNfY29udl9yZXN1bHQgeworCVBET19PREJDX0NPTlZfTk9UX1JFUVVJUkVELAorCVBE T19PREJDX0NPTlZfT0ssCisJUERPX09EQkNfQ09OVl9GQUlMCit9OworCitzdGF0aWMgaW50IHBk b19vZGJjX3NxbHR5cGVfaXNfdW5pY29kZShwZG9fb2RiY19zdG10ICpTLCBTV09SRCBzcWx0eXBl KQoreworCWlmICghUy0+YXNzdW1lX3V0ZjgpIHJldHVybiAwOworCXN3aXRjaCAoc3FsdHlwZSkg eworI2lmZGVmIFNRTF9XQ0hBUgorCQljYXNlIFNRTF9XQ0hBUjoKKwkJCXJldHVybiAxOworI2Vu ZGlmCisjaWZkZWYgU1FMX1dMT05HVkFSQ0hBUgorCQljYXNlIFNRTF9XTE9OR1ZBUkNIQVI6CisJ CQlyZXR1cm4gMTsKKyNlbmRpZgorI2lmZGVmIFNRTF9XVkFSQ0hBUgorCQljYXNlIFNRTF9XVkFS Q0hBUjoKKwkJCXJldHVybiAxOworI2VuZGlmCisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gMDsKKwl9 Cit9CisKK3N0YXRpYyBpbnQgcGRvX29kYmNfdXRmODJ1Y3MyKHBkb19zdG10X3QgKnN0bXQsIGlu dCBpc191bmljb2RlLCBjb25zdCBjaGFyICpidWYsIAorCXVuc2lnbmVkIGxvbmcgYnVmbGVuLCB1 bnNpZ25lZCBsb25nICpvdXRsZW4pCit7CisjaWZkZWYgUEhQX1dJTjMyCisJaWYgKGlzX3VuaWNv ZGUgJiYgYnVmbGVuKSB7CisJCXBkb19vZGJjX3N0bXQgKlMgPSAocGRvX29kYmNfc3RtdCopc3Rt dC0+ZHJpdmVyX2RhdGE7CisJCURXT1JEIHJldDsKKworCQlyZXQgPSBNdWx0aUJ5dGVUb1dpZGVD aGFyKENQX1VURjgsIDAsIGJ1ZiwgYnVmbGVuLCBOVUxMLCAwKTsKKwkJaWYgKHJldCA9PSAwKSB7 CisJCQkvL3ByaW50ZigiJXM6JWQgJWQgWyVkXSAlLipzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18s IEdldExhc3RFcnJvcigpLCBidWZsZW4sIGJ1ZmxlbiwgYnVmKTsKKwkJCXJldHVybiBQRE9fT0RC Q19DT05WX0ZBSUw7CisJCX0KKworCQlyZXQgKj0gc2l6ZW9mKFdDSEFSKTsKKworCQlpZiAoUy0+ Y29udmJ1ZnNpemUgPD0gcmV0KSB7CisJCQlTLT5jb252YnVmc2l6ZSA9IHJldCArIHNpemVvZihX Q0hBUik7CisJCQlTLT5jb252YnVmID0gZXJlYWxsb2MoUy0+Y29udmJ1ZiwgUy0+Y29udmJ1ZnNp emUpOworCQl9CisJCQorCQlyZXQgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGJ1 ZiwgYnVmbGVuLCAoTFBXU1RSKVMtPmNvbnZidWYsIFMtPmNvbnZidWZzaXplIC8gc2l6ZW9mKFdD SEFSKSk7CisJCWlmIChyZXQgPT0gMCkgeworCQkJLy9wcmludGYoIiVzOiVkICVkIFslZF0gJS4q c1xuIiwgX19GSUxFX18sIF9fTElORV9fLCBHZXRMYXN0RXJyb3IoKSwgYnVmbGVuLCBidWZsZW4s IGJ1Zik7CisJCQlyZXR1cm4gUERPX09EQkNfQ09OVl9GQUlMOworCQl9CisKKwkJcmV0ICo9IHNp emVvZihXQ0hBUik7CisJCSpvdXRsZW4gPSByZXQ7CisJCXJldHVybiBQRE9fT0RCQ19DT05WX09L OworCX0KKyNlbmRpZgorCXJldHVybiBQRE9fT0RCQ19DT05WX05PVF9SRVFVSVJFRDsKK30KKwor c3RhdGljIGludCBwZG9fb2RiY191Y3MyMnV0ZjgocGRvX3N0bXRfdCAqc3RtdCwgaW50IGlzX3Vu aWNvZGUsIGNvbnN0IGNoYXIgKmJ1ZiwgCisJdW5zaWduZWQgbG9uZyBidWZsZW4sIHVuc2lnbmVk IGxvbmcgKm91dGxlbikKK3sKKyNpZmRlZiBQSFBfV0lOMzIKKwlpZiAoaXNfdW5pY29kZSAmJiBi dWZsZW4pIHsKKwkJcGRvX29kYmNfc3RtdCAqUyA9IChwZG9fb2RiY19zdG10KilzdG10LT5kcml2 ZXJfZGF0YTsKKwkJRFdPUkQgcmV0OworCisJCXJldCA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1Bf VVRGOCwgMCwgKExQQ1dTVFIpYnVmLCBidWZsZW4vc2l6ZW9mKFdDSEFSKSwgTlVMTCwgMCwgTlVM TCwgTlVMTCk7CisJCWlmIChyZXQgPT0gMCkgeworCQkJcmV0dXJuIFBET19PREJDX0NPTlZfRkFJ TDsKKwkJfQorCisJCWlmIChTLT5jb252YnVmc2l6ZSA8PSByZXQpIHsKKwkJCVMtPmNvbnZidWZz aXplID0gcmV0ICsgMTsKKwkJCVMtPmNvbnZidWYgPSBlcmVhbGxvYyhTLT5jb252YnVmLCBTLT5j b252YnVmc2l6ZSk7CisJCX0KKwkJCisJCXJldCA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRG OCwgMCwgKExQQ1dTVFIpYnVmLCBidWZsZW4vc2l6ZW9mKFdDSEFSKSwgUy0+Y29udmJ1ZiwgUy0+ Y29udmJ1ZnNpemUsIE5VTEwsIE5VTEwpOworCQlpZiAocmV0ID09IDApIHsKKwkJCXJldHVybiBQ RE9fT0RCQ19DT05WX0ZBSUw7CisJCX0KKworCQkqb3V0bGVuID0gcmV0OworCQlTLT5jb252YnVm WypvdXRsZW5dID0gJ1wwJzsKKwkJcmV0dXJuIFBET19PREJDX0NPTlZfT0s7CisJfQorI2VuZGlm CisJcmV0dXJuIFBET19PREJDX0NPTlZfTk9UX1JFUVVJUkVEOworfQorCiBzdGF0aWMgdm9pZCBm cmVlX2NvbHMocGRvX3N0bXRfdCAqc3RtdCwgcGRvX29kYmNfc3RtdCAqUyBUU1JNTFNfREMpCiB7 CiAJaWYgKFMtPmNvbHMpIHsKQEAgLTU4LDcgKzE1MSw5IEBAIHN0YXRpYyBpbnQgb2RiY19zdG10 X2R0b3IocGRvX3N0bXRfdCAqc3QKIAl9CiAKIAlmcmVlX2NvbHMoc3RtdCwgUyBUU1JNTFNfQ0Mp OwotCisJaWYgKFMtPmNvbnZidWYpIHsKKwkJZWZyZWUoUy0+Y29udmJ1Zik7CisJfQogCWVmcmVl KFMpOwogCiAJcmV0dXJuIDE7CkBAIC03OSwxOCArMTc0LDQ1IEBAIHN0YXRpYyBpbnQgb2RiY19z dG10X2V4ZWN1dGUocGRvX3N0bXRfdCAKIAogCXdoaWxlIChyYyA9PSBTUUxfTkVFRF9EQVRBKSB7 CiAJCXN0cnVjdCBwZG9fYm91bmRfcGFyYW1fZGF0YSAqcGFyYW07CisJCQogCQlyYyA9IFNRTFBh cmFtRGF0YShTLT5zdG10LCAoU1FMUE9JTlRFUiopJnBhcmFtKTsKIAkJaWYgKHJjID09IFNRTF9O RUVEX0RBVEEpIHsKIAkJCXBocF9zdHJlYW0gKnN0bTsKIAkJCWludCBsZW47Ci0KKwkJCXBkb19v ZGJjX3BhcmFtICpQOworCQkKKwkJCVAgPSAocGRvX29kYmNfcGFyYW0qKXBhcmFtLT5kcml2ZXJf ZGF0YTsKIAkJCWlmIChaX1RZUEVfUChwYXJhbS0+cGFyYW1ldGVyKSAhPSBJU19SRVNPVVJDRSkg ewogCQkJCS8qIHRoZXkgcGFzc2VkIGluIGEgc3RyaW5nICovCisJCQkJdW5zaWduZWQgbG9uZyB1 bGVuOwogCQkJCWNvbnZlcnRfdG9fc3RyaW5nKHBhcmFtLT5wYXJhbWV0ZXIpOwotCQkJCVNRTFB1 dERhdGEoUy0+c3RtdCwgWl9TVFJWQUxfUChwYXJhbS0+cGFyYW1ldGVyKSwgWl9TVFJMRU5fUChw YXJhbS0+cGFyYW1ldGVyKSk7CisKKwkJCQlzd2l0Y2ggKHBkb19vZGJjX3V0ZjgydWNzMihzdG10 LCBQLT5pc191bmljb2RlLCAKKwkJCQkJCQlaX1NUUlZBTF9QKHBhcmFtLT5wYXJhbWV0ZXIpLAor CQkJCQkJCVpfU1RSTEVOX1AocGFyYW0tPnBhcmFtZXRlciksCisJCQkJCQkJJnVsZW4pKSB7CisJ CQkJCWNhc2UgUERPX09EQkNfQ09OVl9OT1RfUkVRVUlSRUQ6CisJCQkJCQlTUUxQdXREYXRhKFMt PnN0bXQsIFpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlciksCisJCQkJCQkJWl9TVFJMRU5fUChw YXJhbS0+cGFyYW1ldGVyKSk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBQRE9fT0RCQ19DT05W X09LOgorCQkJCQkJU1FMUHV0RGF0YShTLT5zdG10LCBTLT5jb252YnVmLCB1bGVuKTsKKwkJCQkJ CWJyZWFrOworCQkJCQljYXNlIFBET19PREJDX0NPTlZfRkFJTDoKKwkJCQkJCXBkb19vZGJjX3N0 bXRfZXJyb3IoImVycm9yIGNvbnZlcnRpbmcgaW5wdXQgc3RyaW5nIik7CisJCQkJCQlTUUxDbG9z ZUN1cnNvcihTLT5zdG10KTsKKwkJCQkJCWlmIChidWYpIHsKKwkJCQkJCQllZnJlZShidWYpOwor CQkJCQkJfQorCQkJCQkJcmV0dXJuIDA7CisJCQkJfQorCQkJCQkJCiAJCQkJY29udGludWU7CiAJ CQl9CiAKKwkJCS8qIHdlIGFzc3VtZXMgdGhhdCBMT0JzIGFyZSBiaW5hcnkgYW5kIGRvbid0IG5l ZWQgY2hhcnNldAorCQkJICogY29udmVyc2lvbiAqLworCiAJCQlwaHBfc3RyZWFtX2Zyb21fenZh bF9ub192ZXJpZnkoc3RtLCAmcGFyYW0tPnBhcmFtZXRlcik7CiAJCQlpZiAoIXN0bSkgewogCQkJ CS8qIHNob3VsZG4ndCBoYXBwZW4gZWl0aGVyICovCkBAIC0yMTMsNiArMzM1LDEyIEBAIHN0YXRp YyBpbnQgb2RiY19zdG10X3BhcmFtX2hvb2socGRvX3N0bXQKIAkJCQlQLT5sZW4gPSAwOyAvKiBp cyByZS1wb3B1bGF0ZWQgZWFjaCBFWEVDX1BSRSAqLwogCQkJCVAtPm91dGJ1ZiA9IE5VTEw7CiAK KwkJCQlQLT5pc191bmljb2RlID0gcGRvX29kYmNfc3FsdHlwZV9pc191bmljb2RlKFMsIHNxbHR5 cGUpOworCQkJCWlmIChQLT5pc191bmljb2RlKSB7CisJCQkJCS8qIGF2b2lkIGRyaXZlciBhdXRv LXRyYW5zbGF0aW9uOiB3ZSdsbCBkbyBpdCBvdXJzZWx2ZXMgKi8KKwkJCQkJY3R5cGUgPSBTUUxf Q19CSU5BUlk7CisJCQkJfQorCiAJCQkJaWYgKChwYXJhbS0+cGFyYW1fdHlwZSAmIFBET19QQVJB TV9JTlBVVF9PVVRQVVQpID09IFBET19QQVJBTV9JTlBVVF9PVVRQVVQpIHsKIAkJCQkJUC0+cGFy YW10eXBlID0gU1FMX1BBUkFNX0lOUFVUX09VVFBVVDsKIAkJCQl9IGVsc2UgaWYgKHBhcmFtLT5t YXhfdmFsdWVfbGVuIDw9IDApIHsKQEAgLTIyNSw3ICszNTMsMTAgQEAgc3RhdGljIGludCBvZGJj X3N0bXRfcGFyYW1faG9vayhwZG9fc3RtdAogCQkJCQlpZiAoUERPX1BBUkFNX1RZUEUocGFyYW0t PnBhcmFtX3R5cGUpICE9IFBET19QQVJBTV9OVUxMKSB7CiAJCQkJCQkvKiBuZWVkIGFuIGV4cGxp Y2l0IGJ1ZmZlciB0byBob2xkIHJlc3VsdCAqLwogCQkJCQkJUC0+bGVuID0gcGFyYW0tPm1heF92 YWx1ZV9sZW4gPiAwID8gcGFyYW0tPm1heF92YWx1ZV9sZW4gOiBwcmVjaXNpb247Ci0JCQkJCQlQ LT5vdXRidWYgPSBlbWFsbG9jKFAtPmxlbiArIDEpOworCQkJCQkJaWYgKFAtPmlzX3VuaWNvZGUp IHsKKwkJCQkJCQlQLT5sZW4gKj0gMjsKKwkJCQkJCX0KKwkJCQkJCVAtPm91dGJ1ZiA9IGVtYWxs b2MoUC0+bGVuICsgKFAtPmlzX3VuaWNvZGUgPyAyOjEpKTsKIAkJCQkJfQogCQkJCX0KIAkJCQkK QEAgLTMwOSw4ICs0NDAsMjEgQEAgc3RhdGljIGludCBvZGJjX3N0bXRfcGFyYW1faG9vayhwZG9f c3RtdAogCQkJCX0gZWxzZSB7CiAJCQkJCWNvbnZlcnRfdG9fc3RyaW5nKHBhcmFtLT5wYXJhbWV0 ZXIpOwogCQkJCQlpZiAoUC0+b3V0YnVmKSB7Ci0JCQkJCQlQLT5sZW4gPSBaX1NUUkxFTl9QKHBh cmFtLT5wYXJhbWV0ZXIpOwotCQkJCQkJbWVtY3B5KFAtPm91dGJ1ZiwgWl9TVFJWQUxfUChwYXJh bS0+cGFyYW1ldGVyKSwgUC0+bGVuKTsKKwkJCQkJCXVuc2lnbmVkIGxvbmcgdWxlbjsKKwkJCQkJ CXN3aXRjaCAocGRvX29kYmNfdXRmODJ1Y3MyKHN0bXQsIFAtPmlzX3VuaWNvZGUsCisJCQkJCQkJ CVpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlciksCisJCQkJCQkJCVpfU1RSTEVOX1AocGFyYW0t PnBhcmFtZXRlciksCisJCQkJCQkJCSZ1bGVuKSkgeworCQkJCQkJCWNhc2UgUERPX09EQkNfQ09O Vl9GQUlMOgorCQkJCQkJCWNhc2UgUERPX09EQkNfQ09OVl9OT1RfUkVRVUlSRUQ6CisJCQkJCQkJ CVAtPmxlbiA9IFpfU1RSTEVOX1AocGFyYW0tPnBhcmFtZXRlcik7CisJCQkJCQkJCW1lbWNweShQ LT5vdXRidWYsIFpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlciksIFAtPmxlbik7CisJCQkJCQkJ CWJyZWFrOworCQkJCQkJCWNhc2UgUERPX09EQkNfQ09OVl9PSzoKKwkJCQkJCQkJUC0+bGVuID0g dWxlbjsKKwkJCQkJCQkJbWVtY3B5KFAtPm91dGJ1ZiwgUy0+Y29udmJ1ZiwgUC0+bGVuKTsKKwkJ CQkJCQkJYnJlYWs7CisJCQkJCQl9CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQlQLT5sZW4gPSBTUUxf TEVOX0RBVEFfQVRfRVhFQyhaX1NUUkxFTl9QKHBhcmFtLT5wYXJhbWV0ZXIpKTsKIAkJCQkJfQpA QCAtMzIwLDYgKzQ2NCwxMCBAQCBzdGF0aWMgaW50IG9kYmNfc3RtdF9wYXJhbV9ob29rKHBkb19z dG10CiAJCQljYXNlIFBET19QQVJBTV9FVlRfRVhFQ19QT1NUOgogCQkJCVAgPSBwYXJhbS0+ZHJp dmVyX2RhdGE7CiAJCQkJaWYgKFAtPm91dGJ1ZikgeworCQkJCQl1bnNpZ25lZCBsb25nIHVsZW47 CisJCQkJCWNoYXIgKnNyY2J1ZjsKKwkJCQkJdW5zaWduZWQgbG9uZyBzcmNsZW47CisKIAkJCQkJ c3dpdGNoIChQLT5sZW4pIHsKIAkJCQkJCWNhc2UgU1FMX05VTExfREFUQToKIAkJCQkJCQl6dmFs X2R0b3IocGFyYW0tPnBhcmFtZXRlcik7CkBAIC0zMjcsMTAgKzQ3NSwyMyBAQCBzdGF0aWMgaW50 IG9kYmNfc3RtdF9wYXJhbV9ob29rKHBkb19zdG10CiAJCQkJCQkJYnJlYWs7CiAJCQkJCQlkZWZh dWx0OgogCQkJCQkJCWNvbnZlcnRfdG9fc3RyaW5nKHBhcmFtLT5wYXJhbWV0ZXIpOwotCQkJCQkJ CVpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlcikgPSBlcmVhbGxvYyhaX1NUUlZBTF9QKHBhcmFt LT5wYXJhbWV0ZXIpLCBQLT5sZW4rMSk7Ci0JCQkJCQkJbWVtY3B5KFpfU1RSVkFMX1AocGFyYW0t PnBhcmFtZXRlciksIFAtPm91dGJ1ZiwgUC0+bGVuKTsKLQkJCQkJCQlaX1NUUkxFTl9QKHBhcmFt LT5wYXJhbWV0ZXIpID0gUC0+bGVuOwotCQkJCQkJCVpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRl cilbUC0+bGVuXSA9ICdcMCc7CisJCQkJCQkJc3dpdGNoIChwZG9fb2RiY191Y3MyMnV0Zjgoc3Rt dCwgUC0+aXNfdW5pY29kZSwgUC0+b3V0YnVmLCBQLT5sZW4sICZ1bGVuKSkgeworCQkJCQkJCQlj YXNlIFBET19PREJDX0NPTlZfRkFJTDoKKwkJCQkJCQkJCS8qIHNvbWV0aGluZyBmaXNoeSwgYnV0 IGFsbG93IGl0IHRvIGNvbWUgYmFjayBhcyBiaW5hcnkgKi8KKwkJCQkJCQkJY2FzZSBQRE9fT0RC Q19DT05WX05PVF9SRVFVSVJFRDoKKwkJCQkJCQkJCXNyY2J1ZiA9IFAtPm91dGJ1ZjsKKwkJCQkJ CQkJCXNyY2xlbiA9IFAtPmxlbjsKKwkJCQkJCQkJCWJyZWFrOworCQkJCQkJCQljYXNlIFBET19P REJDX0NPTlZfT0s6CisJCQkJCQkJCQlzcmNidWYgPSBTLT5jb252YnVmOworCQkJCQkJCQkJc3Jj bGVuID0gdWxlbjsKKwkJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJCQkJCQorCQkJCQkJ CVpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlcikgPSBlcmVhbGxvYyhaX1NUUlZBTF9QKHBhcmFt LT5wYXJhbWV0ZXIpLCBzcmNsZW4rMSk7CisJCQkJCQkJbWVtY3B5KFpfU1RSVkFMX1AocGFyYW0t PnBhcmFtZXRlciksIHNyY2J1Ziwgc3JjbGVuKTsKKwkJCQkJCQlaX1NUUkxFTl9QKHBhcmFtLT5w YXJhbWV0ZXIpID0gc3JjbGVuOworCQkJCQkJCVpfU1RSVkFMX1AocGFyYW0tPnBhcmFtZXRlcilb c3JjbGVuXSA9ICdcMCc7CiAJCQkJCX0KIAkJCQl9CiAJCQkJcmV0dXJuIDE7CkBAIC0zOTUsNiAr NTU2LDcgQEAgc3RhdGljIGludCBvZGJjX3N0bXRfZGVzY3JpYmUocGRvX3N0bXRfdAogCWNvbC0+ bWF4bGVuID0gUy0+Y29sc1tjb2xub10uZGF0YWxlbiA9IGNvbHNpemU7CiAJY29sLT5uYW1lbGVu ID0gY29sbmFtZWxlbjsKIAljb2wtPm5hbWUgPSBlc3RyZHVwKFMtPmNvbHNbY29sbm9dLmNvbG5h bWUpOworCVMtPmNvbHNbY29sbm9dLmlzX3VuaWNvZGUgPSBwZG9fb2RiY19zcWx0eXBlX2lzX3Vu aWNvZGUoUywgUy0+Y29sc1tjb2xub10uY29sdHlwZSk7CiAKIAkvKiByZXR1cm5pbmcgZGF0YSBh cyBhIHN0cmluZyAqLwogCWNvbC0+cGFyYW1fdHlwZSA9IFBET19QQVJBTV9TVFI7CkBAIC00MDUs NyArNTY3LDkgQEAgc3RhdGljIGludCBvZGJjX3N0bXRfZGVzY3JpYmUocGRvX3N0bXRfdAogCWlm IChjb2xzaXplIDwgMjU2ICYmICFTLT5nb2luZ19sb25nKSB7CiAJCVMtPmNvbHNbY29sbm9dLmRh dGEgPSBlbWFsbG9jKGNvbHNpemUrMSk7CiAKLQkJcmMgPSBTUUxCaW5kQ29sKFMtPnN0bXQsIGNv bG5vKzEsIFNRTF9DX0NIQVIsIFMtPmNvbHNbY29sbm9dLmRhdGEsCisJCXJjID0gU1FMQmluZENv bChTLT5zdG10LCBjb2xubysxLAorCQkJUy0+Y29sc1tjb2xub10uaXNfdW5pY29kZSA/IFNRTF9D X0JJTkFSWSA6IFNRTF9DX0NIQVIsCisJCQlTLT5jb2xzW2NvbG5vXS5kYXRhLAogCQkJUy0+Y29s c1tjb2xub10uZGF0YWxlbisxLCAmUy0+Y29sc1tjb2xub10uZmV0Y2hlZF9sZW4pOwogCiAJCWlm IChyYyAhPSBTUUxfU1VDQ0VTUykgewpAQCAtNDI2LDYgKzU5MCw3IEBAIHN0YXRpYyBpbnQgb2Ri Y19zdG10X2dldF9jb2wocGRvX3N0bXRfdCAKIHsKIAlwZG9fb2RiY19zdG10ICpTID0gKHBkb19v ZGJjX3N0bXQqKXN0bXQtPmRyaXZlcl9kYXRhOwogCXBkb19vZGJjX2NvbHVtbiAqQyA9ICZTLT5j b2xzW2NvbG5vXTsKKwl1bnNpZ25lZCBsb25nIHVsZW47CiAKIAkvKiBpZiBpdCBpcyBhIGNvbHVt biBjb250YWluaW5nICJsb25nIiBkYXRhLCBwZXJmb3JtIGxhdGUgYmluZGluZyBub3cgKi8KIAlp ZiAoQy0+ZGF0YWxlbiA+IDI1NSkgewpAQCAtNDM4LDkgKzYwMyw4IEBAIHN0YXRpYyBpbnQgb2Ri Y19zdG10X2dldF9jb2wocGRvX3N0bXRfdCAKIAkJICogb2YgMjU2IGJ5dGVzOyBpZiB0aGVyZSBp cyBtb3JlIHRvIGJlIGhhZCwgd2UgdGhlbiBhbGxvY2F0ZQogCQkgKiBiaWdnZXIgYnVmZmVyIGZv ciB0aGUgY2FsbGVyIHRvIGZyZWUgKi8KIAotCQlyYyA9IFNRTEdldERhdGEoUy0+c3RtdCwgY29s bm8rMSwgU1FMX0NfQ0hBUiwgQy0+ZGF0YSwKKwkJcmMgPSBTUUxHZXREYXRhKFMtPnN0bXQsIGNv bG5vKzEsIEMtPmlzX3VuaWNvZGUgPyBTUUxfQ19CSU5BUlkgOiBTUUxfQ19DSEFSLCBDLT5kYXRh LAogCQkJMjU2LCAmQy0+ZmV0Y2hlZF9sZW4pOwotCiAJCWlmIChyYyA9PSBTUUxfU1VDQ0VTUykg ewogCQkJLyogYWxsIHRoZSBkYXRhIGZpdCBpbnRvIG91ciBsaXR0bGUgYnVmZmVyOwogCQkJICog anVtcCBkb3duIHRvIHRoZSBnZW5lcmljIGJvdW5kIGRhdGEgY2FzZSAqLwpAQCAtNDkxLDYgKzY1 NSw5IEBAIHN0YXRpYyBpbnQgb2RiY19zdG10X2dldF9jb2wocGRvX3N0bXRfdCAKIAkJCSpwdHIg PSBidWY7CiAJCQkqY2FsbGVyX2ZyZWVzID0gMTsKIAkJCSpsZW4gPSB1c2VkOworCQkJaWYgKEMt PmlzX3VuaWNvZGUpIHsKKwkJCQlnb3RvIHVuaWNvZGVfY29udjsKKwkJCX0KIAkJCXJldHVybiAx OwogCQl9CiAKQEAgLTUxMSw2ICs2NzgsOSBAQCBpbl9kYXRhOgogCQkvKiBpdCB3YXMgc3RvcmVk IHBlcmZlY3RseSAqLwogCQkqcHRyID0gQy0+ZGF0YTsKIAkJKmxlbiA9IEMtPmZldGNoZWRfbGVu OworCQlpZiAoQy0+aXNfdW5pY29kZSkgeworCQkJZ290byB1bmljb2RlX2NvbnY7CisJCX0KIAkJ cmV0dXJuIDE7CiAJfSBlbHNlIHsKIAkJLyogbm8gZGF0YT8gKi8KQEAgLTUxOCw2ICs2ODgsMjYg QEAgaW5fZGF0YToKIAkJKmxlbiA9IDA7CiAJCXJldHVybiAxOwogCX0KKwordW5pY29kZV9jb252 OgorCXN3aXRjaCAocGRvX29kYmNfdWNzMjJ1dGY4KHN0bXQsIEMtPmlzX3VuaWNvZGUsICpwdHIs ICpsZW4sICZ1bGVuKSkgeworCQljYXNlIFBET19PREJDX0NPTlZfRkFJTDoKKwkJCS8qIG9oIHdl bGwuICBUaGV5IGNhbiBoYXZlIHRoZSBiaW5hcnkgdmVyc2lvbiBvZiBpdCAqLworCQljYXNlIFBE T19PREJDX0NPTlZfTk9UX1JFUVVJUkVEOgorCQkJLyogc2hvdWxkbid0IGhhcHBlbi4uLiAqLwor CQkJcmV0dXJuIDE7CisKKwkJY2FzZSBQRE9fT0RCQ19DT05WX09LOgorCQkJaWYgKCpjYWxsZXJf ZnJlZXMpIHsKKwkJCQllZnJlZSgqcHRyKTsKKwkJCX0KKwkJCSpwdHIgPSBlbWFsbG9jKHVsZW4g KyAxKTsKKwkJCSpsZW4gPSB1bGVuOworCQkJbWVtY3B5KCpwdHIsIFMtPmNvbnZidWYsIHVsZW4r MSk7CisJCQkqY2FsbGVyX2ZyZWVzID0gMTsKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMTsK IH0KIAogc3RhdGljIGludCBvZGJjX3N0bXRfc2V0X3BhcmFtKHBkb19zdG10X3QgKnN0bXQsIGxv bmcgYXR0ciwgenZhbCAqdmFsIFRTUk1MU19EQykKQEAgLTUzNiw2ICs3MjYsMTAgQEAgc3RhdGlj IGludCBvZGJjX3N0bXRfc2V0X3BhcmFtKHBkb19zdG10XwogCQkJcGRvX29kYmNfc3RtdF9lcnJv cigiU1FMU2V0Q3Vyc29yTmFtZSIpOwogCQkJcmV0dXJuIDA7CiAKKwkJY2FzZSBQRE9fT0RCQ19B VFRSX0FTU1VNRV9VVEY4OgorCQkJUy0+YXNzdW1lX3V0ZjggPSB6dmFsX2lzX3RydWUodmFsKTsK KwkJCXJldHVybiAwOworCiAJCWRlZmF1bHQ6CiAJCQlzdHJjcHkoUy0+ZWluZm8ubGFzdF9lcnJf bXNnLCAiVW5rbm93biBBdHRyaWJ1dGUiKTsKIAkJCVMtPmVpbmZvLndoYXQgPSAic2V0QXR0cmli dXRlIjsKQEAgLTU2NCw2ICs3NTgsMTAgQEAgc3RhdGljIGludCBvZGJjX3N0bXRfZ2V0X2F0dHIo cGRvX3N0bXRfdAogCQkJcmV0dXJuIDA7CiAJCX0KIAorCQljYXNlIFBET19PREJDX0FUVFJfQVNT VU1FX1VURjg6CisJCQlaVkFMX0JPT0wodmFsLCBTLT5hc3N1bWVfdXRmOCA/IDEgOiAwKTsKKwkJ CXJldHVybiAwOworCiAJCWRlZmF1bHQ6CiAJCQlzdHJjcHkoUy0+ZWluZm8ubGFzdF9lcnJfbXNn LCAiVW5rbm93biBBdHRyaWJ1dGUiKTsKIAkJCVMtPmVpbmZvLndoYXQgPSAiZ2V0QXR0cmlidXRl IjsKSW5kZXg6IHBkb19vZGJjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhw LXNyYy9leHQvcGRvX29kYmMvcGRvX29kYmMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNC4y LjcKZGlmZiAtdSAtcCAtcjEuMTQuMi43IHBkb19vZGJjLmMKLS0tIHBkb19vZGJjLmMJNCBEZWMg MjAwNSAyMjozNDoyNiAtMDAwMAkxLjE0LjIuNworKysgcGRvX29kYmMuYwkzMCBNYXIgMjAwNiAx OTowNjo0NCAtMDAwMApAQCAtMiw3ICsyLDcgQEAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgUEhQ IFZlcnNpb24gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgfCBDb3B5cmlnaHQgKGMpIDE5OTctMjAw NSBUaGUgUEhQIEdyb3VwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgQ29w eXJpZ2h0IChjKSAxOTk3LTIwMDYgVGhlIFBIUCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1 YmplY3QgdG8gdmVyc2lvbiAzLjAgb2YgdGhlIFBIUCBsaWNlbnNlLCAgICAgICB8CiAgIHwgdGhh dCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UsIGFuZCBp cyAgICAgICAgfApAQCAtMTM0LDYgKzEzNCw3IEBAIFBIUF9NSU5JVF9GVU5DVElPTihwZG9fb2Ri YykKICNlbmRpZgogCiAJUkVHSVNURVJfUERPX0NMQVNTX0NPTlNUX0xPTkcoIk9EQkNfQVRUUl9V U0VfQ1VSU09SX0xJQlJBUlkiLCBQRE9fT0RCQ19BVFRSX1VTRV9DVVJTT1JfTElCUkFSWSk7CisJ UkVHSVNURVJfUERPX0NMQVNTX0NPTlNUX0xPTkcoIk9EQkNfQVRUUl9BU1NVTUVfVVRGOCIsIFBE T19PREJDX0FUVFJfQVNTVU1FX1VURjgpOwogCVJFR0lTVEVSX1BET19DTEFTU19DT05TVF9MT05H KCJPREJDX1NRTF9VU0VfSUZfTkVFREVEIiwgU1FMX0NVUl9VU0VfSUZfTkVFREVEKTsKIAlSRUdJ U1RFUl9QRE9fQ0xBU1NfQ09OU1RfTE9ORygiT0RCQ19TUUxfVVNFX0RSSVZFUiIsIFNRTF9DVVJf VVNFX0RSSVZFUik7CiAJUkVHSVNURVJfUERPX0NMQVNTX0NPTlNUX0xPTkcoIk9EQkNfU1FMX1VT RV9PREJDIiwgU1FMX0NVUl9VU0VfT0RCQyk7CkluZGV4OiBwaHBfcGRvX29kYmMuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3JjL2V4dC9wZG9fb2RiYy9waHBfcGRvX29k YmMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXUgLXAgLXIxLjIgcGhwX3Bkb19v ZGJjLmgKLS0tIHBocF9wZG9fb2RiYy5oCTcgSnVsIDIwMDUgMTI6NDk6MjEgLTAwMDAJMS4yCisr KyBwaHBfcGRvX29kYmMuaAkzMCBNYXIgMjAwNiAxOTowNjo0NCAtMDAwMApAQCAtMiw3ICsyLDcg QEAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgUEhQIFZlcnNpb24gNSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKLSAgfCBDb3B5cmlnaHQgKGMpIDE5OTctMjAwNSBUaGUgUEhQIEdyb3VwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisgIHwgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDYgVGhlIFBI UCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKICAgfCBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAzLjAgb2YgdGhl IFBIUCBsaWNlbnNlLCAgICAgICB8CiAgIHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNr YWdlIGluIHRoZSBmaWxlIExJQ0VOU0UsIGFuZCBpcyAgICAgICAgfApJbmRleDogcGhwX3Bkb19v ZGJjX2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMvZXh0L3Bk b19vZGJjL3BocF9wZG9fb2RiY19pbnQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45LjIuMQpk aWZmIC11IC1wIC1yMS45LjIuMSBwaHBfcGRvX29kYmNfaW50LmgKLS0tIHBocF9wZG9fb2RiY19p bnQuaAkyNyBNYXIgMjAwNiAyMTowNDoxMiAtMDAwMAkxLjkuMi4xCisrKyBwaHBfcGRvX29kYmNf aW50LmgJMzAgTWFyIDIwMDYgMTk6MDY6NDQgLTAwMDAKQEAgLTIsNyArMiw3IEBACiAgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwogICB8IFBIUCBWZXJzaW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIHwgQ29w eXJpZ2h0IChjKSAxOTk3LTIwMDUgVGhlIFBIUCBHcm91cCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAorICB8IENvcHlyaWdodCAoYykgMTk5Ny0yMDA2IFRoZSBQSFAgR3JvdXAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgIHwgVGhp cyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHZlcnNpb24gMy4wIG9mIHRoZSBQSFAgbGljZW5z ZSwgICAgICAgfAogICB8IHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUg ZmlsZSBMSUNFTlNFLCBhbmQgaXMgICAgICAgIHwKQEAgLTEyOSw2ICsxMjksOCBAQCB0eXBlZGVm IHN0cnVjdCB7CiAJUERPX09EQkNfSEVOVgllbnY7CiAJUERPX09EQkNfSERCQwlkYmM7CiAJcGRv X29kYmNfZXJyaW5mbyBlaW5mbzsKKwl1bnNpZ25lZCBhc3N1bWVfdXRmODoxOworCXVuc2lnbmVk IF9zcGFyZTozMTsKIH0gcGRvX29kYmNfZGJfaGFuZGxlOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBA IC0xMzYsNiArMTM4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogCXVuc2lnbmVkIGxvbmcgZGF0YWxl bjsKIAlsb25nIGZldGNoZWRfbGVuOwogCVNXT1JECWNvbHR5cGU7CisJdW5zaWduZWQgaXNfdW5p Y29kZToxOworCXVuc2lnbmVkIF9zcGFyZTozMTsKIAljaGFyIGNvbG5hbWVbMTI4XTsKIH0gcGRv X29kYmNfY29sdW1uOwogCkBAIC0xNDQsMTQgKzE0OCwxOSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJ cGRvX29kYmNfY29sdW1uICpjb2xzOwogCXBkb19vZGJjX2RiX2hhbmRsZSAqSDsKIAlwZG9fb2Ri Y19lcnJpbmZvIGVpbmZvOworCWNoYXIgKmNvbnZidWY7CisJdW5zaWduZWQgbG9uZyBjb252YnVm c2l6ZTsKIAl1bnNpZ25lZCBnb2luZ19sb25nOjE7Ci0JdW5zaWduZWQgX3NwYXJlOjMxOworCXVu c2lnbmVkIGFzc3VtZV91dGY4OjE7CisJdW5zaWduZWQgX3NwYXJlOjMwOwogfSBwZG9fb2RiY19z dG10OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAJU1FMSU5URUdFUiBsZW47CiAJU1FMU01BTExJTlQg cGFyYW10eXBlOwogCWNoYXIgKm91dGJ1ZjsKKwl1bnNpZ25lZCBpc191bmljb2RlOjE7CisJdW5z aWduZWQgX3NwYXJlOjMxOwogfSBwZG9fb2RiY19wYXJhbTsKIAkKIGV4dGVybiBwZG9fZHJpdmVy X3QgcGRvX29kYmNfZHJpdmVyOwpAQCAtMTcyLDYgKzE4MSw3IEBAIGV4dGVybiBTUUxVSU5URUdF UiBwZG9fb2RiY19wb29sX21vZGU7CiAKIGVudW0gewogCVBET19PREJDX0FUVFJfVVNFX0NVUlNP Ul9MSUJSQVJZID0gUERPX0FUVFJfRFJJVkVSX1NQRUNJRklDLAorCVBET19PREJDX0FUVFJfQVNT VU1FX1VURjggLyogYXNzdW1lIHRoYXQgaW5wdXQgc3RyaW5ncyBhcmUgVVRGIHdoZW4gZmVlZGlu ZyBkYXRhIHRvIHVuaWNvZGUgY29sdW1ucyAqLwogfTsKIAogLyoK ------=_Part_2719_463895.1199396455587--