bug 29 patch

remotes/origin/master-1.0.x
Gurvinder Singh 16 years ago committed by Victor Julien
parent ae94b102cb
commit a19fbf22e2

@ -495,9 +495,10 @@ static int HandleSegmentStartsBeforeListSegment(TcpStream *stream,
end_after = TRUE; end_after = TRUE;
overlap_point = list_seg->seq; overlap_point = list_seg->seq;
SCLogDebug("starts before list seg, ends after list end: seg->seq " SCLogDebug("starts before list seg, ends after list end: seg->seq "
"%" PRIu32 ", list_seg->seq %" PRIu32 ", " "%" PRIu32 ", seg->payload_len %"PRIu32" list_seg->seq "
"list_seg->payload_len %" PRIu32 " overlap is %" PRIu32 "", "%" PRIu32 ", list_seg->payload_len %" PRIu32 " overlap is"
seg->seq, list_seg->seq, list_seg->payload_len, overlap); " %" PRIu32 "", seg->seq, list_seg->seq,
list_seg->payload_len, overlap, seg->payload_len);
} }
if (overlap > 0) { if (overlap > 0) {
@ -654,8 +655,7 @@ static int HandleSegmentStartsBeforeListSegment(TcpStream *stream,
copy_len); copy_len);
/* copy the part after list_seg */ /* copy the part after list_seg */
copy_len = packet_length - ((list_seg->seq + copy_len = packet_length - list_seg->payload_len;
list_seg->payload_len) - seg->seq);
StreamTcpSegmentDataReplace(new_seg, seg, (list_seg->seq + StreamTcpSegmentDataReplace(new_seg, seg, (list_seg->seq +
list_seg->payload_len), copy_len); list_seg->payload_len), copy_len);
@ -1537,10 +1537,10 @@ void StreamTcpSegmentDataReplace(TcpSegment *dst_seg, TcpSegment *src_seg,
dst_pos = dst_seg->seq - start_point; dst_pos = dst_seg->seq - start_point;
} }
BUG_ON(len + dst_pos > dst_seg->payload_len); BUG_ON(((len + dst_pos) - 1) > dst_seg->payload_len);
for (seq = start_point; SEQ_LT(seq, (start_point + len)); seq++) { for (seq = start_point; SEQ_LT(seq, (start_point + len)); seq++) {
if (dst_pos >= dst_seg->payload_len) if (dst_pos > dst_seg->payload_len)
abort(); abort();
dst_seg->payload[dst_pos] = src_seg->payload[s_cnt]; dst_seg->payload[dst_pos] = src_seg->payload[s_cnt];

Loading…
Cancel
Save