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_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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue