Milter-greylist-4.1.10 segfaults on regular expressions
2009-02-04 by reschauzier
Milter-greylist-4.1.10 seems to have a problem with handling (extended) regular expressions. From the log: Feb 4 08:53:49 sun milter-greylist: regex //[0-9]+([^0-9])[0-9]+\1[0-9]+\1[0-9]+// against "[122.231.167.11]": match[1] = "." After this, the daemon segfaults. The back trace reads: Core was generated by `/usr/bin/milter-greylist -P /var/milter-greylist/milter-greylist.pid -p /var/mi'. Program terminated with signal 6, Aborted. #0 0x00110402 in __kernel_vsyscall () (gdb) bt #0 0x00110402 in __kernel_vsyscall () #1 0x00c34ba0 in raise () from /lib/libc.so.6 #2 0x00c364b1 in abort () from /lib/libc.so.6 #3 0x00c6adfb in __libc_message () from /lib/libc.so.6 #4 0x00c760db in free () from /lib/libc.so.6 #5 0x0804aadf in smtp_reply_free (sr=0x2) at milter-greylist.c:2083 #6 0x0804c5ce in mlfi_close (ctx=0xb610e2b3) at milter-greylist.c:1192 #7 0x080678b8 in mi_engine () #8 0x080645c8 in mi_handle_session () #9 0x08062dad in mi_thread_handle_wrapper () #10 0x00db645b in start_thread () from /lib/libpthread.so.0 #11 0x00cda23e in clone () from /lib/libc.so.6 (gdb) Going through the code, it may just be that sr->sr_nmatch in smtp_reply_free() is not reset properly after a match?