Bug #41
closedProcessing the attached pcap causes the engine to segv inside of AppLayerHandleMsg
Description
ulimit -c unlimited; src/suricata -c ../suricata117.yaml -l ./ -r defconsegv-fuzz-2009-12-31-10-50-2337-58989-stream0-2.pcap
TmqDebugList: id 0, name 'pickup-queue', len 41
TmqDebugList: id 1, name 'decode-queue1', len 9
TmqDebugList: id 2, name 'stream-queue1', len 0
TmqDebugList: id 3, name 'alert-queue1', len 0
TmqDebugList: id 4, name 'alert-queue2', len 0
TmqDebugList: id 5, name 'alert-queue3', len 0
TmqDebugList: id 6, name 'alert-queue4', len 0
Segmentation fault (core dumped)
gdb src/suricata core
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/coz/downloads/suricatafuzz1/src/suricata...done.
[New Thread 22042]
[New Thread 22038]
[New Thread 22039]
[New Thread 22037]
[New Thread 22041]
[New Thread 22049]
[New Thread 22048]
[New Thread 22044]
[New Thread 22043]
[New Thread 22047]
[New Thread 22045]
[New Thread 22046]
warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libhtp-0.1.so.1...done.
Loaded symbols for /usr/lib/libhtp-0.1.so.1
Reading symbols from /usr/lib/libpcap.so.0.8...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libpcap.so.0.8
Reading symbols from /usr/local/lib/libpfring.so...done.
Loaded symbols for /usr/local/lib/libpfring.so
Reading symbols from /usr/lib/libnet.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libnet.so.1
Reading symbols from /usr/lib/libnetfilter_queue.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libnetfilter_queue.so.1
Reading symbols from /usr/lib/libnfnetlink.so.0...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libnfnetlink.so.0
Reading symbols from /lib/libpthread.so.0...Reading symbols from /usr/lib/debug/lib/libpthread-2.10.1.so...done.
(no debugging symbols found)...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /usr/lib/libyaml-0.so.1...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libyaml-0.so.1
Reading symbols from /lib/libpcre.so.3...(no debugging symbols found)...done.
Loaded symbols for /lib/libpcre.so.3
Reading symbols from /lib/libc.so.6...Reading symbols from /usr/lib/debug/lib/libc-2.10.1.so...done.
(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/libz.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/libz.so.1
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib/ld-2.10.1.so...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Core was generated by `src/suricata c ../suricata117.yaml -l ./ -r defconsegv-fuzz-2009-12-31-10-50-2'.>flow->protoctx;
Program terminated with signal 11, Segmentation fault.
#0 0x000000000048f8de in AppLayerHandleMsg (smsg=0x7fdbccd4d940, need_lock=0 '\000') at app-layer-detect-proto.c:330
330 TcpSession *ssn = smsg
(gdb) bt full
#0 0x000000000048f8de in AppLayerHandleMsg (smsg=0x7fdbccd4d940, need_lock=0 '\000') at app-layer-detect-proto.c:330
alproto = 0
r = 0
ssn = 0x7fdbccd017f0
#1 0x0000000000484b34 in StreamTcpReassembleProcessAppLayer (ra_ctx=0x13b8ad0) at stream-tcp-reassemble.c:1485
smsg = 0x7fdbccd4d940
r = 0
#2 0x00000000004804d3 in StreamTcpPacket (tv=0x108db80, p=0xb26460, stt=0x13b9d50) at stream-tcp.c:2304
ssn = 0x7fdbccd017f0
#3 0x000000000048056d in StreamTcp (tv=0x108db80, p=0xb26460, data=0x13b9d50, pq=0x108dec0) at stream-tcp.c:2322
stt = 0x13b9d50
ret = TM_ECODE_OK
#4 0x00000000004724cb in TmThreadsSlot1 (td=0x108db80) at tm-threads.c:325
tv = 0x108db80
s = 0x108de90
p = 0xb26460
run = 1 '\001'
r = TM_ECODE_OK
#5 0x00007fdbdbba0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
__res = <value optimized out>
pd = 0x7fdbd9ec1910
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140582230694160, -1901112266662846520, 140735308340576, 0, 0, 3, 1885415804905480136, 1885410667850653640}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {
prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
#6 0x00007fdbdb4bb7bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locals.
#7 0x0000000000000000 in ?? ()
No symbol table info available.
Files
Updated by Will Metcalf almost 15 years ago
I waited to file this bug in hopes that this would be fixed along with the existing issue causing an abort() in the stream handler however after applying Gurvinder's latest patch the issue still exists.
Updated by Gurvinder Singh almost 15 years ago
- File 0002-bug-41-patch.patch 0002-bug-41-patch.patch added
- Status changed from New to Assigned
- Assignee changed from OISF Dev to Gurvinder Singh
The current segv was due to wrong packet length at seg start at same case in stream reassembly. The current patch has fixed the isssue.
Will this is incremental patch to the my last stream patch.
Updated by Victor Julien almost 15 years ago
- Status changed from Assigned to Closed