SILENT KILLERPanel

Current Path: > > opt > cloudlinux > alt-php83 > root > usr > include > php > Zend >


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/cloudlinux/alt-php83/root/usr/include/php/Zend/

NameTypeSizeLast ModifiedActions
Optimizer Directory - -
zend.h File 15916 bytes July 15 2025 16:08:12.
zend_API.h File 105866 bytes July 15 2025 16:08:12.
zend_alloc.h File 19278 bytes July 15 2025 16:08:12.
zend_alloc_sizes.h File 2629 bytes July 15 2025 16:08:12.
zend_arena.h File 6063 bytes July 15 2025 16:08:12.
zend_ast.h File 13340 bytes July 15 2025 16:08:12.
zend_atomic.h File 5704 bytes July 15 2025 16:08:12.
zend_attributes.h File 5661 bytes July 15 2025 16:08:12.
zend_attributes_arginfo.h File 12397 bytes July 15 2025 16:08:12.
zend_bitset.h File 8041 bytes July 15 2025 16:08:12.
zend_build.h File 1626 bytes July 15 2025 16:08:12.
zend_builtin_functions.h File 1513 bytes July 15 2025 16:08:12.
zend_builtin_functions_arginfo.h File 14190 bytes July 15 2025 16:08:12.
zend_call_stack.h File 2875 bytes July 15 2025 16:08:12.
zend_closures.h File 2290 bytes July 15 2025 16:08:12.
zend_closures_arginfo.h File 2084 bytes July 15 2025 16:08:12.
zend_compile.h File 50052 bytes July 15 2025 16:08:12.
zend_config.h File 32 bytes July 15 2025 16:08:14.
zend_constants.h File 6706 bytes July 15 2025 16:08:13.
zend_constants_arginfo.h File 1876 bytes July 15 2025 16:08:13.
zend_cpuinfo.h File 9398 bytes July 15 2025 16:08:13.
zend_dtrace.h File 2051 bytes July 15 2025 16:08:13.
zend_enum.h File 2924 bytes July 15 2025 16:08:13.
zend_enum_arginfo.h File 1704 bytes July 15 2025 16:08:13.
zend_errors.h File 2400 bytes July 15 2025 16:08:13.
zend_exceptions.h File 4551 bytes July 15 2025 16:08:13.
zend_exceptions_arginfo.h File 17916 bytes July 15 2025 16:08:13.
zend_execute.h File 22747 bytes July 15 2025 16:08:13.
zend_extensions.h File 6352 bytes July 15 2025 16:08:13.
zend_fibers.h File 5162 bytes July 15 2025 16:08:13.
zend_fibers_arginfo.h File 3569 bytes July 15 2025 16:08:13.
zend_float.h File 15438 bytes July 15 2025 16:08:13.
zend_gc.h File 4668 bytes July 15 2025 16:08:13.
zend_gdb.h File 1420 bytes July 15 2025 16:08:13.
zend_generators.h File 7515 bytes July 15 2025 16:08:13.
zend_generators_arginfo.h File 2787 bytes July 15 2025 16:08:13.
zend_globals.h File 9751 bytes July 15 2025 16:08:13.
zend_globals_macros.h File 2810 bytes July 15 2025 16:08:13.
zend_hash.h File 51307 bytes July 15 2025 16:08:13.
zend_highlight.h File 2296 bytes July 15 2025 16:08:13.
zend_hrtime.h File 3842 bytes July 15 2025 16:08:13.
zend_inheritance.h File 2487 bytes July 15 2025 16:08:13.
zend_ini.h File 12136 bytes July 15 2025 16:08:13.
zend_ini_parser.h File 2753 bytes July 15 2025 16:08:13.
zend_ini_scanner.h File 1901 bytes July 15 2025 16:08:14.
zend_ini_scanner_defs.h File 246 bytes July 15 2025 16:08:13.
zend_interfaces.h File 4118 bytes July 15 2025 16:08:13.
zend_interfaces_arginfo.h File 8029 bytes July 15 2025 16:08:13.
zend_istdiostream.h File 1537 bytes July 15 2025 16:08:13.
zend_iterators.h File 3786 bytes July 15 2025 16:08:13.
zend_language_parser.h File 6102 bytes July 15 2025 16:08:13.
zend_language_scanner.h File 3044 bytes July 15 2025 16:08:14.
zend_language_scanner_defs.h File 310 bytes July 15 2025 16:08:13.
zend_list.h File 3483 bytes July 15 2025 16:08:13.
zend_llist.h File 4001 bytes July 15 2025 16:08:13.
zend_long.h File 4227 bytes July 15 2025 16:08:13.
zend_map_ptr.h File 3006 bytes July 15 2025 16:08:13.
zend_max_execution_timer.h File 1484 bytes July 15 2025 16:08:13.
zend_mmap.h File 1512 bytes July 15 2025 16:08:13.
zend_modules.h File 4826 bytes July 15 2025 16:08:13.
zend_multibyte.h File 4913 bytes July 15 2025 16:08:13.
zend_multiply.h File 10208 bytes July 15 2025 16:08:13.
zend_object_handlers.h File 14563 bytes July 15 2025 16:08:13.
zend_objects.h File 1814 bytes July 15 2025 16:08:13.
zend_objects_API.h File 4631 bytes July 15 2025 16:08:13.
zend_observer.h File 6398 bytes July 15 2025 16:08:13.
zend_operators.h File 33783 bytes July 15 2025 16:08:13.
zend_portability.h File 24351 bytes July 15 2025 16:08:13.
zend_ptr_stack.h File 4296 bytes July 15 2025 16:08:13.
zend_range_check.h File 3000 bytes July 15 2025 16:08:13.
zend_signal.h File 4074 bytes July 15 2025 16:08:13.
zend_smart_str.h File 6934 bytes July 15 2025 16:08:13.
zend_smart_str_public.h File 1159 bytes July 15 2025 16:08:13.
zend_smart_string.h File 4207 bytes July 15 2025 16:08:13.
zend_smart_string_public.h File 1240 bytes July 15 2025 16:08:13.
zend_sort.h File 1535 bytes July 15 2025 16:08:13.
zend_stack.h File 2411 bytes July 15 2025 16:08:13.
zend_stream.h File 3616 bytes July 15 2025 16:08:13.
zend_string.h File 22407 bytes July 15 2025 16:08:13.
zend_strtod.h File 2151 bytes July 15 2025 16:08:13.
zend_strtod_int.h File 3135 bytes July 15 2025 16:08:13.
zend_system_id.h File 1404 bytes July 15 2025 16:08:13.
zend_type_info.h File 4544 bytes July 15 2025 16:08:13.
zend_types.h File 52036 bytes July 15 2025 16:08:13.
zend_variables.h File 3065 bytes July 15 2025 16:08:13.
zend_virtual_cwd.h File 13151 bytes July 15 2025 16:08:13.
zend_vm.h File 1994 bytes July 15 2025 16:08:13.
zend_vm_def.h File 292980 bytes July 15 2025 16:08:13.
zend_vm_execute.h File 2157964 bytes July 15 2025 16:08:13.
zend_vm_handlers.h File 92207 bytes July 15 2025 16:08:13.
zend_vm_opcodes.h File 12719 bytes July 15 2025 16:08:13.
zend_vm_trace_handlers.h File 3216 bytes July 15 2025 16:08:13.
zend_vm_trace_lines.h File 1755 bytes July 15 2025 16:08:13.
zend_vm_trace_map.h File 2665 bytes July 15 2025 16:08:13.
zend_weakrefs.h File 3226 bytes July 15 2025 16:08:13.
zend_weakrefs_arginfo.h File 3479 bytes July 15 2025 16:08:13.

Reading File: //opt/cloudlinux/alt-php83/root/usr/include/php/Zend//zend_multiply.h

/*
   +----------------------------------------------------------------------+
   | Zend Engine                                                          |
   +----------------------------------------------------------------------+
   | Copyright (c) Zend Technologies Ltd. (http://www.zend.com)           |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.00 of the Zend license,     |
   | that is bundled with this package in the file LICENSE, and is        |
   | available through the world-wide-web at the following url:           |
   | http://www.zend.com/license/2_00.txt.                                |
   | If you did not receive a copy of the Zend license and are unable to  |
   | obtain it through the world-wide-web, please send a note to          |
   | license@zend.com so we can mail you a copy immediately.              |
   +----------------------------------------------------------------------+
   | Authors: Sascha Schumann <sascha@schumann.cx>                        |
   |          Ard Biesheuvel <ard.biesheuvel@linaro.org>                  |
   +----------------------------------------------------------------------+
*/

#include "zend_portability.h"

#ifndef ZEND_MULTIPLY_H
#define ZEND_MULTIPLY_H

#if PHP_HAVE_BUILTIN_SMULL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	long __tmpvar;		 											\
	if (((usedval) = __builtin_smull_overflow((a), (b), &__tmpvar))) {	\
		(dval) = (double) (a) * (double) (b);						\
	}																\
	else (lval) = __tmpvar;											\
} while (0)

#elif PHP_HAVE_BUILTIN_SMULLL_OVERFLOW && SIZEOF_LONG_LONG == SIZEOF_ZEND_LONG

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	long long __tmpvar; 											\
	if (((usedval) = __builtin_smulll_overflow((a), (b), &__tmpvar))) {	\
		(dval) = (double) (a) * (double) (b);						\
	}																\
	else (lval) = __tmpvar;											\
} while (0)

#elif (defined(__i386__) || defined(__x86_64__)) && defined(__GNUC__)

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	zend_long __tmpvar; 													\
	__asm__ ("imul %3,%0\n"											\
		"adc $0,%1" 												\
			: "=r"(__tmpvar),"=r"(usedval) 							\
			: "0"(a), "r"(b), "1"(0));								\
	if (usedval) (dval) = (double) (a) * (double) (b);				\
	else (lval) = __tmpvar;											\
} while (0)

#elif defined(__arm__) && defined(__GNUC__)

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	zend_long __tmpvar; 													\
	__asm__("smull %0, %1, %2, %3\n"								\
		"sub %1, %1, %0, asr #31"									\
			: "=r"(__tmpvar), "=r"(usedval)							\
			: "r"(a), "r"(b));										\
	if (usedval) (dval) = (double) (a) * (double) (b);				\
	else (lval) = __tmpvar;											\
} while (0)

#elif defined(__aarch64__) && defined(__GNUC__)

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	zend_long __tmpvar; 													\
	__asm__("mul %0, %2, %3\n"										\
		"smulh %1, %2, %3\n"										\
		"sub %1, %1, %0, asr #63\n"									\
			: "=&r"(__tmpvar), "=&r"(usedval)						\
			: "r"(a), "r"(b));										\
	if (usedval) (dval) = (double) (a) * (double) (b);				\
	else (lval) = __tmpvar;											\
} while (0)

#elif defined(ZEND_WIN32)

# ifdef _M_X64
#  pragma intrinsic(_mul128)
#  define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {       \
	__int64 __high; \
	__int64 __low = _mul128((a), (b), &__high); \
	if ((__low >> 63I64) == __high) { \
		(usedval) = 0; \
		(lval) = __low; \
	} else { \
		(usedval) = 1; \
		(dval) = (double)(a) * (double)(b); \
	} \
} while (0)
# elif defined(_M_ARM64)
#  pragma intrinsic(__mulh)
#  define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {       \
	__int64 __high = __mulh((a), (b)); \
	__int64 __low  = (a) * (b); \
	if ((__low >> 63I64) == __high) { \
		(usedval) = 0; \
		(lval) = __low; \
	} else { \
		(usedval) = 1; \
		(dval) = (double)(a) * (double)(b); \
	} \
} while (0)
# else
#  define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	zend_long   __lres  = (a) * (b);										\
	long double __dres  = (long double)(a) * (long double)(b);		\
	long double __delta = (long double) __lres - __dres;			\
	if ( ((usedval) = (( __dres + __delta ) != __dres))) {			\
		(dval) = __dres;											\
	} else {														\
		(lval) = __lres;											\
	}																\
} while (0)
# endif

#elif defined(__powerpc64__) && defined(__GNUC__)

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	long __low, __high;						\
	__asm__("mulld %0,%2,%3\n\t"					\
		"mulhd %1,%2,%3\n"					\
		: "=&r"(__low), "=&r"(__high)				\
		: "r"(a), "r"(b));					\
	if ((__low >> 63) != __high) {					\
		(dval) = (double) (a) * (double) (b);			\
		(usedval) = 1;						\
	} else {							\
		(lval) = __low;						\
		(usedval) = 0;						\
	}								\
} while (0)

#elif SIZEOF_ZEND_LONG == 4

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	int64_t __result = (int64_t) (a) * (int64_t) (b);				\
	if (__result > ZEND_LONG_MAX || __result < ZEND_LONG_MIN) {		\
		(dval) = (double) __result;									\
		(usedval) = 1;												\
	} else {														\
		(lval) = (long) __result;									\
		(usedval) = 0;												\
	}																\
} while (0)

#else

#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do {	\
	long   __lres  = (a) * (b);										\
	long double __dres  = (long double)(a) * (long double)(b);		\
	long double __delta = (long double) __lres - __dres;			\
	if ( ((usedval) = (( __dres + __delta ) != __dres))) {			\
		(dval) = __dres;											\
	} else {														\
		(lval) = __lres;											\
	}																\
} while (0)

#endif

#if defined(__GNUC__) && (defined(__native_client__) || defined(i386))

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	size_t res = nmemb;
	size_t m_overflow = 0;

	if (ZEND_CONST_COND(offset == 0, 0)) {
		__asm__ ("mull %3\n\tadcl $0,%1"
	     : "=&a"(res), "=&d" (m_overflow)
	     : "%0"(res),
	       "rm"(size));
	} else {
		__asm__ ("mull %3\n\taddl %4,%0\n\tadcl $0,%1"
	     : "=&a"(res), "=&d" (m_overflow)
	     : "%0"(res),
	       "rm"(size),
	       "rm"(offset));
	}

	if (UNEXPECTED(m_overflow)) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return res;
}

#elif defined(__GNUC__) && defined(__x86_64__)

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	size_t res = nmemb;
	zend_ulong m_overflow = 0;

#ifdef __ILP32__ /* x32 */
# define LP_SUFF "l"
#else /* amd64 */
# define LP_SUFF "q"
#endif

	if (ZEND_CONST_COND(offset == 0, 0)) {
		__asm__ ("mul" LP_SUFF  " %3\n\t"
			"adc $0,%1"
			: "=&a"(res), "=&d" (m_overflow)
			: "%0"(res),
			  "rm"(size));
	} else {
		__asm__ ("mul" LP_SUFF  " %3\n\t"
			"add %4,%0\n\t"
			"adc $0,%1"
			: "=&a"(res), "=&d" (m_overflow)
			: "%0"(res),
			  "rm"(size),
			  "rm"(offset));
	}
#undef LP_SUFF
	if (UNEXPECTED(m_overflow)) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return res;
}

#elif defined(__GNUC__) && defined(__arm__)

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	size_t res;
	zend_ulong m_overflow;

	__asm__ ("umlal %0,%1,%2,%3"
		: "=r"(res), "=r"(m_overflow)
		: "r"(nmemb),
		  "r"(size),
		  "0"(offset),
		  "1"(0));

	if (UNEXPECTED(m_overflow)) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return res;
}

#elif defined(__GNUC__) && defined(__aarch64__)

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	size_t res;
	zend_ulong m_overflow;

	__asm__ ("mul %0,%2,%3\n\tumulh %1,%2,%3\n\tadds %0,%0,%4\n\tadc %1,%1,xzr"
		: "=&r"(res), "=&r"(m_overflow)
		: "r"(nmemb),
		  "r"(size),
		  "r"(offset));

	if (UNEXPECTED(m_overflow)) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return res;
}

#elif defined(__GNUC__) && defined(__powerpc64__)

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
        size_t res;
        unsigned long m_overflow;

        __asm__ ("mulld %0,%2,%3\n\t"
                 "mulhdu %1,%2,%3\n\t"
                 "addc %0,%0,%4\n\t"
                 "addze %1,%1\n"
             : "=&r"(res), "=&r"(m_overflow)
             : "r"(nmemb),
               "r"(size),
               "r"(offset));

        if (UNEXPECTED(m_overflow)) {
                *overflow = 1;
                return 0;
        }
        *overflow = 0;
        return res;
}

#elif SIZEOF_SIZE_T == 4

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	uint64_t res = (uint64_t) nmemb * (uint64_t) size + (uint64_t) offset;

	if (UNEXPECTED(res > UINT64_C(0xFFFFFFFF))) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return (size_t) res;
}

#else

static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, size_t offset, bool *overflow)
{
	size_t res = nmemb * size + offset;
	double _d  = (double)nmemb * (double)size + (double)offset;
	double _delta = (double)res - _d;

	if (UNEXPECTED((_d + _delta ) != _d)) {
		*overflow = 1;
		return 0;
	}
	*overflow = 0;
	return res;
}
#endif

static zend_always_inline size_t zend_safe_address_guarded(size_t nmemb, size_t size, size_t offset)
{
	bool overflow;
	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);

	if (UNEXPECTED(overflow)) {
		zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset);
		return 0;
	}
	return ret;
}

/* A bit more generic version of the same */
static zend_always_inline size_t zend_safe_addmult(size_t nmemb, size_t size, size_t offset, const char *message)
{
	bool overflow;
	size_t ret = zend_safe_address(nmemb, size, offset, &overflow);

	if (UNEXPECTED(overflow)) {
		zend_error_noreturn(E_ERROR, "Possible integer overflow in %s (%zu * %zu + %zu)", message, nmemb, size, offset);
		return 0;
	}
	return ret;
}

#endif /* ZEND_MULTIPLY_H */

SILENT KILLER Tool