Mercurial > hg
changeset 24879:b3142ea2a0d4 stable
parsers: avoid signed integer overflow in calculation of leaf-node index
If v = -INT_MAX - 1, -v would exceed INT_MAX. I don't think this would cause
problems such as issue4627, but we can't blame it as a compiler bug because
signed integer overflow is undefined in C.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 29 Apr 2015 23:07:34 +0900 |
parents | e530cde6d115 |
children | 5e111acc1170 |
files | mercurial/parsers.c |
diffstat | 1 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/parsers.c Tue Apr 28 17:38:02 2015 -0700 +++ b/mercurial/parsers.c Wed Apr 29 23:07:34 2015 +0900 @@ -1312,7 +1312,7 @@ const char *n; Py_ssize_t i; - v = -v - 1; + v = -(v + 1); n = index_node(self, v); if (n == NULL) return -2; @@ -1368,7 +1368,7 @@ return 0; } if (v < 0) { - const char *oldnode = index_node(self, -v - 1); + const char *oldnode = index_node(self, -(v + 1)); int noff; if (!oldnode || !memcmp(oldnode, node, 20)) {