Testsuite: munge retry DB dumps for long pathnames
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 6 May 2024 16:57:21 +0000 (17:57 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 6 May 2024 16:57:21 +0000 (17:57 +0100)
18 files changed:
src/src/EDITME
src/src/hintsdb.h
src/src/retry.c
src/src/transports/appendfile.c
test/runtest
test/scripts/2300-DBM/2301
test/scripts/2300-DBM/2302
test/stderr/0169
test/stderr/0386
test/stderr/0393
test/stderr/0404
test/stderr/0408
test/stderr/0487
test/stderr/5005
test/stderr/5006
test/stderr/5008
test/stdout/0264
test/stdout/0345

index 85d24f73fd935f1683da79d7e889bc768b7febd9..4a33677d5ca55fcbd8871cf277b179ad407702f1 100644 (file)
@@ -60,8 +60,8 @@
 # for you by the OS-specific configuration. If Exim compiles without any
 # problems, you probably do not have to worry about the DBM library. If you
 # do want or need to change it, you should first read the discussion in the
-# file doc/dbm.discuss.txt, which also contains instructions for testing Exim's
-# interface to the DBM library.
+# file doc/doc-txt/dbm.discuss.txt, which also contains instructions for testing
+# Exim's interface to the DBM library.
 
 # In Local/Makefiles blank lines and lines starting with # are ignored. It is
 # also permitted to use the # character to add a comment to a setting, for
index 2d7199edab4d44d76259413e1a233b1d025ce1d6..ed1b5566d5ad29d6414487fe8590796d2f68657a 100644 (file)
@@ -24,6 +24,10 @@ utilities as well as the main Exim binary. */
 
 #if defined(USE_TDB)
 
+# if defined(USE_DB) || defined(USE_GDBM)
+#  error USE_TDB conflict with alternate definition
+# endif
+
 /* ************************* tdb interface ************************ */
 /*XXX https://manpages.org/tdb/3 mentions concurrent writes.
 Could we lose the file lock? */
@@ -157,6 +161,10 @@ d->dptr = NULL;
 
 #elif defined USE_DB
 
+# if defined(USE_TDB) || defined(USE_GDBM)
+#  error USE_DB conflict with alternate definition
+# endif
+
 # include <db.h>
 
 /* 1.x did no locking
@@ -482,6 +490,10 @@ exim_datum_free(EXIM_DATUM * d)
 #elif defined USE_GDBM
 /*XXX TODO: exim's locfile not needed */
 
+# if defined(USE_TDB) || defined(USE_DB)
+#  error USE_GDBM conflict with alternate definition
+# endif
+
 # include <gdbm.h>
 
 /* Basic DB type */
@@ -609,7 +621,7 @@ static inline void
 exim_datum_free(EXIM_DATUM * d)
 { free(d->dptr); }
 
-/* size limit */
+/* size limit. GDBM is int-max limited, but we want to be less silly */
 
 # define EXIM_DB_RLIMIT        150
 
@@ -621,7 +633,7 @@ exim_datum_free(EXIM_DATUM * d)
 
 
 /* If none of USE_DB, USG_GDBM, or USE_TDB are set, the default is the NDBM
-interface */
+interface (which seems to be a wrapper for GDBM) */
 
 
 /********************* ndbm interface definitions **********************/
@@ -745,7 +757,7 @@ exim_datum_free(EXIM_DATUM * d)
 
 # define EXIM_DB_RLIMIT        150
 
-#endif /* USE_GDBM */
+#endif /* !USE_GDBM */
 
 
 
index 6b977dd58ba122d64c5d6dcfb71ffcf890833be3..6ccef4f98b0d91addda7d1e5ef1731cbd347dc55 100644 (file)
@@ -678,7 +678,13 @@ for (int i = 0; i < 3; i++)
          ? US string_printing(rti->message)
          : US"unknown error";
         message_length = Ustrlen(message);
-        if (message_length > EXIM_DB_RLIMIT) message_length = EXIM_DB_RLIMIT;
+        if (message_length > EXIM_DB_RLIMIT)
+         {
+         DEBUG(D_retry)
+           debug_printf_indent("truncating message from %u to %u bytes\n",
+                               message_length, EXIM_DB_RLIMIT);
+         message_length = EXIM_DB_RLIMIT;
+         }
 
         /* Read a retry record from the database or construct a new one.
         Ignore an old one if it is too old since it was last updated. */
index 0279659f255663a471fa7a06736bedb843ceda08..f495f957163baf2e9de0f5566f75bdb094380343 100644 (file)
@@ -1368,7 +1368,7 @@ if (!isdirectory)
      && ob->create_file == create_belowhome)
     if (is_tainted(path))
       {
-      DEBUG(D_transport) debug_printf("de-tainting path '%s'\n", path);
+      DEBUG(D_transport) debug_printf("below-home: de-tainting path '%s'\n", path);
       path = string_copy_taint(path, GET_UNTAINTED);
       }
 
@@ -2207,7 +2207,7 @@ else
   if (is_tainted(path))
     if (ob->create_file == create_belowhome)
       {
-      DEBUG(D_transport) debug_printf("de-tainting path '%s'\n", path);
+      DEBUG(D_transport) debug_printf("below-home: de-tainting path '%s'\n", path);
       path = string_copy_taint(path, GET_UNTAINTED);
       }
     else
index e8f1933f2c5f568940dbf0a8ca356d2844ef7c01..afcdd0c2f37ddac11d4c4dc92eb1ce637cf9df50 100755 (executable)
@@ -1061,6 +1061,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # gnutls version variances
     next if /^Error in the pull function./;
 
+    # Retry DB record gets truncated when TESTDIR is a long string
+    s/T:.*\(MTA-imposed quota exceeded while writing to\K.*$/ <elided>)/;
+
     # optional IDN2 variant conversions.  Accept either IDN1 or IDN2
     s/conversion  strasse.de/conversion  xn--strae-oqa.de/;
     s/conversion: german.xn--strae-oqa.de/conversion: german.straße.de/;
index 9ba0c50796aeef7dd89e0074525b7dbaba8abfda..82ec19da79be20c44ecd7fb3e61f69e777afb261 100644 (file)
@@ -1,4 +1,6 @@
 # lookup dbmjz
+# NB: the reference DB file is a Berkeley DB;
+# builds for other hints-DB interface will fail
 #
 exim -be
 ${lookup{testid:test.example.invalid:userPassword}dbmjz{DIR/aux-fixed/TESTNUM.testsasldb}{$value}fail}
index 4bdbc869eb4daec78aad3ffe55244e1962882bf8..4c8b7958bd8b07277d2e3bf6e71ad484aa659803 100644 (file)
@@ -1,4 +1,6 @@
 # lookup dbmnz
+# NB: the reference DB file is a Berkeley DB;
+# builds for other hints-DB interface will fail
 #
 exim -be '[${lookup{test}dbmnz{DIR/aux-fixed/TESTNUM.emptydbmnzlookup}}]'
 ****
index 55fd2bcb093293382ffe7b47ac47585d5682555e..9295d32fd29bcc86bb7588b298b6daafda28f4ac 100644 (file)
@@ -17,7 +17,7 @@ appendfile: mode=600 notify_comsat=0 quota=52428800 warning=41%
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
index ace0dc69cef464d06cf1da94fc6d3306916b248b..03c432317f04b9b9c9e0bb02f14c010a277b2b90 100644 (file)
@@ -364,7 +364,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/2'
+below-home: de-tainting path 'TESTSUITE/test-mail/2'
 lock name: TESTSUITE/test-mail/2.lock
 hitch name: TESTSUITE/test-mail/2.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -561,7 +561,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/2'
+below-home: de-tainting path 'TESTSUITE/test-mail/2'
 lock name: TESTSUITE/test-mail/2.lock
 hitch name: TESTSUITE/test-mail/2.lock.test.ex.dddddddd.pppppppp
 lock file created
index 75f92b9e14e6364fb1087d089ec91215f526e8b2..0a279503d7f1bc5dffb51b95e8772beb9c9bff3b 100644 (file)
@@ -22,7 +22,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -69,7 +69,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
@@ -110,7 +110,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
index bf8a60e5d65a6d4ec3549e13df6519924f0c7dad..fc8ad68e42ce4e9673a878f2a52804f1cdd4f2c3 100644 (file)
@@ -18604,7 +18604,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/sender'
+below-home: de-tainting path 'TESTSUITE/test-mail/sender'
 lock name: TESTSUITE/test-mail/sender.lock
 hitch name: TESTSUITE/test-mail/sender.lock.test.ex.dddddddd.pppppppp
 lock file created
index bbe75fb929e502b3c6034af54f88a3c1edd2717e..d14b9ea86a27ca3bb296f831c792f8c54e871f6d 100644 (file)
@@ -157,7 +157,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
index e703c88d907597e5e9694b35313e1803c6619e12..d8b9bc1d9b05009a583edb8bf2fa7f4bc9146052 100644 (file)
@@ -159,7 +159,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=0
   message_suffix=\n
   maildir_use_size_file=no
   locking by lockfile fcntl 
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 lock name: TESTSUITE/test-mail/userx.lock
 hitch name: TESTSUITE/test-mail/userx.lock.test.ex.dddddddd.pppppppp
 lock file created
index d9041e69fe15c853c932b11058a8a62ef14e741e..db4429ef0e322fb49738981c350fc56fe8c9c992 100644 (file)
@@ -124,7 +124,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/nofile'
+below-home: de-tainting path 'TESTSUITE/test-mail/nofile'
 ensuring maildir directories exist in TESTSUITE/test-mail/nofile
 created directory TESTSUITE/test-mail/nofile
 created directory TESTSUITE/test-mail/nofile/tmp
@@ -314,7 +314,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
 created directory TESTSUITE/test-mail/userx/new
@@ -506,7 +506,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 compiling RE '^(?:cur|new|\..*)$'
 using regex for maildir directory selection: ^(?:cur|new|\..*)$
@@ -716,7 +716,7 @@ appendfile: mode=600 notify_comsat=0 quota=500 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 compiling RE '^(?:cur|new|\..*)$'
 using regex for maildir directory selection: ^(?:cur|new|\..*)$
index 864a726f54ec7d4556b7343e00a7861460187080..a1c80c1a9169167ef9f92daf12c3a462a80c250b 100644 (file)
@@ -124,7 +124,7 @@ appendfile: mode=600 notify_comsat=0 quota=0 warning=50%
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=yes
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
index 648ebd0461191f894acfc74d3cdaeb6281e8b813..a8963123694908a763f6b4e77646e41f3dcfac4f 100644 (file)
@@ -17,7 +17,7 @@ appendfile: mode=600 notify_comsat=0 quota=1048576 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=no
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx
 created directory TESTSUITE/test-mail/userx/tmp
@@ -57,7 +57,7 @@ appendfile: mode=600 notify_comsat=0 quota=1048576 warning=0
   message_prefix=null
   message_suffix=null
   maildir_use_size_file=no
-de-tainting path 'TESTSUITE/test-mail/userx'
+below-home: de-tainting path 'TESTSUITE/test-mail/userx'
 ensuring maildir directories exist in TESTSUITE/test-mail/userx
 quota checks on directory TESTSUITE/test-mail/userx
 MUNGED: the check_dir_size lines have been sorted to ensure consistency
index 159ebfabb5818ec2f91d9d65992ae78673022877..a4c1fb4ff759198c724d4dc6155c39190533418c 100644 (file)
@@ -1,10 +1,10 @@
 +++++++++++++++++++++++++++
-  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/userx)
+  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 600
 +++++++++++++++++++++++++++
-  T:test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/notuser)
+  T:test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 1200
-  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/userx)
+  T:userx@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 600
 Message 10HmaX-000000005vi-0000 has been removed
 Message 10HmbA-000000005vi-0000 has been removed
index 1fa2305cd7d49d778b706091665fd6ce8941c992..a3c51fa64ee50ae511a1d8f19002847961fb02a9 100644 (file)
@@ -1,14 +1,14 @@
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20
 -rw------- 1 CALLER CALLER 0 May 10 2002 TESTSUITE/test-mail/a
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 0 *
-  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/CALLER)
+  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20
 +++++++++++++++++++++++++++
-  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/a)
+  T:a@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 0 *
-  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to TESTSUITE/test-mail/CALLER)
+  T:CALLER@test.ex -22 xxxx mailbox is full (MTA-imposed quota exceeded while writing to <elided>)
 first failed = time last try = time2 next try = time2 + 20