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_OK = 0,
HEXAGRAM_PCAPNG_ERROR_IO = 1, HEXAGRAM_PCAPNG_ERROR_IO = 1,
HEXAGRAM_PCAPNG_ERROR_TRUNCATED = 2, HEXAGRAM_PCAPNG_ERROR_TRUNCATED = 2,
HEXAGRAM_PCAPNG_ERROR_HANDLER = 3 HEXAGRAM_PCAPNG_ERROR_FORMAT = 3,
HEXAGRAM_PCAPNG_ERROR_HANDLER = 4
} hexagram_pcapng_error; } hexagram_pcapng_error;
typedef struct _hexagram_pcapng_header { typedef struct _hexagram_pcapng_header {

View file

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