Add footer length value checks
This commit is contained in:
parent
271ea3744e
commit
590072d1fb
2 changed files with 9 additions and 2 deletions
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue