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
DMARC: expand main-config options. Bug 3102
[exim.git]
/
src
/
exim_monitor
/
em_queue.c
diff --git
a/src/exim_monitor/em_queue.c
b/src/exim_monitor/em_queue.c
index 4c3d3fd1854cd92d85663195af912d01b16f75e3..c20f238fdbdd7c9d1a6c3e894990ae7a820e4743 100644
(file)
--- a/
src/exim_monitor/em_queue.c
+++ b/
src/exim_monitor/em_queue.c
@@
-2,8
+2,8
@@
* Exim Monitor *
*************************************************/
* Exim Monitor *
*************************************************/
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
/* See the file NOTICE for conditions of use and distribution. */
/* SPDX-License-Identifier: GPL-2.0-or-later */
/* See the file NOTICE for conditions of use and distribution. */
/* SPDX-License-Identifier: GPL-2.0-or-later */
@@
-66,18
+66,16
@@
address is lowercased to start with, unless it begins with
"*", which it does for error messages. */
dest_item *
"*", which it does for error messages. */
dest_item *
-find_dest(queue_item *
q, uschar *
name, int action, BOOL caseless)
+find_dest(queue_item *
q, const uschar *
name, int action, BOOL caseless)
{
{
-dest_item *dd;
-dest_item **
d = &(q->destinations)
;
+dest_item *
dd;
+dest_item **
d = &q->destinations
;
-while (*d
!= NULL
)
+while (*d)
{
if ((caseless? strcmpic(name,(*d)->address) : Ustrcmp(name,(*d)->address))
== 0)
{
{
if ((caseless? strcmpic(name,(*d)->address) : Ustrcmp(name,(*d)->address))
== 0)
{
- dest_item *ddd;
-
if (action != dest_remove) return *d;
dd = *d;
*d = dd->next;
if (action != dest_remove) return *d;
dd = *d;
*d = dd->next;
@@
-85,14
+83,12
@@
while (*d != NULL)
/* Unset any parent pointers that were to this address */
/* Unset any parent pointers that were to this address */
- for (ddd = q->destinations; ddd != NULL; ddd = ddd->next)
- {
+ for (dest_item * ddd = q->destinations; ddd; ddd = ddd->next)
if (ddd->parent == dd) ddd->parent = NULL;
if (ddd->parent == dd) ddd->parent = NULL;
- }
return NULL;
}
return NULL;
}
- d = &(
(*d)->next)
;
+ d = &(
*d)->next
;
}
if (action != dest_add) return NULL;
}
if (action != dest_add) return NULL;
@@
-167,7
+163,8
@@
uschar buffer[256];
q->next = q->prev = NULL;
q->destinations = NULL;
q->next = q->prev = NULL;
q->destinations = NULL;
-Ustrncpy(q->name, name, sizeof(q->name));
+Ustrncpy(q->name, name, sizeof(q->name)-1);
+q->name[sizeof(q->name)-1] = '\0';
q->seen = TRUE;
q->frozen = FALSE;
q->dir_char = dir_char;
q->seen = TRUE;
q->frozen = FALSE;
q->dir_char = dir_char;
@@
-207,8
+204,9
@@
if it's there. */
else
{
q->update_time = q->input_time = received_time.tv_sec;
else
{
q->update_time = q->input_time = received_time.tv_sec;
- if ((p = strstric(sender_address+1, qualify_domain, FALSE)) != NULL &&
- *(--p) == '@') *p = 0;
+ /* deconst ok; strstric is actually safe */
+ if ((p = strstric(US sender_address+1, qualify_domain, FALSE)) != NULL &&
+ *--p == '@') *p = 0;
}
/* If we didn't read the whole header successfully, generate an error
}
/* If we didn't read the whole header successfully, generate an error
@@
-279,10
+277,11
@@
been delivered, and removing visible names. */
if (recipients_list)
for (i = 0; i < recipients_count; i++)
{
if (recipients_list)
for (i = 0; i < recipients_count; i++)
{
- uschar * r = recipients_list[i].address;
+
const
uschar * r = recipients_list[i].address;
if (tree_search(tree_nonrecipients, r) == NULL)
{
if (tree_search(tree_nonrecipients, r) == NULL)
{
- if ((p = strstric(r+1, qualify_domain, FALSE)) != NULL &&
+ /* deconst ok; strstric is actually safe */
+ if ((p = strstric(US r+1, qualify_domain, FALSE)) != NULL &&
*(--p) == '@') *p = 0;
(void)find_dest(q, r, dest_add, FALSE);
}
*(--p) == '@') *p = 0;
(void)find_dest(q, r, dest_add, FALSE);
}
@@
-663,13
+662,14
@@
if (recipients_list)
for (i = 0; i < recipients_count; i++)
{
uschar * pp;
for (i = 0; i < recipients_count; i++)
{
uschar * pp;
- uschar * r = recipients_list[i].address;
+
const
uschar * r = recipients_list[i].address;
tree_node * node;
if (!(node = tree_search(tree_nonrecipients, r)))
node = tree_search(tree_nonrecipients, string_copylc(r));
tree_node * node;
if (!(node = tree_search(tree_nonrecipients, r)))
node = tree_search(tree_nonrecipients, string_copylc(r));
- if ((pp = strstric(r+1, qualify_domain, FALSE)) && *(--pp) == '@')
+ /* deconst ok; strstric is actually safe */
+ if ((pp = strstric(US r+1, qualify_domain, FALSE)) && *(--pp) == '@')
*pp = 0;
if (!node)
(void)find_dest(p, r, dest_add, FALSE);
*pp = 0;
if (!node)
(void)find_dest(p, r, dest_add, FALSE);