Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:51573 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 46632 invoked from network); 5 Mar 2011 13:59:01 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 5 Mar 2011 13:59:01 -0000 Authentication-Results: pb1.pair.com smtp.mail=auroraeosrose@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=auroraeosrose@gmail.com; sender-id=pass; domainkeys=bad Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.82.170 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: auroraeosrose@gmail.com X-Host-Fingerprint: 74.125.82.170 mail-wy0-f170.google.com Received: from [74.125.82.170] ([74.125.82.170:50692] helo=mail-wy0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id B3/44-23331-4A1427D4 for ; Sat, 05 Mar 2011 08:59:01 -0500 Received: by wyf19 with SMTP id 19so2817516wyf.29 for ; Sat, 05 Mar 2011 05:58:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=WTb3l4/bHv5OF9HT2vMH4uo7xn30se3QJ6aXd1o63zI=; b=Qboc4ZwSRpcOkKre1aJeWEKLSyV6rpLbZaWX78NZ5fadVZPiJPRSoh1WqYVdkLy608 LO7ZT3NB3qVobBtxVN0EFVOqbhEdrMqpH7cQy8+ZO2BM8AI9PocCafqIWpCgjcYHgNUX 1OBDADAjlk6g8W6oMrMBcpIWXxD9td3gGTegY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=BT3GtJbVayjb1G31vpwtOsXNkw5RUMlRpmQCZK7bZDLNNq3pqdRaOzbw6fx/SapYz/ LOW5raipdZBMrSOgQ8OwfZrJlomjklLMTORbgNOMQrpS8brnV1m2aO2VcZBzrai93/0l SqfHSTOq4EvP3NUdDTqmOf5ty8qlNVMAevg2U= MIME-Version: 1.0 Received: by 10.227.139.164 with SMTP id e36mr1540511wbu.94.1299333538119; Sat, 05 Mar 2011 05:58:58 -0800 (PST) Received: by 10.227.145.136 with HTTP; Sat, 5 Mar 2011 05:58:56 -0800 (PST) Date: Sat, 5 Mar 2011 08:58:56 -0500 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=0016e6db2ee5fc015a049dbca94c Subject: PDO odbc patch From: auroraeosrose@gmail.com (Elizabeth Smith) --0016e6db2ee5fc015a049dbca94c Content-Type: text/plain; charset=ISO-8859-1 Morning, I found an issue this week that exists in both odbc and pdo_odbc with SQL Server. The ODBC implemention of Windows returns 0 as the length for for varchar(max) nad nvarchar(max). This makes the allocation of the strings incorrect and you get back garbage pointers for the contents. This was a pretty easy fix for pdo_odbc, simply check if the colsize is returned as 0 and the type is one of the varchar types, if so always treat it as a column with "long" data. This works perfectly without breaking things. Attached is a patch that works for both 5.3 and trunk, includes an additional test for the issue. The odbc extension is turning out to be more of a pain, each function is doing it's own fetching so it either has to be fixed for each function, or change odbc to use a single function for all fetching, which might break bc. Thanks, Elizabeth M Smith --0016e6db2ee5fc015a049dbca94c Content-Type: text/plain; charset=US-ASCII; name="pdo_odbc-trunk.txt" Content-Disposition: attachment; filename="pdo_odbc-trunk.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gkwlmst20 SW5kZXg6IGV4dC9wZG9fb2RiYy9vZGJjX3N0bXQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGV4dC9wZG9f b2RiYy9vZGJjX3N0bXQuYwkocmV2aXNpb24gMzA4OTQyKQ0KKysrIGV4dC9wZG9fb2RiYy9vZGJj X3N0bXQuYwkod29ya2luZyBjb3B5KQ0KQEAgLTU1Miw2ICs1NTIsMjQgQEANCiAJCQlzaXplb2Yo Uy0+Y29sc1tjb2xub10uY29sbmFtZSktMSwgJmNvbG5hbWVsZW4sCiAJCQkmUy0+Y29sc1tjb2xu b10uY29sdHlwZSwgJmNvbHNpemUsIE5VTEwsIE5VTEwpOwogCisJLyogVGhpcyBmaXhlcyBhIGtu b3duIGlzc3VlIHdpdGggU1FMIFNlcnZlciBhbmQgKG1heCkgbGVuZ3RocywKKwltYXkgYWZmZWN0 IG90aGVycyBhcyB3ZWxsLiAgSWYgd2UgYXJlIFNRTF9WQVJDSEFSLAorCVNRTF9WQVJCSU5BUlks IG9yIFNRTF9XVkFSQ0hBUiAob3IgYW55IG9mIHRoZSBsb25nIHZhcmlhdGlvbnMpCisJYW5kIHpl cm8gaXMgcmV0dXJuZWQgZnJvbSBjb2xzaXplIHRoZW4gY29uc2lkZXIgaXQgbG9uZyAqLworCWlm ICgwID09IGNvbHNpemUgJiYgCisJCShTLT5jb2xzW2NvbG5vXS5jb2x0eXBlID09IFNRTF9WQVJD SEFSIHx8CisJCSBTLT5jb2xzW2NvbG5vXS5jb2x0eXBlID09IFNRTF9MT05HVkFSQ0hBUiB8fAor I2lmZGVmIFNRTF9XVkFSQ0hBUgorCQkgUy0+Y29sc1tjb2xub10uY29sdHlwZSA9PSBTUUxfV1ZB UkNIQVIgfHwKKyNlbmRpZgorI2lmZGVmIFNRTF9XTE9OR1ZBUkNIQVIKKwkJIFMtPmNvbHNbY29s bm9dLmNvbHR5cGUgPT0gU1FMX1dMT05HVkFSQ0hBUiB8fAorI2VuZGlmCisJCSBTLT5jb2xzW2Nv bG5vXS5jb2x0eXBlID09IFNRTF9WQVJCSU5BUlkgfHwKKwkJIFMtPmNvbHNbY29sbm9dLmNvbHR5 cGUgPT0gU1FMX0xPTkdWQVJCSU5BUlkpKSB7CisJCQkgUy0+Z29pbmdfbG9uZyA9IDE7CisJfQor CiAJaWYgKHJjICE9IFNRTF9TVUNDRVNTKSB7CiAJCXBkb19vZGJjX3N0bXRfZXJyb3IoIlNRTERl c2NyaWJlQ29sIik7CiAJCWlmIChyYyAhPSBTUUxfU1VDQ0VTU19XSVRIX0lORk8pIHsKSW5kZXg6 IGV4dC9wZG9fb2RiYy90ZXN0cy9tYXhfY29sdW1ucy5waHB0DQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gZXh0 L3Bkb19vZGJjL3Rlc3RzL21heF9jb2x1bW5zLnBocHQJKHJldmlzaW9uIDApDQorKysgZXh0L3Bk b19vZGJjL3Rlc3RzL21heF9jb2x1bW5zLnBocHQJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDQ2 IEBADQorLS1URVNULS0NCitQRE8gT0RCQyB2YXJ5aW5nIGNoYXJhY3RlciB3aXRoIG1heC9ubyBs ZW5ndGgNCistLVNLSVBJRi0tDQorPD9waHAgIyB2aW06ZnQ9cGhwDQoraWYgKCFleHRlbnNpb25f bG9hZGVkKCdwZG9fb2RiYycpKSBwcmludCAnc2tpcCBub3QgbG9hZGVkJzsNCis/Pg0KKy0tRklM RS0tDQorPD9waHANCityZXF1aXJlICdleHQvcGRvL3Rlc3RzL3Bkb190ZXN0LmluYyc7DQorJGRi ID0gUERPVGVzdDo6dGVzdF9mYWN0b3J5KCdleHQvcGRvX29kYmMvdGVzdHMvY29tbW9uLnBocHQn KTsNCiskZGItPnNldEF0dHJpYnV0ZShQRE86OkFUVFJfRVJSTU9ERSwgUERPOjpFUlJNT0RFX1NJ TEVOVCk7DQorDQoraWYgKGZhbHNlID09PSAkZGItPmV4ZWMoJ0NSRUFURSBUQUJMRSBURVNUIChp ZCBJTlQgTk9UIE5VTEwgUFJJTUFSWSBLRVksIGRhdGEgdmFyY2hhcihtYXgpKScpKSB7DQorCWlm IChmYWxzZSA9PT0gJGRiLT5leGVjKCdDUkVBVEUgVEFCTEUgVEVTVCAoaWQgSU5UIE5PVCBOVUxM IFBSSU1BUlkgS0VZLCBkYXRhIGxvbmd0ZXh0KScpKSB7DQorCQlpZiAoZmFsc2UgPT09ICRkYi0+ ZXhlYygnQ1JFQVRFIFRBQkxFIFRFU1QgKGlkIElOVCBOT1QgTlVMTCBQUklNQVJZIEtFWSwgZGF0 YSBDTE9CKScpKSB7DQorCQkJZGllKCJCT1JLOiBkb24ndCBrbm93IGhvdyB0byBjcmVhdGUgYSBs b25nIGNvbHVtbiBoZXJlOlxuIiAuIGltcGxvZGUoIiwgIiwgJGRiLT5lcnJvckluZm8oKSkpOw0K KwkJfQ0KKwl9DQorfQ0KKw0KKyRkYi0+c2V0QXR0cmlidXRlKFBETzo6QVRUUl9FUlJNT0RFLCBQ RE86OkVSUk1PREVfRVhDRVBUSU9OKTsNCisNCiskc2l6ZXMgPSBhcnJheSgzMiwgNjQsIDEyOCwg MjUzLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgNTEyLCAxMDI0LCAyMDQ4LCAzOTk4LCAzOTk5 LCA0MDAwKTsNCisNCiskZGItPmJlZ2luVHJhbnNhY3Rpb24oKTsNCiskaW5zZXJ0ID0gJGRiLT5w cmVwYXJlKCdJTlNFUlQgSU5UTyBURVNUIFZBTFVFUyAoPywgPyknKTsNCitmb3JlYWNoICgkc2l6 ZXMgYXMgJG51bSkgew0KKwkkaW5zZXJ0LT5leGVjdXRlKGFycmF5KCRudW0sIHN0cl9yZXBlYXQo J2knLCAkbnVtKSkpOw0KK30NCiskaW5zZXJ0ID0gbnVsbDsNCiskZGItPmNvbW1pdCgpOw0KKw0K K2ZvcmVhY2ggKCRkYi0+cXVlcnkoJ1NFTEVDVCBpZCwgZGF0YSBmcm9tIFRFU1QnKSBhcyAkcm93 KSB7DQorCSRleHBlY3QgPSBzdHJfcmVwZWF0KCdpJywgJHJvd1swXSk7DQorCWlmIChzdHJjbXAo JGV4cGVjdCwgJHJvd1sxXSkpIHsNCisJCWVjaG8gIkZhaWxlZCBvbiBzaXplICRyb3dbaWRdOlxu IjsNCisJCXByaW50ZigiRXhwZWN0ZWQgJWQgYnl0ZXMsIGdvdCAlZFxuIiwgc3RybGVuKCRleHBl Y3QpLCBzdHJsZW4oJHJvd1snZGF0YSddKSk7DQorCQllY2hvIGJpbjJoZXgoJGV4cGVjdCkgLiAi XG4iOw0KKwkJZWNobyBiaW4yaGV4KCRyb3dbJ2RhdGEnXSkgLiAiXG4iOw0KKwl9DQorfQ0KKw0K K2VjaG8gIkZpbmlzaGVkXG4iOw0KKw0KKy0tRVhQRUNULS0NCitGaW5pc2hlZA0K --0016e6db2ee5fc015a049dbca94c--