Merge pull request #4415 from assimp/kimkulling/fix_negative_offset_in_hast_access-issue4414
Fix possible negative array accesspull/4409/head^2
commit
1b2f705ee4
|
@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2022, assimp team
|
Copyright (c) 2006-2022, assimp team
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -76,6 +75,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) {
|
inline uint32_t SuperFastHash (const char * data, uint32_t len = 0, uint32_t hash = 0) {
|
||||||
uint32_t tmp;
|
uint32_t tmp;
|
||||||
int rem;
|
int rem;
|
||||||
|
size_t offset;
|
||||||
|
|
||||||
if (!data) return 0;
|
if (!data) return 0;
|
||||||
if (!len)len = (uint32_t)::strlen(data);
|
if (!len)len = (uint32_t)::strlen(data);
|
||||||
|
@ -96,7 +96,11 @@ int rem;
|
||||||
switch (rem) {
|
switch (rem) {
|
||||||
case 3: hash += get16bits (data);
|
case 3: hash += get16bits (data);
|
||||||
hash ^= hash << 16;
|
hash ^= hash << 16;
|
||||||
hash ^= data[sizeof (uint16_t)] << 18;
|
offset = static_cast<size_t>(sizeof(uint16_t));
|
||||||
|
if (offset < 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
hash ^= data[offset] << 18;
|
||||||
hash += hash >> 11;
|
hash += hash >> 11;
|
||||||
break;
|
break;
|
||||||
case 2: hash += get16bits (data);
|
case 2: hash += get16bits (data);
|
||||||
|
|
Loading…
Reference in New Issue