Build: workaround inlining problems on Solaris
authorJeremy Harris <jgh146exb@wizmail.org>
Thu, 25 Jul 2019 19:09:18 +0000 (20:09 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Thu, 25 Jul 2019 19:09:18 +0000 (20:09 +0100)
src/src/mytypes.h
src/src/store.c
src/src/string.c

index aaa6e9052b9f134954b437052431e867937cfb5e..de2371c7d9200c296c90f1001ed22234f29eaa87 100644 (file)
@@ -134,8 +134,12 @@ By extension, a variable pointing to this address is tainted.
 static inline BOOL
 is_tainted(const void * p)
 {
+#ifdef MACRO_PREDEF
+return FALSE;
+#else
 extern void * tainted_base, * tainted_top;
 return p >= tainted_base && p < tainted_top;
+#endif
 }
 
 static inline uschar * __Ustrcat(uschar * dst, const uschar * src, const char * func, int line)
index 41ca43d65f71e22f3f07899e6efd82b3010e9584..b7cf4cdee3798503f6d60ec7d564ceaa338c5097 100644 (file)
@@ -710,8 +710,10 @@ int pool = tainted ? store_pool + POOL_TAINT_BASE : store_pool;
 BOOL release_ok = !tainted && store_last_get[pool] == block;
 uschar * newtext;
 
+#ifndef MACRO_PREDEF
 if (is_tainted(block) != tainted)
   die_tainted(US"store_newblock", CUS func, linenumber);
+#endif
 
 newtext = store_get(newsize, tainted);
 memcpy(newtext, block, len);
index 8cc34a0773cbb70cad5ff5b388be03c62e6a9636..288466113fe860303f72b8cdecfc31b13c2e45fb 100644 (file)
@@ -1277,8 +1277,10 @@ else if (!(flags & SVFMT_TAINT_NOCHK)) dest_tainted = is_tainted(g->s);
 
 if (!(flags & SVFMT_TAINT_NOCHK) && !dest_tainted && is_tainted(format))
   {
+#ifndef MACRO_PREDEF
   if (!(flags & SVFMT_REBUFFER))
     die_tainted(US"string_vformat", func, line);
+#endif
   gstring_rebuffer(g);
   dest_tainted = TRUE;
   }
@@ -1507,8 +1509,10 @@ while (*fp)
          gp = CS g->s + g->ptr;
          dest_tainted = TRUE;
          }
+#ifndef MACRO_PREDEF
        else
          die_tainted(US"string_vformat", func, line);
+#endif
 
     INSERT_STRING:              /* Come to from %D or %M above */