(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib-storage/index/mbox/istream-raw-mbox.c) |
| |
| 688 | | | int istream_raw_mbox_seek(struct istream *stream, uoff_t offset) |
| 689 | | | { |
| 690 | | | struct raw_mbox_istream *rstream = |
| 691 | | | (struct raw_mbox_istream *)stream->real_stream; |
Event 1:
rstream is set to stream->real_stream.
hide
|
|
| 692 | | | bool check; |
| 693 | | | |
| 694 | | | i_assert(rstream->locked);
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/macros.h |
| |
189 | #define i_assert(expr) STMT_START{ \ |
190 | if (unlikely(!(expr))) \ |
191 | i_panic("file %s: line %d (%s): assertion failed: (%s)", \ |
192 | __FILE__, \ |
193 | __LINE__, \ |
194 | __PRETTY_FUNCTION__, \ |
195 | #expr); }STMT_END |
| |
|
Event 2:
Skipping " if". !rstream->locked evaluates to false.
hide
Event 3:
Skipping " if". !!rstream->locked evaluates to true.
hide
Event 4:
Skipping " if". !!!rstream->locked evaluates to false.
hide
Event 5:
Skipping " if". __builtin_expect(...) evaluates to false.
hide
|
|
| 695 | | | |
| 696 | | | rstream->corrupted = FALSE; |
| 697 | | | rstream->eof = FALSE; |
| 698 | | | rstream->istream.istream.eof = FALSE; |
| 699 | | | |
| 700 | | | |
| 701 | | | |
| 702 | | | if (rstream->mail_size != (uoff_t)-1 && rstream->seeked && |
Event 6:
Skipping " if". rstream->mail_size != (uoff_t)-1 evaluates to false.
hide
|
|
| 703 | | | rstream->hdr_offset + rstream->mail_size == offset) { |
| 704 | | | istream_raw_mbox_next(stream, (uoff_t)-1); |
| 705 | | | return 0; |
| 706 | | | } |
| 707 | | | |
| 708 | | | if (offset == rstream->from_offset && rstream->seeked) { |
Event 7:
Taking false branch. offset == rstream->from_offset evaluates to false.
hide
|
|
| 709 | | | |
| 710 | | | offset = rstream->hdr_offset; |
| 711 | | | check = offset == 0; |
| 712 | | | } else { |
| 713 | | | rstream->body_offset = (uoff_t)-1; |
| 714 | | | rstream->mail_size = (uoff_t)-1; |
| 715 | | | rstream->received_time = (time_t)-1; |
| 716 | | | rstream->next_received_time = (time_t)-1; |
| 717 | | | rstream-> = FALSE; |
| 718 | | | |
| 719 | | | i_free(rstream->sender);
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/imem.h |
| |
14 | #define i_free(mem) \ |
15 | STMT_START { \ |
16 | free(mem); \ |
17 | (mem) = NULL; \ |
18 | } STMT_END |
| |
|
| 720 | | | rstream->sender = NULL; |
| 721 | | | i_free(rstream->next_sender);
x /home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib/imem.h |
| |
14 | #define i_free(mem) \ |
15 | STMT_START { \ |
16 | free(mem); \ |
17 | (mem) = NULL; \ |
18 | } STMT_END |
| |
|
| 722 | | | rstream->next_sender = NULL; |
Event 8:
rstream->next_sender is set to NULL, where rstream is stream->real_stream. - Determines the freed value in the Free Null Pointer warning later.
See related event 1.
hide
|
|
| 723 | | | |
| 724 | | | rstream->from_offset = offset; |
| 725 | | | rstream->hdr_offset = offset; |
| 726 | | | check = TRUE; |
Event 9:
!0 evaluates to true.
hide
|
|
| 727 | | | } |
| 728 | | | rstream->seeked = TRUE; |
Event 10:
!0 evaluates to true.
hide
|
|
| 729 | | | |
| 730 | | | i_stream_seek_mark(stream, offset); |
| 731 | | | i_stream_seek_mark(rstream->istream.parent, offset); |
| 732 | | | |
| 733 | | | if (check) |
Event 11:
Taking true branch. check evaluates to true.
hide
|
|
| 734 | [+] | | (void)i_stream_raw_mbox_read(&rstream->istream); |
Event 12:
&rstream->istream, which evaluates to stream->real_stream, is passed to i_stream_raw_mbox_read(). See related event 1.
hide
|
|
 |
| |