(/home/sate/Testcases/c/cve/dovecot-1.2.0/src/lib-mail/message-parser.c) |
| |
| 799 | | | void (struct message_parser_ctx *ctx, |
| 800 | | | struct message_size *hdr_size, |
| 801 | | | *callback, |
| 802 | | | void *context) |
| 803 | | | { |
| 804 | | | struct message_block block; |
| 805 | | | int ret; |
| 806 | | | |
| 807 | [+] | | while ((ret = message_parser_parse_next_block(ctx, &block)) > 0) { |
Event 1:
ctx is passed to message_parser_parse_next_block() as the first argument.
hide
|
|
 |
| 808 | | | callback(block.part, block.hdr, context); |
| 809 | | | |
| 810 | | | if (block.hdr == NULL) |
| 811 | | | break; |
| 812 | | | } |
| 813 | | | i_assert(ret != 0);
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 9:
Skipping " if". ret != 0 evaluates to true.
hide
Event 10:
Skipping " if". !(ret != 0) evaluates to false.
hide
Event 11:
Skipping " if". !!(ret != 0) evaluates to true.
hide
Event 12:
Skipping " if". !!!(ret != 0) evaluates to false.
hide
Event 13:
Skipping " if". __builtin_expect(...) evaluates to false.
hide
|
|
| 814 | | | |
| 815 | | | if (ret < 0) { |
Event 14:
Taking true branch. ret < 0 evaluates to true.
hide
|
|
| 816 | | | |
| 817 | | | callback(ctx->part, NULL, context); |
| 818 | | | } |
| 819 | | | |
| 820 | | | *hdr_size = ctx->part->; |
Null Pointer Dereference
ctx->part is dereferenced here, but it is NULL. The issue can occur if the highlighted code executes. See related event 7. Show: All events | Only primary events |
|
| |