Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:46850 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 57155 invoked from network); 21 Jan 2010 04:54:46 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 21 Jan 2010 04:54:46 -0000 Authentication-Results: pb1.pair.com smtp.mail=ssufficool@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=ssufficool@gmail.com; sender-id=pass; domainkeys=bad Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.221.174 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: ssufficool@gmail.com X-Host-Fingerprint: 209.85.221.174 mail-qy0-f174.google.com Received: from [209.85.221.174] ([209.85.221.174:54331] helo=mail-qy0-f174.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 72/3D-26239-41ED75B4 for ; Wed, 20 Jan 2010 23:54:45 -0500 Received: by qyk4 with SMTP id 4so3393783qyk.7 for ; Wed, 20 Jan 2010 20:54:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=ZG7/HRbyreOPzC21niZth0ssd9ak+EqNx6Ro5BQN7Aw=; b=O/BuIH+n18UmRcpWpYW9Nd1hxwAOx2e8YHdv3SWlczffNgjS2AR9rxMQ5LDcDai704 VyHxg5QRBkAGOH4Ny8iWRoNcFJsyqm5MqEOCXIKfPVnXRSLM4IzyTVlpA4HdEQt61GRB jyJtGJmKCd9Z/7IZfGahFPg6ACRqfC7RpkG7s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=NvERFpCnYaZ4m2e1k7/nmaadetd+ab6NByPW+nsZK6j7B0uQRBC+bqVnM/Jt/tmeuh dXju2xzV1Q48Q6wla48UsosFkDIadhhwj/ZobZZFLA8qjk514eSLeRUlUi5huEciNMak TPk4B89VUAFDnZ3Es5IMSRFDZWppNBuW1nlGk= MIME-Version: 1.0 Received: by 10.220.122.229 with SMTP id m37mr70904vcr.75.1264049681621; Wed, 20 Jan 2010 20:54:41 -0800 (PST) Date: Wed, 20 Jan 2010 20:54:41 -0800 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=001636ed677c4062aa047da580ee Subject: [PATCH] PDO DBLIB From: ssufficool@gmail.com (Stanley Sufficool) --001636ed677c4062aa047da580ee Content-Type: text/plain; charset=ISO-8859-1 I have tried to contact the maintainers of PDO with this, but have yet to get a response. Can I get this reviewed and if possible commited? Fixes BUG # 50755: http://bugs.php.net/bug.php?id=50755&edit=1 Compiled and tested with PHP SVN 5.2 --001636ed677c4062aa047da580ee Content-Type: text/x-patch; charset=US-ASCII; name="pdo_dblib_nobuffer.patch" Content-Disposition: attachment; filename="pdo_dblib_nobuffer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g4p2epsq0 SW5kZXg6IGV4dC9wZG9fZGJsaWIvZGJsaWJfc3RtdC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGV4dC9wZG9f ZGJsaWIvZGJsaWJfc3RtdC5jCShyZXZpc2lvbiAyOTM2MDApCisrKyBleHQvcGRvX2RibGliL2Ri bGliX3N0bXQuYwkod29ya2luZyBjb3B5KQpAQCAtMzIsMzUgKzMyLDI0IEBACiAjaW5jbHVkZSAi cGhwX3Bkb19kYmxpYl9pbnQuaCIKICNpbmNsdWRlICJ6ZW5kX2V4Y2VwdGlvbnMuaCIKIAotc3Rh dGljIHZvaWQgZnJlZV9yb3dzKHBkb19kYmxpYl9zdG10ICpTIFRTUk1MU19EQykKK3N0YXRpYyBp bnQgcGRvX2RibGliX3N0bXRfY3Vyc29yX2Nsb3NlcihwZG9fc3RtdF90ICpzdG10IFRTUk1MU19E QykKIHsKLQlpbnQgaSwgajsKLQkKLQlmb3IgKGkgPSAwOyBpIDwgUy0+bnJvd3M7IGkrKykgewot CQlmb3IgKGogPSAwOyBqIDwgUy0+bmNvbHM7IGorKykgewotCQkJcGRvX2RibGliX2NvbHZhbCAq dmFsID0gJlMtPnJvd3NbaV0gKyBqOwotCQkJaWYgKHZhbC0+ZGF0YSkgewotCQkJCWVmcmVlKHZh bC0+ZGF0YSk7Ci0JCQkJdmFsLT5kYXRhID0gTlVMTDsKLQkJCX0KLQkJfQotCX0KLQllZnJlZShT LT5yb3dzKTsKLQlTLT5yb3dzID0gTlVMTDsKLQlTLT5ucm93cyA9IDA7Ci19Ci0KLXN0YXRpYyBp bnQgcGRvX2RibGliX3N0bXRfZHRvcihwZG9fc3RtdF90ICpzdG10IFRTUk1MU19EQykKLXsKIAlw ZG9fZGJsaWJfc3RtdCAqUyA9IChwZG9fZGJsaWJfc3RtdCopc3RtdC0+ZHJpdmVyX2RhdGE7CisJ cGRvX2RibGliX2RiX2hhbmRsZSAqSCA9IFMtPkg7CiAKLQlpZiAoUy0+cm93cykgewotCQlmcmVl X3Jvd3MoUyBUU1JNTFNfQ0MpOwotCX0KKwlpbnQgaTsKKworCS8qIENhbmNlbCBhbnkgcGVuZGlu ZyByZXN1bHRzICovCisJZGJjYW5jZWwoSC0+bGluayk7CisKKwlmb3IgKGkgPSAwOyBpIDwgc3Rt dC0+Y29sdW1uX2NvdW50OyBpKyspCisJCWlmIChTLT5jb2xzW2ldLmRhdGEpCisJCQllZnJlZShT LT5jb2xzW2ldLmRhdGEpOworCiAJaWYgKFMtPmNvbHMpIHsKIAkJZWZyZWUoUy0+Y29scyk7CisJ CVMtPmNvbHMgPSBOVUxMOwogCX0KLQllZnJlZShTKTsKIAogCXJldHVybiAxOwogfQpAQCAtNzIs MTU3ICs2MSwxNjMgQEAKIAlwZG9fZGJsaWJfZGJfaGFuZGxlICpIID0gUy0+SDsKIAlSRVRDT0RF IHJlc3JldCwgcmV0OwogCWludCBpLCBqOwotCWludCBhcm93czsKIAl1bnNpZ25lZCBpbnQgc2l6 ZTsKLQkKLQlkYnNldHVzZXJkYXRhKEgtPmxpbmssICZTLT5lcnIpOwogCi0JaWYgKFMtPnJvd3Mp IHsKLQkJLyogY2xlYW4gdGhlbSB1cCAqLwotCQlmcmVlX3Jvd3MoUyBUU1JNTFNfQ0MpOwotCX0K KwkvKiBjbGVhbiB1cCBwcmV2aW91cyBjb2x1bW5zIGFuZCB2YWx1ZXMgKi8KKwlwZG9fZGJsaWJf c3RtdF9jdXJzb3JfY2xvc2VyKHN0bXQpOwogCisJZGJzZXR1c2VyZGF0YShILT5saW5rLCAoQllU RSopICZTLT5lcnIpOworCiAJaWYgKEZBSUwgPT0gZGJjbWQoSC0+bGluaywgc3RtdC0+YWN0aXZl X3F1ZXJ5X3N0cmluZykpIHsKIAkJcmV0dXJuIDA7CiAJfQogCWlmIChGQUlMID09IGRic3FsZXhl YyhILT5saW5rKSkgewogCQlyZXR1cm4gMDsKIAl9Ci0JCisKIAlyZXNyZXQgPSBkYnJlc3VsdHMo SC0+bGluayk7CisKIAlpZiAocmVzcmV0ID09IEZBSUwpIHsKIAkJcmV0dXJuIDA7CiAJfQogCi0J cmV0ID0gZGJuZXh0cm93KEgtPmxpbmspOwotCiAJc3RtdC0+cm93X2NvdW50ID0gREJDT1VOVChI LT5saW5rKTsKKwlzdG10LT5jb2x1bW5fY291bnQgPSBkYm51bWNvbHMoSC0+bGluayk7CiAKLSAg ICBpZiAocmV0ID09IE5PX01PUkVfUk9XUykgewotICAgICAgIHJldHVybiAxOwotICAgIH0KLSAg ICAKLQlpZiAoIVMtPmNvbHMpIHsKLQkJUy0+bmNvbHMgPSBkYm51bWNvbHMoSC0+bGluayk7CisJ aWYgKHN0bXQtPmNvbHVtbl9jb3VudCA8PSAwKSB7CisJCXJldHVybiAxOworCX0KIAotCQlpZiAo Uy0+bmNvbHMgPD0gMCkgewotCQkJcmV0dXJuIDE7Ci0JCX0KKwlTLT5jb2xzID0gZWNhbGxvYyhz dG10LT5jb2x1bW5fY291bnQsIHNpemVvZihwZG9fZGJsaWJfY29sKSk7CiAKLQkJUy0+Y29scyA9 IGVjYWxsb2MoUy0+bmNvbHMsIHNpemVvZihwZG9fZGJsaWJfY29sKSk7Ci0JCXN0bXQtPmNvbHVt bl9jb3VudCA9IFMtPm5jb2xzOwotCQotCQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IFMtPm5jb2xz OyBpKyspIHsKLQkJCWNoYXIgKnRtcCA9IE5VTEw7CisJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBz dG10LT5jb2x1bW5fY291bnQ7IGkrKykgeworCQljaGFyICp0bXAgPSBOVUxMOwogCi0JCQlTLT5j b2xzW2ldLmNvbHR5cGUgPSBkYmNvbHR5cGUoSC0+bGluaywgaSsxKTsKLQkJCVMtPmNvbHNbaV0u bmFtZSA9IChjaGFyKilkYmNvbG5hbWUoSC0+bGluaywgaSsxKTsKKwkJUy0+Y29sc1tpXS5jb2x0 eXBlID0gZGJjb2x0eXBlKEgtPmxpbmssIGkrMSk7CisJCVMtPmNvbHNbaV0ubmFtZSA9IChjaGFy KilkYmNvbG5hbWUoSC0+bGluaywgaSsxKTsKIAotCQkJaWYgKCFzdHJsZW4oUy0+Y29sc1tpXS5u YW1lKSkgewotCQkJCWlmIChqKSB7Ci0JCQkJCXNwcHJpbnRmKCZ0bXAsIDAsICJjb21wdXRlZCVk IiwgaisrKTsKLQkJCQkJc3RybGNweShTLT5jb2xzW2ldLm5hbWUsIHRtcCwgc3RybGVuKHRtcCkr MSk7Ci0JCQkJCWVmcmVlKHRtcCk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJUy0+Y29sc1tpXS5uYW1l ID0gImNvbXB1dGVkIjsKLQkJCQkJaisrOwotCQkJCX0KKwkJaWYgKCFzdHJsZW4oUy0+Y29sc1tp XS5uYW1lKSkgeworCQkJaWYgKGopIHsKKwkJCQlzcHByaW50ZigmdG1wLCAwLCAiY29tcHV0ZWQl ZCIsIGorKyk7CisJCQkJc3RybGNweShTLT5jb2xzW2ldLm5hbWUsIHRtcCwgc3RybGVuKHRtcCkr MSk7CisJCQkJZWZyZWUodG1wKTsKKwkJCX0gZWxzZSB7CisJCQkJUy0+Y29sc1tpXS5uYW1lID0g ImNvbXB1dGVkIjsKKwkJCQlqKys7CiAJCQl9CisJCX0KIAotCQkJUy0+Y29sc1tpXS5zb3VyY2Ug PSAoY2hhciopZGJjb2xzb3VyY2UoSC0+bGluaywgaSsxKTsKLQkJCXRtcCA9IGVzdHJkdXAoUy0+ Y29sc1tpXS5zb3VyY2UgPyBTLT5jb2xzW2ldLnNvdXJjZSA6ICIiKTsKLQkJCVMtPmNvbHNbaV0u c291cmNlID0gdG1wOwotCQkJZWZyZWUodG1wKTsKKwkJUy0+Y29sc1tpXS5zb3VyY2UgPSAoY2hh ciopZGJjb2xzb3VyY2UoSC0+bGluaywgaSsxKTsKKwkJdG1wID0gZXN0cmR1cChTLT5jb2xzW2ld LnNvdXJjZSA/IFMtPmNvbHNbaV0uc291cmNlIDogIiIpOworCQlTLT5jb2xzW2ldLnNvdXJjZSA9 IHRtcDsKKwkJZWZyZWUodG1wKTsKIAotCQkJUy0+Y29sc1tpXS5tYXhsZW4gPSBkYmNvbGxlbihI LT5saW5rLCBpKzEpOwotCQl9CisJCVMtPmNvbHNbaV0ubWF4bGVuID0gZGJjb2xsZW4oSC0+bGlu aywgaSsxKTsKIAl9CiAKLQlhcm93cyA9IDEwMDsKLQlzaXplID0gUy0+bmNvbHMgKiBzaXplb2Yo cGRvX2RibGliX2NvbHZhbCk7Ci0JUy0+cm93cyA9IHNhZmVfZW1hbGxvYyhhcm93cywgc2l6ZSwg MCk7CisJcmV0dXJuIDE7Cit9CiAKLQkvKiBsZXQncyBmZXRjaCBhbGwgdGhlIGRhdGEgKi8KLQlk byB7Ci0JCWlmIChTLT5ucm93cyA+PSBhcm93cykgewotCQkJYXJvd3MgKj0gMjsKLQkJCVMtPnJv d3MgPSBlcmVhbGxvYyhTLT5yb3dzLCBhcm93cyAqIHNpemUpOwotCQl9Ci0JCWZvciAoaSA9IDA7 IGkgPCBTLT5uY29sczsgaSsrKSB7Ci0JCQlwZG9fZGJsaWJfY29sdmFsICp2YWwgPSAmUy0+cm93 c1tTLT5ucm93cyAqIFMtPm5jb2xzICsgaV07CiAKLQkJCWlmIChkYmRhdGxlbihILT5saW5rLCBp KzEpID09IDAgJiYgZGJkYXRhKEgtPmxpbmssIGkrMSkgPT0gTlVMTCkgewotCQkJCXZhbC0+bGVu ID0gMDsKLQkJCQl2YWwtPmRhdGEgPSBOVUxMOwotCQkJfSBlbHNlIHsKLQkJCQlzd2l0Y2ggKFMt PmNvbHNbaV0uY29sdHlwZSkgewotCQkJCQljYXNlIFNRTENIQVI6Ci0JCQkJCWNhc2UgU1FMVEVY VDoKLQkJCQkJY2FzZSBTUUxWQVJCSU5BUlk6Ci0JCQkJCWNhc2UgU1FMQklOQVJZOgotCQkJCQlj YXNlIFNRTElNQUdFOgotCQkJCQkJdmFsLT5sZW4gPSBkYmRhdGxlbihILT5saW5rLCBpKzEpOwot CQkJCQkJdmFsLT5kYXRhID0gZW1hbGxvYyh2YWwtPmxlbiArIDEpOwotCQkJCQkJbWVtY3B5KHZh bC0+ZGF0YSwgZGJkYXRhKEgtPmxpbmssIGkrMSksIHZhbC0+bGVuKTsKLQkJCQkJCXZhbC0+ZGF0 YVt2YWwtPmxlbl0gPSAnXDAnOwotCQkJCQkJYnJlYWs7CitzdGF0aWMgaW50IHBkb19kYmxpYl9z dG10X25leHRfcm93c2V0KHBkb19zdG10X3QgKnN0bXQpIHsKKwkvKgorCSAqIFBIUC5ORVQ6CisJ ICogIkVhY2ggcm93c2V0IGNhbiBoYXZlIGEgZGlmZmVyZW50IHNldCBvZiBjb2x1bW5zIGZyb20g dGhlIHByZWNlZGluZyByb3dzZXQuICIKKwkgKgorCSAqIEJVRzogc2VnZmF1bHQgZHVlIHRvIG5v dCByZWFkaW5nIHRoZSBuZXcgY29sdW1ucworCSAqCisJICovCiAKLQkJCQkJZGVmYXVsdDoKLQkJ CQkJCWlmIChkYndpbGxjb252ZXJ0KFMtPmNvbHNbaV0uY29sdHlwZSwgU1FMQ0hBUikpIHsKLQkJ CQkJCQl2YWwtPmxlbiA9IDMyICsgKDIgKiBkYmRhdGxlbihILT5saW5rLCBpKzEpKTsKLQkJCQkJ CQl2YWwtPmRhdGEgPSBlbWFsbG9jKHZhbC0+bGVuKTsKKwlwZG9fZGJsaWJfc3RtdCAqUyA9IChw ZG9fZGJsaWJfc3RtdCopc3RtdC0+ZHJpdmVyX2RhdGE7CisJcGRvX2RibGliX2RiX2hhbmRsZSAq SCA9IFMtPkg7CisJUkVUQ09ERSByZXNyZXQ7CiAKLQkJCQkJCQl2YWwtPmxlbiA9IGRiY29udmVy dChOVUxMLCBTLT5jb2xzW2ldLmNvbHR5cGUsIGRiZGF0YShILT5saW5rLCBpKzEpLAotCQkJCQkJ CQkJZGJkYXRsZW4oSC0+bGluaywgaSsxKSwgU1FMQ0hBUiwgdmFsLT5kYXRhLCB2YWwtPmxlbik7 CisJLyogZGVzdHJveSB0aGUgY29sdW1ucyBhbmQgZGF0YSAqLworCXBkb19kYmxpYl9zdG10X2N1 cnNvcl9jbG9zZXIoc3RtdCk7CiAKLQkJCQkJCQlpZiAodmFsLT5sZW4gPj0gMCkgewotCQkJCQkJ CQl2YWwtPmRhdGFbdmFsLT5sZW5dID0gJ1wwJzsKLQkJCQkJCQl9Ci0JCQkJCQl9IGVsc2Ugewot CQkJCQkJCXZhbC0+bGVuID0gMDsKLQkJCQkJCQl2YWwtPmRhdGEgPSBOVUxMOwotCQkJCQkJfQot CQkJCX0KLQkJCX0KLQkJfQorCS8qIFRPRE86IFJlYWQgdGhlIG5ldyBjb2x1bW4gZGF0YSAqLwog Ci0JCVMtPm5yb3dzKys7Ci0KLQkJcmV0ID0gZGJuZXh0cm93KEgtPmxpbmspOwotCi0JCWlmIChy ZXQgPT0gQlVGX0ZVTEwpIHsKLQkJCWRiY2xyYnVmKEgtPmxpbmssIERCTEFTVFJPVyhILT5saW5r KS0xKTsKLQkJfQotCX0gd2hpbGUgKHJldCAhPSBGQUlMICYmIHJldCAhPSBOT19NT1JFX1JPV1Mp OwotCi0JaWYgKHJlc3JldCAhPSBOT19NT1JFX1JFU1VMVFMpIHsKLQkJLyogdGhlcmUgYXJlIGFk ZGl0aW9uYWwgcmVzdWx0IHNldHMgYXZhaWxhYmxlICovCi0JCWRicmVzdWx0cyhILT5saW5rKTsK LQkJLyogY2FuY2VsIHBlbmRpbmcgcm93cyAqLwotCQlkYmNhbnF1ZXJ5KEgtPmxpbmspOwotCi0J CS8qIFRPRE86IGZpZ3VyZSBvdXQgYSBzYW5lIHNvbHV0aW9uICovCisJLyogR3JhYiBuZXh0IHJl c3VsdCBzZXQgKi8KKwlyZXNyZXQgPSBkYnJlc3VsdHMoSC0+bGluayk7CisJaWYgKHJlc3JldCA9 PSBGQUlMKSB7CisJCXJldHVybiAwOwogCX0KIAotCVMtPmN1cnJlbnQgPSAtMTsKLQkJCi0JcmV0 dXJuIDE7CQorCXJldHVybiAxOwogfQogCiBzdGF0aWMgaW50IHBkb19kYmxpYl9zdG10X2ZldGNo KHBkb19zdG10X3QgKnN0bXQsCiAJZW51bSBwZG9fZmV0Y2hfb3JpZW50YXRpb24gb3JpLCBsb25n IG9mZnNldCBUU1JNTFNfREMpCiB7CisKKwlSRVRDT0RFIHJldDsKKwlpbnQgaTsKKwogCXBkb19k YmxpYl9zdG10ICpTID0gKHBkb19kYmxpYl9zdG10KilzdG10LT5kcml2ZXJfZGF0YTsKKwlwZG9f ZGJsaWJfZGJfaGFuZGxlICpIID0gUy0+SDsKIAotCWlmICghUy0+cm93cykgeworCS8qIGZldGNo IHRoZSBmaXJzdC9uZXh0IHJvdyAqLworCXJldCA9IGRibmV4dHJvdyhILT5saW5rKTsKKwkvKiBU T0RPOiBDaGVjayBkYm51bXJldHMoKSBmb3Igc3RvcmVkIHByb2NzKi8KKworCWlmIChyZXQgPT0g RkFJTCB8fCByZXQgPT0gTk9fTU9SRV9ST1dTKSB7CiAJCXJldHVybiAwOwogCX0KLQkKLQlpZiAo KytTLT5jdXJyZW50IDwgUy0+bnJvd3MpIHsKLQkJcmV0dXJuIDE7CisKKwkvKgorCSAqIFRoaXMg Y2hlY2sgaXMgb25seSB2YWxpZCB3aXRoIGRic2V0b3B0KERCQlVGRkVSKQorCSAqIGFuZCBjYW4g YmUgcmVtb3ZlZAorCSAqLworCWlmIChyZXQgPT0gQlVGX0ZVTEwpIHsKKwkJZGJjbHJidWYoSC0+ bGluaywgREJMQVNUUk9XKEgtPmxpbmspLTEpOworCQkvKiByZXRyeSBkYm5leHRyb3csIG5vIHJv dyB3YXMgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIgKi8KKwkJcmV0ID0gZGJuZXh0cm93KEgtPmxpbmsp OworCQlpZiAocmV0ICE9IFJFR19ST1cpCisJCQlyZXR1cm4gMDsKIAl9CiAKLQlyZXR1cm4gMDsK Kwlmb3IgKGkgPSAwOyBpIDwgc3RtdC0+Y29sdW1uX2NvdW50OyBpKyspIHsKKworCQlpZiAoUy0+ Y29sc1tpXS5kYXRhKSB7CisJCQllZnJlZShTLT5jb2xzW2ldLmRhdGEpOworCQl9CisKKwkJaWYg KGRiZGF0bGVuKEgtPmxpbmssIGkrMSkgPT0gMCAmJiBkYmRhdGEoSC0+bGluaywgaSsxKSA9PSBO VUxMKSB7CisJCQlTLT5jb2xzW2ldLmxlbiA9IDA7CisJCQlTLT5jb2xzW2ldLmRhdGEgPSBOVUxM OworCQl9IGVsc2UgeworCQkJc3dpdGNoIChTLT5jb2xzW2ldLmNvbHR5cGUpIHsKKwkJCQljYXNl IFNRTENIQVI6CisJCQkJY2FzZSBTUUxURVhUOgorCQkJCWNhc2UgU1FMVkFSQklOQVJZOgorCQkJ CWNhc2UgU1FMQklOQVJZOgorCQkJCWNhc2UgU1FMSU1BR0U6CisJCQkJCVMtPmNvbHNbaV0ubGVu ID0gZGJkYXRsZW4oSC0+bGluaywgaSsxKTsKKwkJCQkJUy0+Y29sc1tpXS5kYXRhID0gZW1hbGxv YyhTLT5jb2xzW2ldLmxlbiArIDEpOworCQkJCQltZW1jcHkoUy0+Y29sc1tpXS5kYXRhLCBkYmRh dGEoSC0+bGluaywgaSsxKSwgUy0+Y29sc1tpXS5sZW4pOworCQkJCQlTLT5jb2xzW2ldLmRhdGFb Uy0+Y29sc1tpXS5sZW5dID0gJ1wwJzsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJ aWYgKGRid2lsbGNvbnZlcnQoUy0+Y29sc1tpXS5jb2x0eXBlLCBTUUxDSEFSKSkgeworCQkJCQkJ Uy0+Y29sc1tpXS5sZW4gPSAzMiArICgyICogZGJkYXRsZW4oSC0+bGluaywgaSsxKSk7CisJCQkJ CQlTLT5jb2xzW2ldLmRhdGEgPSBlbWFsbG9jKFMtPmNvbHNbaV0ubGVuKTsKKworCQkJCQkJUy0+ Y29sc1tpXS5sZW4gPSBkYmNvbnZlcnQoTlVMTCwgUy0+Y29sc1tpXS5jb2x0eXBlLCBkYmRhdGEo SC0+bGluaywgaSsxKSwKKwkJCQkJCQkJZGJkYXRsZW4oSC0+bGluaywgaSsxKSwgU1FMQ0hBUiwK KwkJCQkJCQkJUy0+Y29sc1tpXS5kYXRhLCBTLT5jb2xzW2ldLmxlbik7CisKKwkJCQkJCWlmIChT LT5jb2xzW2ldLmxlbiA+PSAwKSB7CisJCQkJCQkJUy0+Y29sc1tpXS5kYXRhW1MtPmNvbHNbaV0u bGVuXSA9ICdcMCc7CisJCQkJCQl9CisJCQkJCX0gZWxzZSB7CisJCQkJCQlTLT5jb2xzW2ldLmxl biA9IDA7CisJCQkJCQlTLT5jb2xzW2ldLmRhdGEgPSBOVUxMOworCQkJCQl9CisJCQl9CisJCX0K Kwl9CisKKwlyZXR1cm4gMTsKIH0KIAogc3RhdGljIGludCBwZG9fZGJsaWJfc3RtdF9kZXNjcmli ZShwZG9fc3RtdF90ICpzdG10LCBpbnQgY29sbm8gVFNSTUxTX0RDKQpAQCAtMjMwLDIzICsyMjUs MjkgQEAKIAlwZG9fZGJsaWJfc3RtdCAqUyA9IChwZG9fZGJsaWJfc3RtdCopc3RtdC0+ZHJpdmVy X2RhdGE7CiAJc3RydWN0IHBkb19jb2x1bW5fZGF0YSAqY29sID0gJnN0bXQtPmNvbHVtbnNbY29s bm9dOwogCi0JaWYgKCFTLT5yb3dzKSB7CisJaWYgKCFTLT5jb2xzKSB7CiAJCXJldHVybiAwOwog CX0KIAotCWNvbC0+bWF4bGVuID0gUy0+Y29sc1tjb2xub10ubWF4bGVuOwkKLQljb2wtPm5hbWVs ZW4gPSBzdHJsZW4oUy0+Y29sc1tjb2xub10ubmFtZSk7CQorCWNvbC0+bWF4bGVuID0gUy0+Y29s c1tjb2xub10ubWF4bGVuOworCWNvbC0+bmFtZWxlbiA9IHN0cmxlbihTLT5jb2xzW2NvbG5vXS5u YW1lKTsKIAljb2wtPm5hbWUgPSBlc3RyZHVwKFMtPmNvbHNbY29sbm9dLm5hbWUpOworCS8qIFRP RE86IFdlIGtub3cgdGhlIGNvbCB0eXBlLCB3aHkgZG8gd2UgcmV0dXJuIHN0cmluZz8gKi8KIAlj b2wtPnBhcmFtX3R5cGUgPSBQRE9fUEFSQU1fU1RSOwotCQkKKwogCXJldHVybiAxOwogfQogCisv KgorICogcGVyIHBocC5uZXQ6IHJldHVybnMgYSBzaW5nbGUgY29sdW1uIGluIHRoZSBuZXh0IHJv dyBvZiBhIHJlc3VsdCBzZXQuCisgKiBEb2VzIFBETyBmaXJzdCBjYWxsIGZldGNoIGFuZCB0aGVu IGNhbGwgdGhpcyBuZXh0PworICovCiBzdGF0aWMgaW50IHBkb19kYmxpYl9zdG10X2dldF9jb2wo cGRvX3N0bXRfdCAqc3RtdCwgaW50IGNvbG5vLCBjaGFyICoqcHRyLAogCSB1bnNpZ25lZCBsb25n ICpsZW4sIGludCAqY2FsbGVyX2ZyZWVzIFRTUk1MU19EQykKIHsKKwogCXBkb19kYmxpYl9zdG10 ICpTID0gKHBkb19kYmxpYl9zdG10KilzdG10LT5kcml2ZXJfZGF0YTsKLQlwZG9fZGJsaWJfY29s dmFsICp2YWwgPSAmUy0+cm93c1tTLT5jdXJyZW50ICogUy0+bmNvbHMgKyBjb2xub107CisJcGRv X2RibGliX2NvbCAqdmFsID0gJlMtPmNvbHNbY29sbm9dOwogCiAJKnB0ciA9IHZhbC0+ZGF0YTsK IAkqbGVuID0gdmFsLT5sZW47CkBAIC0yNTksMTUgKzI2MCwxNCBAQAogCXJldHVybiAxOwogfQog Ci1zdGF0aWMgaW50IGRibGliX2RibGliX3N0bXRfY3Vyc29yX2Nsb3NlcihwZG9fc3RtdF90ICpz dG10IFRTUk1MU19EQykKK3N0YXRpYyBpbnQgcGRvX2RibGliX3N0bXRfZHRvcihwZG9fc3RtdF90 ICpzdG10IFRTUk1MU19EQykKIHsKIAlwZG9fZGJsaWJfc3RtdCAqUyA9IChwZG9fZGJsaWJfc3Rt dCopc3RtdC0+ZHJpdmVyX2RhdGE7CiAKLQlpZiAoUy0+cm93cykgewotCQlmcmVlX3Jvd3MoUyBU U1JNTFNfQ0MpOwotCQlTLT5yb3dzID0gTlVMTDsKLQl9CisJcGRvX2RibGliX3N0bXRfY3Vyc29y X2Nsb3NlcihzdG10KTsKIAorCWVmcmVlKFMpOworCiAJcmV0dXJuIDE7CiB9CiAKQEAgLTI4MCw4 ICsyODAsOCBAQAogCXBkb19kYmxpYl9zdG10X3BhcmFtX2hvb2ssCiAJTlVMTCwgLyogc2V0IGF0 dHIgKi8KIAlOVUxMLCAvKiBnZXQgYXR0ciAqLwotCU5VTEwsIC8qIG1ldGEgKi8KLQlOVUxMLCAv KiBuZXh0cm93ICovCi0JZGJsaWJfZGJsaWJfc3RtdF9jdXJzb3JfY2xvc2VyCisJTlVMTCwgLyog Z2V0IGNvbHVtbiBtZXRhICovCisJTlVMTCwgLyogbmV4dCByb3dzZXQgKi8KKwlwZG9fZGJsaWJf c3RtdF9jdXJzb3JfY2xvc2VyCiB9OwogCkluZGV4OiBleHQvcGRvX2RibGliL3BocF9wZG9fZGJs aWJfaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZXh0L3Bkb19kYmxpYi9waHBfcGRvX2RibGliX2ludC5o CShyZXZpc2lvbiAyOTM2MDApCisrKyBleHQvcGRvX2RibGliL3BocF9wZG9fZGJsaWJfaW50LmgJ KHdvcmtpbmcgY29weSkKQEAgLTExMywyOSArMTEzLDI4IEBACiAJcGRvX2RibGliX2VyciBlcnI7 CiB9IHBkb19kYmxpYl9kYl9oYW5kbGU7CiAKKy8qCisgKiBzc3VmZmljb29sOiAyMDEwLTAxLTE0 CisgKiBDb21iaW5lZCBwZG9fZGJsaWJfY29sIGFuZCBwZG9fZGJsaWJfY29sdmFsCisgKiBzaW5j ZSB3ZSBubyBsb25nZXIgYnVmZmVyIHRoZSByb3dzZXQKKyAqLwogdHlwZWRlZiBzdHJ1Y3Qgewog CWludCBjb2x0eXBlOwogCWNoYXIgKm5hbWU7CiAJaW50IG1heGxlbjsKIAljaGFyICpzb3VyY2U7 Ci19IHBkb19kYmxpYl9jb2w7Ci0KLXR5cGVkZWYgc3RydWN0IHsKIAl1bnNpZ25lZCBsb25nIGxl bjsKIAljaGFyICpkYXRhOwotfSBwZG9fZGJsaWJfY29sdmFsOworfSBwZG9fZGJsaWJfY29sOwog CisvKgorICogc3N1ZmZpY29vbDogMjAxMC0wMS0xNAorICogUmVtb3ZlZCByb3cgYnVmZmVyCisg KiBNb3ZlZCBjb2wvcm93IGNvdW50IHRvIHN0bXQpCisgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAlw ZG9fZGJsaWJfZGJfaGFuZGxlICpIOwotCi0JaW50IG5jb2xzOwogCXBkb19kYmxpYl9jb2wgKmNv bHM7Ci0KLQlwZG9fZGJsaWJfY29sdmFsICpyb3dzOwotCWludCBucm93czsKLQotCWludCBjdXJy ZW50OwotCQogCXBkb19kYmxpYl9lcnIgZXJyOwogfSBwZG9fZGJsaWJfc3RtdDsKIApJbmRleDog ZXh0L3Bkb19kYmxpYi9kYmxpYl9kcml2ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvcGRvX2RibGli L2RibGliX2RyaXZlci5jCShyZXZpc2lvbiAyOTM2MDApCisrKyBleHQvcGRvX2RibGliL2RibGli X2RyaXZlci5jCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBACiB7CiAJcGRvX2RibGli X2RiX2hhbmRsZSAqSCA9IChwZG9fZGJsaWJfZGJfaGFuZGxlICopZGJoLT5kcml2ZXJfZGF0YTsK IAlwZG9fZGJsaWJfc3RtdCAqUyA9IGVjYWxsb2MoMSwgc2l6ZW9mKCpTKSk7Ci0JCisKIAlTLT5I ID0gSDsKIAlzdG10LT5kcml2ZXJfZGF0YSA9IFM7CiAJc3RtdC0+bWV0aG9kcyA9ICZkYmxpYl9z dG10X21ldGhvZHM7CkBAIC0xMTYsNyArMTE2LDcgQEAKIAlpZiAoRkFJTCA9PSBkYnNxbGV4ZWMo SC0+bGluaykpIHsKIAkJcmV0dXJuIC0xOwogCX0KLQkKKwogCXJlc3JldCA9IGRicmVzdWx0cyhI LT5saW5rKTsKIAogCWlmIChyZXNyZXQgPT0gRkFJTCkgewpAQCAtMTYyLDcgKzE2Miw3IEBACiAJ KnErKyA9ICdcJyc7CiAJKnErKyA9ICdcMCc7CiAJKnF1b3RlZGxlbiA9IGwrMTsKLQkKKwogCXJl dHVybiAxOwogfQogCkBAIC0xNzEsMTQgKzE3MSwxNiBAQAogCWRibGliX2hhbmRsZV9wcmVwYXJl ciwKIAlkYmxpYl9oYW5kbGVfZG9lciwKIAlkYmxpYl9oYW5kbGVfcXVvdGVyLAotCU5VTEwsCi0J TlVMTCwKLQlOVUxMLAotCU5VTEwsCi0JTlVMTCwgLyogbGFzdCBpbnNlcnQgKi8KKwlOVUxMLCAv KiBiZWdpbiAqLworCU5VTEwsIC8qIGNvbW1pdCAqLworCU5VTEwsIC8qIHJvbGxiYWNrICovCisJ TlVMTCwgLyogc2V0IGF0dHJpYnV0ZSAqLworCU5VTEwsIC8qIGxhc3QgaW5zZXJ0IGlkICovCiAJ ZGJsaWJfZmV0Y2hfZXJyb3IsIC8qIGZldGNoIGVycm9yICovCi0JTlVMTCwgLyogZ2V0IGF0dHIg Ki8KKwlOVUxMLCAvKiBnZXQgYXR0cmlidXRlICovCiAJTlVMTCwgLyogY2hlY2sgbGl2ZW5lc3Mg Ki8KKwlOVUxMLCAvKiBnZXQgZHJpdmVyIG1ldGhvZHMgKi8KKwlOVUxMLCAvKiBwZXJzaXN0ZW50 IHNodXRkb3duICovCiB9OwogCiBzdGF0aWMgaW50IHBkb19kYmxpYl9oYW5kbGVfZmFjdG9yeShw ZG9fZGJoX3QgKmRiaCwgenZhbCAqZHJpdmVyX29wdGlvbnMgVFNSTUxTX0RDKQpAQCAtMjEwLDcg KzIxMiw3IEBACiAJaWYgKGRiaC0+cGFzc3dvcmQpIHsKIAkJREJTRVRMUFdEKEgtPmxvZ2luLCBk YmgtPnBhc3N3b3JkKTsKIAl9Ci0JCisKICNpZiAhUEhQX0RCTElCX0lTX01TU1FMCiAJaWYgKHZh cnNbMF0ub3B0dmFsKSB7CiAJCURCU0VUTENIQVJTRVQoSC0+bG9naW4sIHZhcnNbMF0ub3B0dmFs KTsKQEAgLTIzMSwxMCArMjMzLDEwIEBACiAJfQogCiAJLyogZGJsaWIgZG8gbm90IHJldHVybiBt b3JlIHRoYW4gdGhpcyBsZW5ndGggZnJvbSB0ZXh0L2ltYWdlICovCi0JREJTRVRPUFQoSC0+bGlu aywgREJURVhUTElNSVQsICIyMTQ3NDgzNjQ3Iik7Ci0JCisJZGJzZXRvcHQoSC0+bGluaywgREJU RVhUTElNSVQsICIyMTQ3NDgzNjQ3IiwgLTEpOworCiAJLyogbGltaXQgdGV4dC9pbWFnZSBmcm9t IG5ldHdvcmsgKi8KLQlEQlNFVE9QVChILT5saW5rLCBEQlRFWFRTSVpFLCAiMjE0NzQ4MzY0NyIp OworCWRic2V0b3B0KEgtPmxpbmssIERCVEVYVFNJWkUsICIyMTQ3NDgzNjQ3IiwgLTEpOwogCiAJ aWYgKHZhcnNbM10ub3B0dmFsICYmIEZBSUwgPT0gZGJ1c2UoSC0+bGluaywgdmFyc1szXS5vcHR2 YWwpKSB7CiAJCWdvdG8gY2xlYW51cDsK --001636ed677c4062aa047da580ee--