Hi,

After some looking through the code, I've found the error. In db_getmailboxname() in db.c, there were some strncpy with a third argument that was to big. strncpy then tries to fill the target string with '\0's, which results in a segfault. Strange thing is, is does not segfault on OpenBSD. I tried it on a Linux machine, and indeed, it segfaulted :).

Anyway, the code is fixed, and it works. Kenneth, thanks for the useful
info. Nice to see a list of your software, the conf-file, the circumstances of the crash and the trace file. This is how all bug-reports should be :)

Ilja

Kenneth Skiles wrote:

Hi All,
>
<snip>

Here is the log dump:
Jan 31 23:24:35 build dbmail/imap4d[193]: PerformChildTask(): incoming
connection from [68.156.23.40 (fire.kaskiles.org)]
Jan 31 23:24:35 build dbmail/imap4d[193]: PerformChildTask(): client
info init complete, calling client handler
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): line read
for PID 193
Jan 31 23:24:35 build dbmail/imap4d[193]: COMMAND: [A00000 CAPABILITY]
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Executing
command capability...
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Finished
command capability
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): line read
for PID 193
Jan 31 23:24:35 build dbmail/imap4d[193]: COMMAND: [A00001 LOGIN myuser
mypasswd]
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[0]: 'myuser'
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[1]: 'mypasswd'
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Executing
command login...
Jan 31 23:24:35 build dbmail/imap4d[193]: _ic_login(): trying to
validate user
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [SELECT user_idnr, passwd, encryption_type FROM users WHERE userid
= 'myuser']
Jan 31 23:24:35 build dbmail/imap4d[193]: authsql.c,auth_validate:
validating using cleartext passwords
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [UPDATE users SET last_login = '2004-01-31 23:24:35' WHERE
user_idnr = '1']
Jan 31 23:24:35 build dbmail/imap4d[193]: _ic_login(): user (id:1, name
myuser) tries login^M
Jan 31 23:24:35 build dbmail/imap4d[193]: _ic_login(): user (id 1, name
myuser) login accepted @ 2004-01-31 23:24:35^M
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Finished
command login
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): line read
for PID 193
Jan 31 23:24:35 build dbmail/imap4d[193]: COMMAND: [A00002 NAMESPACE]
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Executing
command namespace...
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Finished
command namespace
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): line read
for PID 193
Jan 31 23:24:35 build dbmail/imap4d[193]: COMMAND: [A00003 LSUB "" "*"]
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[0]: ''
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[1]: '*'
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Executing
command lsub...
Jan 31 23:24:35 build dbmail/imap4d[193]: ic_list(): build the pattern:
[^.*$]
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [SELECT mbx.name, mbx.mailbox_idnr, mbx.owner_idnr FROM mailboxes
mbx LEFT JOIN acl ON acl.mailbox_id = mbx.mailbox_idnr JOIN subscription
sub ON sub.user_id = '1' AND sub.mailbox_id = mbx.mailbox_idnr WHERE
mbx.owner_idnr = '1' OR (acl.user_id = '1' AND acl.lookup_flag = '1')
GROUP BY mbx.name,
mbx.mailbox_idnr, mbx.owner_idnr]
Jan 31 23:24:35 build dbmail/imap4d[193]: db.c,db_findmailbox_by_regex:
found [0] mailboxes
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Finished
command lsub
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): line read
for PID 193
Jan 31 23:24:35 build dbmail/imap4d[193]: COMMAND: [A00004 LIST ""
INBOX]
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[0]: ''
Jan 31 23:24:35 build dbmail/imap4d[193]: arg[1]: 'INBOX'
Jan 31 23:24:35 build dbmail/imap4d[193]: IMAPClientHandler(): Executing
command list...
Jan 31 23:24:35 build dbmail/imap4d[193]: ic_list(): build the pattern:
[^INBOX$]
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [SELECT mbx.name, mbx.mailbox_idnr, mbx.owner_idnr FROM mailboxes
mbx LEFT JOIN acl ON mbx.mailbox_idnr = acl.mailbox_id WHERE
(acl.user_id = '1' AND acl.lookup_flag = '1') OR mbx.owner_idnr = '1']
Jan 31 23:24:35 build dbmail/imap4d[193]:
db.c,db_list_mailboxes_by_regex: comparing mailbox [INBOX] to regular
expression
Jan 31 23:24:35 build dbmail/imap4d[193]:
db.c,db_list_mailboxes_by_regex: regex match INBOX
Jan 31 23:24:35 build dbmail/imap4d[193]: db.c,db_findmailbox_by_regex:
found [1] mailboxes
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [SELECT owner_idnr FROM mailboxes WHERE mailbox_idnr = '1']
Jan 31 23:24:35 build dbmail/imap4d[193]: dbmysql.c,db_query: executing
query [SELECT name FROM mailboxes WHERE mailbox_idnr
= '1']
Jan 31 23:24:35 build dbmail/imap4d[193]: ChildSighandler(): got signal
[11]
Jan 31 23:24:35 build dbmail/imap4d[193]: ChildSighandler(): cannot
ignore this. Terminating
Jan 31 23:24:35 build dbmail/imap4d[189]: ParentSigHandler(): got signal
[17]
Jan 31 23:24:35 build dbmail/imap4d[189]: StartServer(): child [193] has
exited
Jan 31 23:24:35 build dbmail/imap4d[189]: StartServer(): creating new
child
Jan 31 23:24:35 build dbmail/imap4d[344]: CreateChild(): signal handler
placed, going to perform task now
Jan 31 23:24:35 build dbmail/imap4d[344]: PerformChildTask(): waiting
for connection


_______________________________________________
Dbmail-dev mailing list
[email protected]
http://twister.fastxs.net/mailman/listinfo/dbmail-dev

--
IC&S
Stadhouderslaan 57
3583 JD Utrecht

PGP-key:
http://www.ic-s.nl/keys/ilja.txt

Reply via email to