bpo-43636: Validate the version tag in _PyType_Lookup (GH-25032)

This commit is contained in:
Pablo Galindo 2021-03-27 03:51:46 +00:00 committed by GitHub
parent 027b669927
commit 11b85abbae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 1 deletions

View File

@ -424,7 +424,7 @@ assign_version_tag(struct type_cache *cache, PyTypeObject *type)
if (type->tp_version_tag == 0) {
// Wrap-around or just starting Python - clear the whole cache
type_cache_clear(cache, 1);
return 1;
return 0;
}
bases = type->tp_bases;
@ -3361,6 +3361,7 @@ _PyType_Lookup(PyTypeObject *type, PyObject *name)
#if MCACHE_STATS
cache->hits++;
#endif
assert(_PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG));
return entry->value;
}
@ -3398,6 +3399,7 @@ _PyType_Lookup(PyTypeObject *type, PyObject *name)
cache->misses++;
}
#endif
assert(_PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG));
Py_SETREF(entry->name, Py_NewRef(name));
}
return res;