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));