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