components/php-5_2/php-sapi/patches/08_php_perf_safe_address.patch
author Rich Burridge <rich.burridge@oracle.com>
Fri, 16 Dec 2011 05:23:33 -0800
changeset 627 5b7574ad99b9
parent 461 edabdd6aff23
permissions -rw-r--r--
6776206 libnet should install the samples
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
461
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     1
Index: php-5.2.11/Zend/zend_alloc.c
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     2
===================================================================
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     3
--- php-5.2.11/Zend/zend_alloc.c	(revision 291097)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     4
+++ php-5.2.11/Zend/zend_alloc.c	(working copy)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     5
@@ -87,6 +87,20 @@
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     6
 # define UNEXPECTED(condition) (condition)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     7
 #endif
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     8
 
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
     9
+#define HAVE_ZEND_LONG64
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    10
+#ifdef ZEND_WIN32
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    11
+typedef __int64 zend_long64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    12
+typedef unsigned __int64 zend_ulong64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    13
+#elif SIZEOF_LONG_LONG_INT == 8
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    14
+typedef long long int zend_long64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    15
+typedef unsigned long long int zend_ulong64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    16
+#elif SIZEOF_LONG_LONG == 8
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    17
+typedef long long zend_long64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    18
+typedef unsigned long long zend_ulong64;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    19
+#else
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    20
+# undef HAVE_ZEND_LONG64
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    21
+#endif
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    22
+
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    23
 static void zend_mm_panic(const char *message)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    24
 {
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    25
 	fprintf(stderr, "%s\n", message);
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    26
@@ -2369,6 +2383,19 @@
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    27
         return res;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    28
 }
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    29
 
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    30
+#elif SIZEOF_SIZE_T == 4 && defined(HAVE_ZEND_LONG64)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    31
+
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    32
+static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    33
+{
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    34
+	zend_ulong64 res = (zend_ulong64)nmemb * (zend_ulong64)size + (zend_ulong64)offset;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    35
+
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    36
+	if (UNEXPECTED(res > (zend_ulong64)0xFFFFFFFFL)) {
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    37
+		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    38
+		return 0;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    39
+	}
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    40
+	return (size_t) res;
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    41
+}
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    42
+
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    43
 #else
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    44
 
edabdd6aff23 7072982 move php from sfw to userland consolidation
Craig Mohrman <craig.mohrman@oracle.com>
parents:
diff changeset
    45
 static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)