]> git.ipfire.org Git - thirdparty/git.git/commit - shallow.c
shallow.c: avoid theoretical pointer wrap-around
authorRasmus Villemoes <rv@rasmusvillemoes.dk>
Tue, 6 Dec 2016 12:53:37 +0000 (19:53 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 7 Dec 2016 23:44:31 +0000 (15:44 -0800)
commit381aa8e73070646933520e1133a81ab4ba383891
tree5b01c4654b226888dbb6a8cd12e9b61e57b36ebc
parentf2386c6b77e236fc104d3a024e5d314c23a941eb
shallow.c: avoid theoretical pointer wrap-around

The expression info->free+size is technically undefined behaviour in
exactly the case we want to test for. Moreover, the compiler is likely
to translate the expression to

  (unsigned long)info->free + size > (unsigned long)info->end

where there's at least a theoretical chance that the LHS could wrap
around 0, giving a false negative.

This might as well be written using pointer subtraction avoiding these
issues.

Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
shallow.c