18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #ifndef __SAFE_ALLOC_H__ 27 #define __SAFE_ALLOC_H__ 28 29 #include "j2d_md.h" 30 31 /* 32 * Macroses defined below are wrappers for alloc functions 33 * that perform buffer size calculation with integer overflow 34 * check. 35 */ 36 #define SAFE_TO_ALLOC_2(c, sz) \ 37 (((c) > 0) && ((sz) > 0) && \ 38 ((0xffffffffu / ((juint)(c))) > ((juint)(sz)))) 39 40 #define SAFE_TO_ALLOC_3(w, h, sz) \ 41 (((w) > 0) && ((h) > 0) && ((sz) > 0) && \ 42 (((0xffffffffu / ((juint)(w))) / ((juint)(h))) > ((juint)(sz)))) 43 44 #endif // __SAFE_ALLOC_H__ | 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #ifndef __SAFE_ALLOC_H__ 27 #define __SAFE_ALLOC_H__ 28 29 #include "j2d_md.h" 30 31 /* 32 * Macroses defined below are wrappers for alloc functions 33 * that perform buffer size calculation with integer overflow 34 * check. 35 */ 36 #define SAFE_TO_ALLOC_2(c, sz) \ 37 (((c) > 0) && ((sz) > 0) && \ 38 ((0x7fffffff / (c)) > (sz))) 39 40 #define SAFE_TO_ALLOC_3(w, h, sz) \ 41 (((w) > 0) && ((h) > 0) && ((sz) > 0) && \ 42 (((0x7fffffff / (w)) / (h)) > (sz))) 43 44 #endif // __SAFE_ALLOC_H__ |