Merge pull request #3 from Azure/mrenz/temp

Fix a few minor issues found via fuzzing
This commit is contained in:
Matt Renzelmann 2019-12-19 15:17:49 -08:00 коммит произвёл GitHub
Родитель 76882538ff 42629b8079
Коммит 076b057cf1
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -48,7 +48,8 @@ size_t ConfigStore_GetKvpFullSize(const ConfigStoreKvpHeader *p, const ConfigSto
bool ConfigStore_CanDereferenceKvp(const ConfigStoreKvpHeader *p, const ConfigStoreKvpHeader *pEnd)
{
return p && (sizeof(*p) <= p->size) && (p->size <= GetDistance(p, pEnd));
bool ret = p && pEnd && GetDistance(p, pEnd) >= sizeof(*p) && (sizeof(*p) <= p->size) && (p->size <= GetDistance(p, pEnd));
return ret;
}
ConfigStoreKvpHeader *ConfigStore_GetNextKvp(const ConfigStoreKvpHeader *p,
@ -62,7 +63,13 @@ ConfigStoreKvpHeader *ConfigStore_GetNextKvp(const ConfigStoreKvpHeader *p,
} else {
dist = GetDistance(p, pEnd);
}
return (ConfigStoreKvpHeader *)((ptrdiff_t)p + dist);
ConfigStoreKvpHeader *retval = (ConfigStoreKvpHeader *)((ptrdiff_t)p + dist);
if (!ConfigStore_CanDereferenceKvp(retval, pEnd)) {
retval = (ConfigStoreKvpHeader *) pEnd;
}
return retval;
}
uint32_t ConfigStore_AddCrc(uint32_t init, const uint8_t *data, size_t size)