git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SPDX: license tags (mostly by guesswork)
[exim.git]
/
src
/
src
/
parse.c
diff --git
a/src/src/parse.c
b/src/src/parse.c
index e30b80527751b190ff573d0c4e98b5ca936bcfe9..93b12bc77c47ac5aed7302147d9bc22ad26cdc5f 100644
(file)
--- a/
src/src/parse.c
+++ b/
src/src/parse.c
@@
-2,9
+2,10
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
+/* Copyright (c) The Exim Maintainers 2020 - 2022 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
/* See the file NOTICE for conditions of use and distribution. */
/* See the file NOTICE for conditions of use and distribution. */
+/* SPDX-License-Identifier: GPL-2.0-only */
/* Functions for parsing addresses */
/* Functions for parsing addresses */
@@
-22,22
+23,25
@@
redundant apparatus. */
#ifdef STAND_ALONE
#ifdef STAND_ALONE
-address_item *deliver_make_addr(uschar *address, BOOL copy)
+address_item *
+deliver_make_addr(uschar *address, BOOL copy)
{
{
-address_item *addr = store_get(sizeof(address_item),
FALSE
);
+address_item *addr = store_get(sizeof(address_item),
GET_UNTAINTED
);
addr->next = NULL;
addr->parent = NULL;
addr->address = address;
return addr;
}
addr->next = NULL;
addr->parent = NULL;
addr->address = address;
return addr;
}
-uschar *rewrite_address(uschar *recipient, BOOL dummy1, BOOL dummy2, rewrite_rule
+uschar *
+rewrite_address(uschar *recipient, BOOL dummy1, BOOL dummy2, rewrite_rule
*dummy3, int dummy4)
{
return recipient;
}
*dummy3, int dummy4)
{
return recipient;
}
-uschar *rewrite_address_qualify(uschar *recipient, BOOL dummy1)
+uschar *
+rewrite_address_qualify(uschar *recipient, BOOL dummy1)
{
return recipient;
}
{
return recipient;
}
@@
-627,7
+631,7
@@
uschar *
parse_extract_address(const uschar *mailbox, uschar **errorptr, int *start, int *end,
int *domain, BOOL allow_null)
{
parse_extract_address(const uschar *mailbox, uschar **errorptr, int *start, int *end,
int *domain, BOOL allow_null)
{
-uschar *
yield = store_get(Ustrlen(mailbox) + 1, is_tainted(mailbox)
);
+uschar *
yield = store_get(Ustrlen(mailbox) + 1, mailbox
);
const uschar *startptr, *endptr;
const uschar *s = US mailbox;
uschar *t = US yield;
const uschar *startptr, *endptr;
const uschar *s = US mailbox;
uschar *t = US yield;
@@
-655,7
+659,7
@@
followed by a route-addr (more words must follow). */
if (*s != '@' && *s != '<')
{
if (*s != '@' && *s != '<')
{
- if (
*s == 0
|| *s == ';')
+ if (
!*s
|| *s == ';')
{
if (!*t) FAILED(US"empty address");
endptr = last_comment_position;
{
if (!*t) FAILED(US"empty address");
endptr = last_comment_position;
@@
-994,11
+998,9
@@
if (i < len)
/* No non-printers; use the RFC 822 quoting rules */
if (len <= 0 || len >= INT_MAX/4)
/* No non-printers; use the RFC 822 quoting rules */
if (len <= 0 || len >= INT_MAX/4)
- {
- return string_copy_taint(CUS"", is_tainted(phrase));
- }
+ return string_copy_taint(CUS"", phrase);
-buffer = store_get((len+1)*4,
is_tainted(phrase)
);
+buffer = store_get((len+1)*4,
phrase
);
s = phrase;
end = s + len;
s = phrase;
end = s + len;
@@
-1414,8
+1416,12
@@
for (;;)
return FF_ERROR;
}
return FF_ERROR;
}
- if ((*error = is_tainted2(filename, 0, "Tainted name '%s' for included file not permitted\n", filename)))
+ if (is_tainted(filename))
+ {
+ *error = string_sprintf("Tainted name '%s' for included file not permitted\n",
+ filename);
return FF_ERROR;
return FF_ERROR;
+ }
/* Check file name if required */
/* Check file name if required */
@@
-1541,7
+1547,7
@@
for (;;)
return FF_ERROR;
}
return FF_ERROR;
}
- filebuf = store_get(statbuf.st_size + 1,
is_tainted(filename)
);
+ filebuf = store_get(statbuf.st_size + 1,
filename
);
if (fread(filebuf, 1, statbuf.st_size, f) != statbuf.st_size)
{
*error = string_sprintf("error while reading included file %s: %s",
if (fread(filebuf, 1, statbuf.st_size, f) != statbuf.st_size)
{
*error = string_sprintf("error while reading included file %s: %s",
@@
-1616,7
+1622,7
@@
for (;;)
if ((*s_ltd == '|' || *s_ltd == '/') && (!recipient || domain == 0))
{
if ((*s_ltd == '|' || *s_ltd == '/') && (!recipient || domain == 0))
{
- uschar * t = store_get(Ustrlen(s_ltd) + 1,
is_tainted(s_ltd)
);
+ uschar * t = store_get(Ustrlen(s_ltd) + 1,
s_ltd
);
uschar * p = t, * q = s_ltd;
while (*q)
uschar * p = t, * q = s_ltd;
while (*q)
@@
-1654,7
+1660,7
@@
for (;;)
if (syntax_errors)
{
if (syntax_errors)
{
- error_block * e = store_get(sizeof(error_block),
FALSE
);
+ error_block * e = store_get(sizeof(error_block),
GET_UNTAINTED
);
error_block * last = *syntax_errors;
if (last)
{
error_block * last = *syntax_errors;
if (last)
{
@@
-1734,7
+1740,7
@@
for the answer, but it may also be very long if we are processing a header
line. Therefore, take care to release unwanted store afterwards. */
reset_point = store_mark();
line. Therefore, take care to release unwanted store afterwards. */
reset_point = store_mark();
-id = *yield = store_get(Ustrlen(str) + 1,
is_tainted(str)
);
+id = *yield = store_get(Ustrlen(str) + 1,
str
);
*id++ = *str++;
str = read_addr_spec(str, id, '>', error, &domain);
*id++ = *str++;
str = read_addr_spec(str, id, '>', error, &domain);