lpd: fix OOM vulnerability (was eating arbitrarily large commands)
[oweals/busybox.git] / include / platform.h
index 1706de0bf201298892b07624ebb5ce2b8892c506..51934853b777106c48fc87e2d9785663df631ed2 100644 (file)
@@ -52,7 +52,8 @@
 # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
 # define ATTRIBUTE_PACKED __attribute__ ((__packed__))
 # define ATTRIBUTE_ALIGNED(m) __attribute__ ((__aligned__(m)))
-# if __GNUC_PREREQ (3,0)
+/* __NO_INLINE__: some gcc's do not honor inlining! :( */
+# if __GNUC_PREREQ (3,0) && !defined(__NO_INLINE__)
 #  define ALWAYS_INLINE __attribute__ ((always_inline)) inline
 /* I've seen a toolchain where I needed __noinline__ instead of noinline */
 #  define NOINLINE      __attribute__((__noinline__))
 /* ---- Networking ------------------------------------------ */
 #ifndef __APPLE__
 # include <arpa/inet.h>
+# ifndef __socklen_t_defined
+typedef int socklen_t;
+# endif
 #else
 # include <netinet/in.h>
 #endif
 
-#ifndef __socklen_t_defined
-typedef int socklen_t;
-#endif
-
 /* ---- Compiler dependent settings ------------------------- */
-#if (defined __digital__ && defined __unix__)
+#if (defined __digital__ && defined __unix__) || defined __APPLE__
 # undef HAVE_MNTENT_H
+# undef HAVE_SYS_STATFS_H
 #else
 # define HAVE_MNTENT_H 1
+# define HAVE_SYS_STATFS_H 1
 #endif /* ___digital__ && __unix__ */
 
 /* linux/loop.h relies on __u64. Make sure we have that as a proper type
  * until userspace is widely fixed.  */
-#ifndef __GNUC__
-#if defined __INTEL_COMPILER
+#if (defined __INTEL_COMPILER && !defined __GNUC__) || \
+       (defined __GNUC__ && defined __STRICT_ANSI__)
 __extension__ typedef __signed__ long long __s64;
 __extension__ typedef unsigned long long __u64;
-#endif /* __INTEL_COMPILER */
-#endif /* ifndef __GNUC__ */
+#endif
 
 /*----- Kernel versioning ------------------------------------*/
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
@@ -181,7 +182,7 @@ __extension__ typedef unsigned long long __u64;
 #define HAVE_FEATURES_H
 #include <stdint.h>
 #define HAVE_STDINT_H
-#else
+#elif !defined __APPLE__
 /* Largest integral types.  */
 #if __BIG_ENDIAN__
 typedef long                intmax_t;
@@ -268,12 +269,6 @@ static ALWAYS_INLINE char* strchrnul(const char *s, char c)
 # define lchown chown
 #endif
 
-/* THIS SHOULD BE CLEANED OUT OF THE TREE ENTIRELY */
-/* FIXME: fix tar.c! */
-#ifndef FNM_LEADING_DIR
-#define FNM_LEADING_DIR 0
-#endif
-
 #if (defined __digital__ && defined __unix__)
 #include <standards.h>
 #define HAVE_STANDARDS_H