X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/cc4a2e40ed9f114108a72ee8cfaa453ce478e833..a7538db17824b7fd70c12ef7561a67b85d6f247e:/src/src/expand.c diff --git a/src/src/expand.c b/src/src/expand.c index 23009bc4f..f6b70cb47 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -501,6 +501,7 @@ static var_entry var_table[] = { { "host_data", vtype_stringptr, &host_data }, { "host_lookup_deferred",vtype_int, &host_lookup_deferred }, { "host_lookup_failed", vtype_int, &host_lookup_failed }, + { "host_port", vtype_int, &deliver_host_port }, { "inode", vtype_ino, &deliver_inode }, { "interface_address", vtype_stringptr, &interface_address }, { "interface_port", vtype_int, &interface_port }, @@ -706,14 +707,12 @@ static var_entry var_table[] = { { "tod_zone", vtype_todzone, NULL }, { "tod_zulu", vtype_todzulu, NULL }, #ifdef EXPERIMENTAL_TPDA + { "tpda_data", vtype_stringptr, &tpda_data }, + + /*XXX want to use generic vars for as many of these as possible*/ { "tpda_defer_errno", vtype_int, &tpda_defer_errno }, - { "tpda_defer_errstr", vtype_stringptr, &tpda_defer_errstr }, - { "tpda_delivery_confirmation", vtype_stringptr, &tpda_delivery_confirmation }, - { "tpda_delivery_domain", vtype_stringptr, &tpda_delivery_domain }, - { "tpda_delivery_fqdn", vtype_stringptr, &tpda_delivery_fqdn }, - { "tpda_delivery_ip", vtype_stringptr, &tpda_delivery_ip }, - { "tpda_delivery_local_part",vtype_stringptr,&tpda_delivery_local_part }, - { "tpda_delivery_port", vtype_int, &tpda_delivery_port }, + + { "tpda_event", vtype_stringptr, &tpda_event }, #endif { "transport_name", vtype_stringptr, &transport_name }, { "value", vtype_stringptr, &lookup_value }, @@ -913,7 +912,9 @@ vaguely_random_number(int max) #ifdef HAVE_ARC4RANDOM /* cryptographically strong randomness, common on *BSD platforms, not so much elsewhere. Alas. */ +#ifndef NOT_HAVE_ARC4RANDOM_STIR arc4random_stir(); +#endif #elif defined(HAVE_SRANDOM) || defined(HAVE_SRANDOMDEV) #ifdef HAVE_SRANDOMDEV /* uses random(4) for seeding */ @@ -1879,7 +1880,8 @@ switch (vp->type) #endif } -return NULL; /* Fix broken static checkers, already done in if() above */ + +return NULL; /* Unknown variable. Silences static checkers. */ } @@ -6367,18 +6369,16 @@ while (*s != 0) case EOP_UTF8CLEAN: { - int seq_len, index = 0; + int seq_len = 0, index = 0; int bytes_left = 0; + long codepoint = -1; uschar seq_buff[4]; /* accumulate utf-8 here */ while (*sub != 0) { - int complete; - long codepoint; - uschar c; + int complete = 0; + uschar c = *sub++; - complete = 0; - c = *sub++; if (bytes_left) { if ((c & 0xc0) != 0x80) @@ -6393,7 +6393,7 @@ while (*s != 0) if (--bytes_left == 0) /* codepoint complete */ { if(codepoint > 0x10FFFF) /* is it too large? */ - complete = -1; /* error */ + complete = -1; /* error (RFC3629 limit) */ else { /* finished; output utf-8 sequence */ yield = string_cat(yield, &size, &ptr, seq_buff, seq_len);