]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - include/alloca.h
Correct range checking in mallopt/mxfast/tcache [BZ #25194]
[thirdparty/glibc.git] / include / alloca.h
index 9a4b5c7da0377c8e40c9d43791579f7bcacaa88e..c0b83954436ed4c1e7c3246e914bc36ac1606dd9 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef _ALLOCA_H
 
 #include <stdlib/alloca.h>
+
+# ifndef _ISOMAC
+
 #include <stackinfo.h>
 
 #undef __alloca
@@ -14,49 +17,24 @@ extern void *__alloca (size_t __size);
 
 extern int __libc_use_alloca (size_t size) __attribute__ ((const));
 extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
+libc_hidden_proto (__libc_alloca_cutoff)
 
 #define __MAX_ALLOCA_CUTOFF    65536
 
 #include <allocalim.h>
 
-#if _STACK_GROWS_DOWN
-# define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = (newlen);                            \
-                     char *__newbuf = __alloca (__newlen);                   \
-                     if (__newbuf + __newlen == (char *) buf)                \
-                       len += __newlen;                                      \
-                     else                                                    \
-                       len = __newlen;                                       \
-                     __newbuf; })
-#elif _STACK_GROWS_UP
-# define extend_alloca(buf, len, newlen) \
-  (__typeof (buf)) ({ size_t __newlen = (newlen);                            \
-                     char *__newbuf = __alloca (__newlen);                   \
-                     char *__buf = (buf);                                    \
-                     if (__buf + __newlen == __newbuf)                       \
-                       {                                                     \
-                         len += __newlen;                                    \
-                         __newbuf = __buf;                                   \
-                       }                                                     \
-                     else                                                    \
-                       len = __newlen;                                       \
-                     __newbuf; })
-#else
-# define extend_alloca(buf, len, newlen) \
-  __alloca (((len) = (newlen)))
-#endif
-
 #if defined stackinfo_get_sp && defined stackinfo_sub_sp
 # define alloca_account(size, avar) \
-  ({ void *old__ = stackinfo_get_sp ();                        \
-     void *m__ = __alloca (size);                      \
-     avar += stackinfo_sub_sp (old__);                 \
+  ({ void *old__ = stackinfo_get_sp ();                                              \
+     void *m__ = __alloca (size);                                            \
+     avar += stackinfo_sub_sp (old__);                                       \
      m__; })
 #else
 # define alloca_account(size, avar) \
-  ({ size_t s__ = (size);                  \
-     avar += s__;                          \
+  ({ size_t s__ = (size);                                                    \
+     avar += s__;                                                            \
      __alloca (s__); })
 #endif
 
+# endif /* !_ISOMAC */
 #endif