index: move check for too large capacity into nt_init()
It's clearer to have the check just before the allocation happens.
Differential Revision: https://phab.mercurial-scm.org/D4164
--- a/mercurial/cext/revlog.c Wed Aug 08 22:26:57 2018 -0700
+++ b/mercurial/cext/revlog.c Wed Aug 08 23:36:15 2018 -0700
@@ -1069,6 +1069,10 @@
self->capacity = capacity;
self->depth = 0;
self->splits = 0;
+ if ((size_t)self->capacity > INT_MAX / sizeof(nodetreenode)) {
+ PyErr_SetString(PyExc_ValueError, "overflow in init_nt");
+ return -1;
+ }
self->nodes = calloc(self->capacity, sizeof(nodetreenode));
if (self->nodes == NULL) {
PyErr_NoMemory();
@@ -1133,10 +1137,6 @@
static int index_init_nt(indexObject *self)
{
if (self->nt == NULL) {
- if ((size_t)self->raw_length > INT_MAX / sizeof(nodetreenode)) {
- PyErr_SetString(PyExc_ValueError, "overflow in index_init_nt");
- return -1;
- }
self->nt = PyMem_Malloc(sizeof(nodetree));
if (self->nt == NULL) {
PyErr_NoMemory();