Fix a small logic error in ast_event_iterator_next. The previous logic allowed for...
authorMark Michelson <mmichelson@digium.com>
Wed, 13 Feb 2008 00:55:09 +0000 (00:55 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 13 Feb 2008 00:55:09 +0000 (00:55 +0000)
to indicate there was more data than there really was, causing the iterator read beyond the end
of the event structure. This led to invalid memory reads and potential crashes.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@103559 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/event.c

index 705063b..0d139c5 100644 (file)
@@ -383,7 +383,7 @@ void ast_event_iterator_init(struct ast_event_iterator *iterator, const struct a
 int ast_event_iterator_next(struct ast_event_iterator *iterator)
 {
        iterator->ie = (struct ast_event_ie *) ( ((char *) iterator->ie) + sizeof(*iterator->ie) + ntohs(iterator->ie->ie_payload_len));
-       return ((iterator->event_len < (((char *) iterator->ie) - ((char *) iterator->event))) ? -1 : 0);
+       return ((iterator->event_len <= (((char *) iterator->ie) - ((char *) iterator->event))) ? -1 : 0);
 }
 
 enum ast_event_ie_type ast_event_iterator_get_ie_type(struct ast_event_iterator *iterator)