p/t_strdup_until wasn't returning a terminated string: Index: src/lib/strfuncs.c =================================================================== RCS file: /home/cvs/dovecot/src/lib/strfuncs.c,v retrieving revision 1.41 diff -u -p -r1.41 strfuncs.c --- src/lib/strfuncs.c 18 Jul 2004 01:44:59 -0000 1.41 +++ src/lib/strfuncs.c 31 Jul 2004 08:43:35 -0000 @@ -154,6 +154,7 @@ char *p_strdup_until(pool_t pool, const mem = p_malloc(pool, size + 1); memcpy(mem, start, size); + mem[size] = '\0'; return mem; } Noticed while testing $-terminated modular crypt strings, because I didn't (and still don't) understand the reason for line 65 of password-scheme.c; ... /* stop at next '$' */ p = strchr(p+3, '$'); if (p != NULL) *password = t_strdup_until(*password, p); ... and I have ln -s 'J' /etc/malloc.conf on freebsd 5-current, so malloc'd memory isn't zeroed, causing a segfault. Is there some system that appends dollar signs to MCF formats? The commit message for r1.3 of password-scheme.c doesn't explain. Joshua. -- Joshua Goodall "as modern as tomorrow afternoon" joshua@roughtrade.net - FW109