remote.c: don't dereference NULL in freeing loop
commit323822c72be59ce2900cc036c5bad4f10bafbb53
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 7 Jun 2022 15:50:04 +0000 (7 17:50 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 Jun 2022 17:23:47 +0000 (7 10:23 -0700)
treedb991a10060d1c2d5055add05ef6d8c4695e250b
parent338959da3e46340dfcec3af361c6062c3a992668
remote.c: don't dereference NULL in freeing loop

Fix a bug in fd3cb0501e1 (remote: move static variables into
per-repository struct, 2021-11-17) where we'd free(remote->pushurl[i])
after having NULL'd out remote->pushurl. itself. We free
"remote->pushurl" in the next "for"-loop, so doing this appears to
have been a copy/paste error.

Before this change GCC 12's -fanalyzer would correctly note that we'd
dereference NULL in this case, this change fixes that:

remote.c: In function ‘remote_clear’:
remote.c:153:17: error: dereference of NULL ‘*remote.pushurl’ [CWE-476] [-Werror=analyzer-null-dereference]
  153 |                 free((char *)remote->pushurl[i]);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      [...]

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c