Add footer length value checks

This commit is contained in:
XANTRONIX Development 2018-12-16 03:00:28 -06:00
parent 271ea3744e
commit 590072d1fb
2 changed files with 9 additions and 2 deletions

View file

@ -7,7 +7,8 @@ enum {
HEXAGRAM_PCAPNG_ERROR_OK = 0,
HEXAGRAM_PCAPNG_ERROR_IO = 1,
HEXAGRAM_PCAPNG_ERROR_TRUNCATED = 2,
HEXAGRAM_PCAPNG_ERROR_HANDLER = 3
HEXAGRAM_PCAPNG_ERROR_FORMAT = 3,
HEXAGRAM_PCAPNG_ERROR_HANDLER = 4
} hexagram_pcapng_error;
typedef struct _hexagram_pcapng_header {

View file

@ -32,7 +32,7 @@ ssize_t hexagram_pcapng_stream_read(fd, handler, error)
total += readlen;
if (handler(fd, header.type, header.length) < 0) {
if (handler(fd, header.type, header.length - sizeof(header) - sizeof(footer)) < 0) {
*error = HEXAGRAM_PCAPNG_ERROR_HANDLER;
goto error_io;
@ -49,6 +49,12 @@ ssize_t hexagram_pcapng_stream_read(fd, handler, error)
goto error_io;
}
if (footer.length != header.length) {
*error = HEXAGRAM_PCAPNG_ERROR_FORMAT;
goto error_io;
}
}
*error = HEXAGRAM_PCAPNG_ERROR_OK;