2.3.11.3 on 32bit platforms

Christian Göttsche cgzones at googlemail.com
Fri Aug 14 17:57:17 EEST 2020


See also the 32bit build failures on Debian:
https://buildd.debian.org/status/package.php?p=dovecot

There are some compiler warnings on 32bit architectures in test-mech.c

test-mech.c: In function ‘test_mechs’:
test-mech.c:326:61: warning: format ‘%lu’ expects argument of type
‘long unsigned int’, but argument 4 has type ‘unsigned int’
[-Wformat=]
  326 |   const char *testname = t_strdup_printf("auth mech %s %d/%lu",
      |                                                           ~~^
      |                                                             |
      |
long unsigned int
      |                                                           %u
test-mech.c:338:12: warning: passing argument 2 of
‘test_mech_construct_apop_challenge’ from incompatible pointer type
[-Wincompatible-pointer-types]
  338 |            &test_case->len);
      |            ^~~~~~~~~~~~~~~
      |            |
      |            size_t * {aka unsigned int *}
test-mech.c:195:77: note: expected ‘long unsigned int *’ but argument
is of type ‘size_t *’ {aka ‘unsigned int *’}
  195 | test_mech_construct_apop_challenge(unsigned int connect_uid,
unsigned long *len_r)
      |
~~~~~~~~~~~~~~~^~~~~


But the unit test still fails after a commit like:

diff --git a/src/auth/test-mech.c b/src/auth/test-mech.c
index cf05370..90c2215 100644
--- a/src/auth/test-mech.c
+++ b/src/auth/test-mech.c
@@ -192,7 +192,7 @@ static void test_mech_handle_challenge(struct
auth_request *request,
 }

 static inline const unsigned char *
-test_mech_construct_apop_challenge(unsigned int connect_uid, unsigned
long *len_r)
+test_mech_construct_apop_challenge(unsigned int connect_uid, size_t *len_r)
 {
  string_t *apop_challenge = t_str_new(128);

@@ -323,7 +323,7 @@ static void test_mechs(void)
  struct test_case *test_case = &tests[running_test];
  const struct mech_module *mech = test_case->mech;
  struct auth_request *request;
- const char *testname = t_strdup_printf("auth mech %s %d/%lu",
+ const char *testname = t_strdup_printf("auth mech %s %d/%zu",
        mech->mech_name,
        running_test+1,
        N_ELEMENTS(tests));


More information about the dovecot mailing list