usr/src/cmd/php5/patches/php_perf_safe_address.patch
author Jon Tibble <meths@btinternet.com>
Mon, 04 May 2015 14:04:39 +0100
branchoi_151a
changeset 254 9c2a4ac793f0
parent 4 834920bc5f09
permissions -rw-r--r--
Bash patch catchup including shellshock
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     1
Index: php-5.2.11/Zend/zend_alloc.c
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     2
===================================================================
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     3
--- php-5.2.11/Zend/zend_alloc.c	(revision 291097)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     4
+++ php-5.2.11/Zend/zend_alloc.c	(working copy)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     5
@@ -87,6 +87,20 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     6
 # define UNEXPECTED(condition) (condition)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     7
 #endif
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     8
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
     9
+#define HAVE_ZEND_LONG64
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    10
+#ifdef ZEND_WIN32
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    11
+typedef __int64 zend_long64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    12
+typedef unsigned __int64 zend_ulong64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    13
+#elif SIZEOF_LONG_LONG_INT == 8
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    14
+typedef long long int zend_long64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    15
+typedef unsigned long long int zend_ulong64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    16
+#elif SIZEOF_LONG_LONG == 8
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    17
+typedef long long zend_long64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    18
+typedef unsigned long long zend_ulong64;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    19
+#else
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    20
+# undef HAVE_ZEND_LONG64
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    21
+#endif
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    22
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    23
 static void zend_mm_panic(const char *message)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    24
 {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    25
 	fprintf(stderr, "%s\n", message);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    26
@@ -2369,6 +2383,19 @@
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    27
         return res;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    28
 }
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    29
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    30
+#elif SIZEOF_SIZE_T == 4 && defined(HAVE_ZEND_LONG64)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    31
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    32
+static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    33
+{
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    34
+	zend_ulong64 res = (zend_ulong64)nmemb * (zend_ulong64)size + (zend_ulong64)offset;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    35
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    36
+	if (UNEXPECTED(res > (zend_ulong64)0xFFFFFFFFL)) {
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    37
+		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    38
+		return 0;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    39
+	}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    40
+	return (size_t) res;
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    41
+}
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    42
+
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    43
 #else
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    44
 
834920bc5f09 Import sfw build 130
Cyril Plisko <cyril.plisko@grigale.com>
parents:
diff changeset
    45
 static inline size_t safe_address(size_t nmemb, size_t size, size_t offset)