add sanitiy check to verify that the aux buffer is not corrupted
This commit is contained in:
parent
7bb7b75bf5
commit
60c216bc9e
@ -64,11 +64,7 @@ void init_auxiliary_buffer(auxilary_buffer_t *auxilary_buffer)
|
|||||||
|
|
||||||
VOLATILE_WRITE_16(auxilary_buffer->header.version, QEMU_PT_VERSION);
|
VOLATILE_WRITE_16(auxilary_buffer->header.version, QEMU_PT_VERSION);
|
||||||
|
|
||||||
uint16_t hash =
|
uint16_t hash = AUX_BUFFER_HASH;
|
||||||
(sizeof(auxilary_buffer_header_t) + sizeof(auxilary_buffer_cap_t) +
|
|
||||||
sizeof(auxilary_buffer_config_t) + sizeof(auxilary_buffer_result_t) +
|
|
||||||
sizeof(auxilary_buffer_misc_t)) %
|
|
||||||
0xFFFF;
|
|
||||||
|
|
||||||
VOLATILE_WRITE_16(auxilary_buffer->header.hash, hash);
|
VOLATILE_WRITE_16(auxilary_buffer->header.hash, hash);
|
||||||
|
|
||||||
@ -83,6 +79,13 @@ void check_auxiliary_config_buffer(auxilary_buffer_t *auxilary_buffer,
|
|||||||
if (changed) {
|
if (changed) {
|
||||||
uint8_t aux_byte;
|
uint8_t aux_byte;
|
||||||
|
|
||||||
|
/* sanitiy check to verify that the buffer is not corrupted */
|
||||||
|
uint16_t _hash = AUX_BUFFER_HASH;
|
||||||
|
uint64_t _magic = AUX_MAGIC;
|
||||||
|
|
||||||
|
assert(memcmp(&auxilary_buffer->header.magic, &_magic, sizeof(auxilary_buffer->header.magic)) == 0);
|
||||||
|
assert(memcmp(&auxilary_buffer->header.hash, &_hash, sizeof(auxilary_buffer->header.hash)) == 0);
|
||||||
|
|
||||||
VOLATILE_READ_8(aux_byte, auxilary_buffer->configuration.redqueen_mode);
|
VOLATILE_READ_8(aux_byte, auxilary_buffer->configuration.redqueen_mode);
|
||||||
if (aux_byte) {
|
if (aux_byte) {
|
||||||
/* enable redqueen mode */
|
/* enable redqueen mode */
|
||||||
|
@ -152,6 +152,12 @@ typedef struct auxilary_buffer_s {
|
|||||||
|
|
||||||
} __attribute__((packed)) auxilary_buffer_t;
|
} __attribute__((packed)) auxilary_buffer_t;
|
||||||
|
|
||||||
|
#define AUX_BUFFER_HASH (( sizeof(auxilary_buffer_header_t) +\
|
||||||
|
sizeof(auxilary_buffer_cap_t) +\
|
||||||
|
sizeof(auxilary_buffer_config_t) +\
|
||||||
|
sizeof(auxilary_buffer_result_t) +\
|
||||||
|
sizeof(auxilary_buffer_misc_t)) % 0xFFFF)
|
||||||
|
|
||||||
void init_auxiliary_buffer(auxilary_buffer_t *auxilary_buffer);
|
void init_auxiliary_buffer(auxilary_buffer_t *auxilary_buffer);
|
||||||
void check_auxiliary_config_buffer(auxilary_buffer_t *auxilary_buffer,
|
void check_auxiliary_config_buffer(auxilary_buffer_t *auxilary_buffer,
|
||||||
auxilary_buffer_config_t *shadow_config);
|
auxilary_buffer_config_t *shadow_config);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user