X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ffunctions.h;h=042006f95fe2f02aaa21df2bff19ffb7279a034d;hb=5fcc791a74a6f6933b3fb03f36e9ea3553152cf7;hp=2a2c0dbb8f9fa5bc799253394f525f0c450712e2;hpb=36eb5d3d77426d8cbf4243ea752f8d8cd1d5c682;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/functions.h b/src/src/functions.h index 2a2c0dbb8..042006f95 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -225,7 +225,7 @@ extern const uschar * exim_errstr(int); extern void exim_exit(int, const uschar *) NORETURN; extern void exim_nullstd(void); extern void exim_setugid(uid_t, gid_t, BOOL, uschar *); -extern void exim_underbar_exit(int); +extern void exim_underbar_exit(int, const uschar *); extern void exim_wait_tick(struct timeval *, int); extern int exp_bool(address_item *addr, uschar *mtype, uschar *mname, unsigned dgb_opt, uschar *oname, BOOL bvalue, @@ -287,9 +287,9 @@ extern void ip_keepalive(int, const uschar *, BOOL); extern int ip_recv(client_conn_ctx *, uschar *, int, time_t); extern int ip_socket(int, int); -extern int ip_tcpsocket(const uschar *, uschar **, int); +extern int ip_tcpsocket(const uschar *, uschar **, int, host_item *); extern int ip_unixsocket(const uschar *, uschar **); -extern int ip_streamsocket(const uschar *, uschar **, int); +extern int ip_streamsocket(const uschar *, uschar **, int, host_item *); extern int ipv6_nmtoa(int *, uschar *); @@ -363,8 +363,12 @@ extern int vaguely_random_number_fallback(int); extern BOOL queue_action(uschar *, int, uschar **, int, int); extern void queue_check_only(void); +extern unsigned queue_count(void); +extern unsigned queue_count_cached(void); extern void queue_list(int, uschar **, int); -extern void queue_count(void); +#ifdef EXPERIMENTAL_QUEUE_RAMP +extern void queue_notify_daemon(const uschar * hostname); +#endif extern void queue_run(uschar *, uschar *, BOOL); extern int random_number(int); @@ -417,8 +421,8 @@ extern uschar *rfc2047_decode2(uschar *, BOOL, uschar *, int, int *, int *, uschar **); extern int route_address(address_item *, address_item **, address_item **, address_item **, address_item **, int); -extern int route_check_prefix(const uschar *, const uschar *); -extern int route_check_suffix(const uschar *, const uschar *); +extern int route_check_prefix(const uschar *, const uschar *, unsigned *); +extern int route_check_suffix(const uschar *, const uschar *, unsigned *); extern BOOL route_findgroup(uschar *, gid_t *); extern BOOL route_finduser(const uschar *, struct passwd **, uid_t *); extern BOOL route_find_expanded_group(uschar *, uschar *, uschar *, gid_t *, @@ -620,10 +624,7 @@ return FALSE; #else extern BOOL is_tainted_fn(const void *); -extern void * tainted_base, * tainted_top; - -return f.taint_check_slow - ? is_tainted_fn(p) : p >= tainted_base && p < tainted_top; +return is_tainted_fn(p); #endif } @@ -720,11 +721,14 @@ return ss; string_copy_taint_trc((s), tainted, __FUNCTION__, __LINE__) static inline uschar * -string_copy(const uschar * s) +string_copy_trc(const uschar * s, const char * func, int line) { -return string_copy_taint((s), is_tainted(s)); +return string_copy_taint_trc((s), is_tainted(s), func, line); } +#define string_copy(s) \ + string_copy_trc((s), __FUNCTION__, __LINE__) + /************************************************* * Copy, lowercase and save string * @@ -915,6 +919,18 @@ va_end(ap); return g; } + +/* Copy the content of a string to tainted memory */ + +static inline void +gstring_rebuffer(gstring * g) +{ +uschar * s = store_get(g->size, TRUE); +memcpy(s, g->s, g->ptr); +g->s = s; +} + + /******************************************************************************/ #define store_get_dns_answer() store_get_dns_answer_trc(CUS __FUNCTION__, __LINE__) @@ -1043,7 +1059,7 @@ static inline void testharness_pause_ms(int millisec) { #ifndef MEASURE_TIMING -if (f.running_in_test_harness) millisleep(millisec); +if (f.running_in_test_harness && f.testsuite_delays) millisleep(millisec); #endif }