Found the bug:

mh_whom.c:65: warning: passing argument 4 of 'mu_argcv_get' from
incompatible pointer type

Specifically, this warning refers to the call:

  mu_argcv_get (str, ",", NULL, &argc, &argv);

in mh_alias_expand(), where argc is declared thus:

  size_t argc;

but mu_argcv_get() expects it to be an int:

extern int mu_argcv_get    (const char *command, const char *delim,
                         const char* cmnt,
                         int *argc, char ***argv);

That explains why I only saw the bug on a 64-bit system. I guess the
other addresses I tried just were just luckier in terms of what ended
up in the top 32 bits.

The obvious patch seems to fix it:

=====
--- mh/mh_whom.c
+++ mh/mh_whom.c
@@ -54,9 +54,9 @@
 int
 mh_alias_expand (char *str, mu_address_t *paddr, int *incl)
 {
-  size_t argc;
+  int argc;
   char **argv;
-  size_t i;
+  int i;
   char *buf;
   mu_address_t exaddr = NULL;
 
=====

-- 
Tim Bagot, BlueArc Engineering


Reply via email to