12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef ZEND_RANGE_CHECK_H
- #define ZEND_RANGE_CHECK_H
- #include "zend_long.h"
- #if SIZEOF_INT < SIZEOF_ZEND_LONG
- # define ZEND_LONG_CAN_OVFL_INT 1
- # define ZEND_LONG_CAN_OVFL_UINT 1
- #endif
- #if SIZEOF_INT < SIZEOF_SIZE_T
- # define ZEND_SIZE_T_CAN_OVFL_UINT 1
- #endif
- #ifdef ZEND_LONG_CAN_OVFL_INT
- # define ZEND_LONG_INT_OVFL(zlong) UNEXPECTED((zlong) > (zend_long)INT_MAX)
- # define ZEND_LONG_INT_UDFL(zlong) UNEXPECTED((zlong) < (zend_long)INT_MIN)
- # define ZEND_LONG_EXCEEDS_INT(zlong) UNEXPECTED(ZEND_LONG_INT_OVFL(zlong) || ZEND_LONG_INT_UDFL(zlong))
- # define ZEND_LONG_UINT_OVFL(zlong) UNEXPECTED((zlong) < 0 || (zlong) > (zend_long)UINT_MAX)
- #else
- # define ZEND_LONG_INT_OVFL(zl) (0)
- # define ZEND_LONG_INT_UDFL(zl) (0)
- # define ZEND_LONG_EXCEEDS_INT(zlong) (0)
- # define ZEND_LONG_UINT_OVFL(zl) (0)
- #endif
- #define ZEND_SIZE_T_INT_OVFL(size) UNEXPECTED((size) > (size_t)INT_MAX)
- #ifdef ZEND_SIZE_T_CAN_OVFL_UINT
- # define ZEND_SIZE_T_UINT_OVFL(size) UNEXPECTED((size) > (size_t)UINT_MAX)
- #else
- # define ZEND_SIZE_T_UINT_OVFL(size) (0)
- #endif
- #define ZEND_SIZE_T_GT_ZEND_LONG(size, zlong) ((zlong) < 0 || (size) > (size_t)(zlong))
- #define ZEND_SIZE_T_GTE_ZEND_LONG(size, zlong) ((zlong) < 0 || (size) >= (size_t)(zlong))
- #define ZEND_SIZE_T_LT_ZEND_LONG(size, zlong) ((zlong) >= 0 && (size) < (size_t)(zlong))
- #define ZEND_SIZE_T_LTE_ZEND_LONG(size, zlong) ((zlong) >= 0 && (size) <= (size_t)(zlong))
- #endif
|