]> granicus.if.org Git - php/commitdiff
Fix for Bug #51583 Bus error due to wrong alignment in mysqlnd
authorAndrey Hristov <andrey@php.net>
Thu, 15 Jul 2010 16:57:14 +0000 (16:57 +0000)
committerAndrey Hristov <andrey@php.net>
Thu, 15 Jul 2010 16:57:14 +0000 (16:57 +0000)
NEWS
ext/mysqlnd/mysqlnd_net.c

diff --git a/NEWS b/NEWS
index a423ef53325dbdfb710d19c2fc5433c60a715192..345aedd330f27ee1e91db1d98d0ae017576047f2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? Jul 2010, PHP 5.3.3
+- Fixed bug #51583 (Bus error due to wrong alignment in mysqlnd). (Rainer Jung)
 
 
 15 Jul 2010, PHP 5.3.3 RC3
index 016a2f10fe54ee7a1d3ca1cc68c9d53be97b7287..207fa53f0c3e3e0d4974b849f1f7d8f6bbf50aa1 100644 (file)
@@ -199,7 +199,12 @@ MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * net, const char * const schem
 
 
 /* We assume that MYSQLND_HEADER_SIZE is 4 bytes !! */
-#define STORE_HEADER_SIZE(safe_storage, buffer)  int4store((safe_storage), (*(uint32_t *)(buffer)))
+#define COPY_HEADER(T,A)  do { \
+               *(((char *)(T)))   = *(((char *)(A)));\
+               *(((char *)(T))+1) = *(((char *)(A))+1);\
+               *(((char *)(T))+2) = *(((char *)(A))+2);\
+               *(((char *)(T))+3) = *(((char *)(A))+3); } while (0)
+#define STORE_HEADER_SIZE(safe_storage, buffer)  COPY_HEADER((safe_storage), (buffer))
 #define RESTORE_HEADER_SIZE(buffer, safe_storage) STORE_HEADER_SIZE((safe_storage), (buffer))
 
 /* {{{ mysqlnd_net::send */