tidying
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 17 Sep 2024 12:31:57 +0000 (13:31 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 25 Oct 2024 13:32:15 +0000 (14:32 +0100)
src/src/exim.c
src/src/functions.h
src/src/miscmods/dkim.c
src/src/string.c

index 0eb221d43b3adc13159afdc44e07142503bfb7a6..a95723f0d317142573f5ff5614f8d1a52fa65a92 100644 (file)
@@ -257,6 +257,12 @@ int nptrs = backtrace(buf, STACKDUMP_MAX);
 
 log_write(0, LOG_MAIN|LOG_PANIC, "backtrace");
 log_write(0, LOG_MAIN|LOG_PANIC, "---");
+
+/* This function is officially not callable from a signal handler, as it
+calls malloc() for the returned data. However, it seems to work - and we
+know we're going on to crash anyway - so just hold our noses and do it.
+A alternative might be backtrace_symbols_fd(). */
+
 if ((ss = backtrace_symbols(buf, nptrs)))
   {
   for (int i = 0; i < nptrs; i++)
index 57c4bb45cb638a6c06a816bfdd46381116303665..b581af78b123b2068d1c7048f9dfb1dc1783c321 100644 (file)
@@ -991,7 +991,7 @@ return g ? (unsigned)g->ptr : 0;
 static inline uschar
 gstring_last_char(gstring * g)
 {
-return g ? g->s[g->ptr-1] : '\0';
+return g && g->ptr > 0 ? g->s[g->ptr-1] : '\0';
 }
 
 static inline void
index bd1625187744728fd9039c44ccc17d8f770f8862..5b18dbcb07eb5495a51d52c13e867da2cd7095b7 100644 (file)
@@ -995,7 +995,7 @@ if (dkim_domain)
     if (!(dkim_private_key_expanded = expand_string(dkim->dkim_private_key)))
       { errwhen = US"dkim_private_key"; goto expand_bad; }
 
-    if (  Ustrlen(dkim_private_key_expanded) == 0
+    if (  dkim_private_key_expanded[0] == '\0'
        || Ustrcmp(dkim_private_key_expanded, "0") == 0
        || Ustrcmp(dkim_private_key_expanded, "false") == 0
        )
index 1169f0e2c8e2aa6c29e57a578ce71b7f791638b5..d4fb23cb63a3666e3af6f96e1371eddf2aae2dde 100644 (file)
@@ -957,7 +957,7 @@ if (buffer)
     die_tainted(US"string_nextinlist", func, line);
   for (; *s; s++)
     {
-    if (*s == sep && (*(++s) != sep || sep_is_special)) break;
+    if (*s == sep && (*++s != sep || sep_is_special)) break;
     if (p < buflen - 1) buffer[p++] = *s;
     }
   while (p > 0 && isspace(buffer[p-1])) p--;