GRAYBYTE WORDPRESS FILE MANAGER3210

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/cpanel/ea-php70/root/usr/include/php/Zend/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/cpanel/ea-php70/root/usr/include/php/Zend//zend_multiply.h
/*
   +----------------------------------------------------------------------+
   | Zend Engine                                                          |
   +----------------------------------------------------------------------+
   | Copyright (c) 1998-2017 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>                  |
   +----------------------------------------------------------------------+
*/

/* $Id$ */

#ifndef ZEND_MULTIPLY_H
#define ZEND_MULTIPLY_H

#if (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)

#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)

#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, int *overflow)
{
	size_t res = nmemb;
	size_t m_overflow = 0;

	__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, int *overflow)
{
	size_t res = nmemb;
	zend_ulong m_overflow = 0;

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

	__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, int *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, int *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, int *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, int *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, int *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)
{
	int 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)
{
	int 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 */

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * indent-tabs-mode: t
 * End:
 */

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 03:01:53
root / root
0755
zend.h
12.494 KB
May 23 2025 03:02:18
root / root
0644
zend_API.h
54.414 KB
May 23 2025 03:02:18
root / root
0644
zend_alloc.h
18.722 KB
May 23 2025 03:02:18
root / root
0644
zend_alloc_sizes.h
2.567 KB
May 23 2025 03:02:18
root / root
0644
zend_arena.h
3.654 KB
May 23 2025 03:02:18
root / root
0644
zend_ast.h
7.916 KB
May 23 2025 03:02:18
root / root
0644
zend_bitset.h
4.787 KB
May 23 2025 03:02:18
root / root
0644
zend_build.h
1.588 KB
May 23 2025 03:02:18
root / root
0644
zend_builtin_functions.h
1.575 KB
May 23 2025 03:02:18
root / root
0644
zend_closures.h
1.955 KB
May 23 2025 03:02:18
root / root
0644
zend_compile.h
32.01 KB
May 23 2025 03:02:18
root / root
0644
zend_config.h
0.104 KB
May 23 2025 03:02:18
root / root
0644
zend_config.nw.h
2.441 KB
May 23 2025 03:02:18
root / root
0644
zend_constants.h
5.786 KB
May 23 2025 03:02:18
root / root
0644
zend_dtrace.h
1.905 KB
May 23 2025 03:02:18
root / root
0644
zend_errors.h
2.107 KB
May 23 2025 03:02:18
root / root
0644
zend_exceptions.h
3.682 KB
May 23 2025 03:02:18
root / root
0644
zend_execute.h
13.859 KB
May 23 2025 03:02:18
root / root
0644
zend_extensions.h
5.215 KB
May 23 2025 03:02:18
root / root
0644
zend_float.h
15.188 KB
May 23 2025 03:02:18
root / root
0644
zend_gc.h
4.774 KB
May 23 2025 03:02:18
root / root
0644
zend_generators.h
7.19 KB
May 23 2025 03:02:18
root / root
0644
zend_globals.h
6.917 KB
May 23 2025 03:02:18
root / root
0644
zend_globals_macros.h
3.141 KB
May 23 2025 03:02:18
root / root
0644
zend_hash.h
31.408 KB
May 23 2025 03:02:18
root / root
0644
zend_highlight.h
2.32 KB
May 23 2025 03:02:18
root / root
0644
zend_inheritance.h
1.908 KB
May 23 2025 03:02:18
root / root
0644
zend_ini.h
9.402 KB
May 23 2025 03:02:18
root / root
0644
zend_ini_parser.h
2.688 KB
May 23 2025 03:02:18
root / root
0644
zend_ini_scanner.h
1.935 KB
May 23 2025 03:02:18
root / root
0644
zend_ini_scanner_defs.h
0.219 KB
May 23 2025 03:02:18
root / root
0644
zend_interfaces.h
4.22 KB
May 23 2025 03:02:18
root / root
0644
zend_istdiostream.h
1.606 KB
May 23 2025 03:02:18
root / root
0644
zend_iterators.h
3.501 KB
May 23 2025 03:02:18
root / root
0644
zend_language_parser.h
7.957 KB
May 23 2025 03:02:18
root / root
0644
zend_language_scanner.h
2.679 KB
May 23 2025 03:02:18
root / root
0644
zend_language_scanner_defs.h
0.289 KB
May 23 2025 03:02:18
root / root
0644
zend_list.h
3.165 KB
May 23 2025 03:02:18
root / root
0644
zend_llist.h
3.807 KB
May 23 2025 03:02:18
root / root
0644
zend_long.h
4.027 KB
May 23 2025 03:02:18
root / root
0644
zend_modules.h
4.783 KB
May 23 2025 03:02:18
root / root
0644
zend_multibyte.h
4.832 KB
May 23 2025 03:02:18
root / root
0644
zend_multiply.h
8.271 KB
May 23 2025 03:02:18
root / root
0644
zend_object_handlers.h
9.063 KB
May 23 2025 03:02:18
root / root
0644
zend_objects.h
1.828 KB
May 23 2025 03:02:18
root / root
0644
zend_objects_API.h
3.536 KB
May 23 2025 03:02:18
root / root
0644
zend_operators.h
27.88 KB
May 23 2025 03:02:18
root / root
0644
zend_portability.h
13.378 KB
May 23 2025 03:02:18
root / root
0644
zend_ptr_stack.h
4.224 KB
May 23 2025 03:02:18
root / root
0644
zend_range_check.h
3.023 KB
May 23 2025 03:02:18
root / root
0644
zend_signal.h
3.917 KB
May 23 2025 03:02:18
root / root
0644
zend_smart_str.h
4.414 KB
May 23 2025 03:02:18
root / root
0644
zend_smart_str_public.h
1.249 KB
May 23 2025 03:02:18
root / root
0644
zend_sort.h
1.703 KB
May 23 2025 03:02:18
root / root
0644
zend_stack.h
2.41 KB
May 23 2025 03:02:18
root / root
0644
zend_stream.h
3.23 KB
May 23 2025 03:02:18
root / root
0644
zend_string.h
12.161 KB
May 23 2025 03:02:18
root / root
0644
zend_strtod.h
1.822 KB
May 23 2025 03:02:18
root / root
0644
zend_strtod_int.h
3.42 KB
May 23 2025 03:02:18
root / root
0644
zend_ts_hash.h
6.502 KB
May 23 2025 03:02:18
root / root
0644
zend_types.h
30.536 KB
May 23 2025 03:02:18
root / root
0644
zend_variables.h
5.805 KB
May 23 2025 03:02:18
root / root
0644
zend_virtual_cwd.h
11.872 KB
May 23 2025 03:02:18
root / root
0644
zend_vm.h
1.452 KB
May 23 2025 03:02:18
root / root
0644
zend_vm_def.h
231.791 KB
May 23 2025 03:02:18
root / root
0644
zend_vm_execute.h
1.53 MB
May 23 2025 03:02:18
root / root
0644
zend_vm_opcodes.h
9.634 KB
May 23 2025 03:02:18
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF