Hello, There is a bug on fakesmsc. It gives segmentation fault when the program reaches EOF. The simplest way to simulate the bug is:
$ ./test/fakesmsc < /dev/null 2012-09-11 13:56:02 [5946] [0] INFO: Debug_lvl = -1, log_file = <none>, log_lvl = 0 2012-09-11 13:56:02 [5946] [0] INFO: Entering interactive mode. Type your message on the command line 2012-09-11 13:56:02 [5946] [0] INFO: fakesmsc starting 2012-09-11 13:56:02 [5946] [0] DEBUG: Connecting to <127.0.0.1> 2012-09-11 13:56:02 [5946] [0] PANIC: ./test/fakesmsc() [0x805d5ad] 2012-09-11 13:56:02 [5946] [0] PANIC: linux-gate.so.1(__kernel_rt_sigreturn+0) [0xb772140c] 2012-09-11 13:56:02 [5946] [0] PANIC: ./test/fakesmsc(main+0x8a8) [0x804fc48] 2012-09-11 13:56:02 [5946] [0] PANIC: /usr/lib/libc.so.6(__libc_start_main+0xf5) [0xb7149605] 2012-09-11 13:56:02 [5946] [0] PANIC: ./test/fakesmsc() [0x804fdd9] Segmentation fault Real situations for it to happen include reading several messages from a file $ ./test/fakesmsc < file.txt (after reaching the end of file the program will crash) Or even reading from keyboard by simulating EOF when typing control+d. Attached is a patch that solves the issue. The program now quits when reaches end of file on stdin. This provides a great way to quit when in interactive mode: type your messages, then ctrl+d to quit (as it is on bash / python / perl / ruby and other interpreters). I've successfully applied it against revision 4995 using "patch -p0 < fakesmsc-gracefully-quits-when-eof.patch" on project root. Regards, Rudy Index: test/fakesmsc.c =================================================================== --- test/fakesmsc.c (revision 4995) +++ test/fakesmsc.c (working copy) @@ -307,6 +307,8 @@ /* something went off, let's see if it's stdin */ if (FD_ISSET(fileno(fp), &rset)) { /* stdin is readable */ cptr = fgets(buffer, IN_BUFSIZE, stdin); + if (!cptr) + goto over; if( strlen( cptr ) < 2 ) goto rcv; } else { /* timer kicked in */
fakesmsc-gracefully-quits-when-eof.patch
Description: Binary data