Code

pack-objects: avoid reading uninitalized data
authorJeff King <peff@peff.net>
Thu, 23 Oct 2008 04:31:03 +0000 (04:31 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 2 Nov 2008 06:46:40 +0000 (23:46 -0700)
commit421b488a58fea89ceb55d5b358738e9251d44f5e
tree8fe7667f7e5adef5e98d5da98dbeb1eff2404723
parent13494ed14c3539b3e36ff47d1d8b65f5a9a3043b
pack-objects: avoid reading uninitalized data

In the main loop of find_deltas, we do:

  struct object_entry *entry = *list++;
  ...
  if (!*list_size)
  ...
  break

Because we look at and increment *list _before_ the check of
list_size, in the very last iteration of the loop we will
look at uninitialized data, and increment the pointer beyond
one past the end of the allocated space. Since we don't
actually do anything with the data until after the check,
this is not a problem in practice.

But since it technically violates the C standard, and
because it provokes a spurious valgrind warning, let's just
move the initialization of entry to a safe place.

This fixes valgrind errors in t5300, t5301, t5302, t303, and
t9400.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c