Fix taint trap in parse_fix_phrase(). Bug 2617
[exim.git] / src / src / functions.h
index e6b78dbe60257a900c3509897dfa2da95dc25ea8..f56ab3eac5763f7d557791e5f8796339b1c80845 100644 (file)
@@ -235,6 +235,7 @@ extern void    msg_event_raise(const uschar *, const address_item *);
 extern int     exim_chown_failure(int, const uschar*, uid_t, gid_t);
 extern const uschar * exim_errstr(int);
 extern void    exim_exit(int) NORETURN;
+extern void    exim_gettime(struct timeval *);
 extern void    exim_nullstd(void);
 extern void    exim_setugid(uid_t, gid_t, BOOL, uschar *);
 extern void    exim_underbar_exit(int) NORETURN;
@@ -367,9 +368,9 @@ extern int     parse_forward_list(uschar *, int, address_item **, uschar **,
                  const uschar *, uschar *, error_block **);
 extern uschar *parse_find_address_end(uschar *, BOOL);
 extern uschar *parse_find_at(uschar *);
-extern const uschar *parse_fix_phrase(const uschar *, int, uschar *, int);
+extern const uschar *parse_fix_phrase(const uschar *, int);
 extern uschar *parse_message_id(uschar *, uschar **, uschar **);
-extern const uschar *parse_quote_2047(const uschar *, int, uschar *, uschar *, int, BOOL);
+extern const uschar *parse_quote_2047(const uschar *, int, uschar *, BOOL);
 extern uschar *parse_date_time(uschar *str, time_t *t);
 extern int     vaguely_random_number(int);
 #ifndef DISABLE_TLS
@@ -448,7 +449,7 @@ extern void    route_init(void);
 extern gstring * route_show_supported(gstring *);
 extern void    route_tidyup(void);
 
-extern uschar *search_args(int, uschar *, uschar *, uschar **);
+extern uschar *search_args(int, uschar *, uschar *, uschar **, const uschar *);
 extern uschar *search_find(void *, const uschar *, uschar *, int,
                 const uschar *, int, int, int *, const uschar *);
 extern int     search_findtype(const uschar *, int);
@@ -553,10 +554,10 @@ extern BOOL    string_format_trc(uschar *, int, const uschar *, unsigned,
 extern gstring *string_vformat_trc(gstring *, const uschar *, unsigned,
                        unsigned, unsigned, const char *, va_list);
 
-#define string_open_failed(eno, fmt, ...) \
-       string_open_failed_trc(eno, US __FUNCTION__, __LINE__, fmt, __VA_ARGS__)
-extern uschar *string_open_failed_trc(int, const uschar *, unsigned,
-                       const char *, ...) PRINTF_FUNCTION(4,5);
+#define string_open_failed(fmt, ...) \
+       string_open_failed_trc(US __FUNCTION__, __LINE__, fmt, __VA_ARGS__)
+extern uschar *string_open_failed_trc(const uschar *, unsigned,
+                       const char *, ...) PRINTF_FUNCTION(3,4);
 
 #define string_nextinlist(lp, sp, b, l) \
        string_nextinlist_trc((lp), (sp), (b), (l), US __FUNCTION__, __LINE__)
@@ -772,9 +773,9 @@ string_copy_trc(const uschar * s, const char * func, int line)
 /* Simple string-copy functions maintaining the taint */
 
 #define string_copyn(s, len) \
-       string_copyn_taint_trc((s), (len), is_tainted(s), __FUNCTION__, __LINE__)
+       string_copyn_trc((s), (len), __FUNCTION__, __LINE__)
 #define string_copy(s) \
-       string_copy_taint_trc((s), is_tainted(s), __FUNCTION__, __LINE__)
+       string_copy_trc((s), __FUNCTION__, __LINE__)
 
 
 /*************************************************
@@ -1104,6 +1105,7 @@ log_write(0, LOG_MAIN|LOG_PANIC, "Tainted filename '%s'", pathname);
 errno = EACCES;
 return -1;
 }
+#ifdef EXIM_HAVE_OPENAT
 static inline int
 exim_openat(int dirfd, const char *pathname, int flags)
 {
@@ -1120,6 +1122,7 @@ log_write(0, LOG_MAIN|LOG_PANIC, "Tainted filename '%s'", pathname);
 errno = EACCES;
 return -1;
 }
+#endif
 
 static inline FILE *
 exim_fopen(const char *pathname, const char *mode)