diff options
author | David Turner <dturner@twopensource.com> | 2015-07-15 18:05:28 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-11 15:52:20 -0700 |
commit | 2c3aed1381f22494bc06fd66dec8292a296db10f (patch) | |
tree | 049b6b12c404c8b6cf49550afc5b364c49fae8a8 | |
parent | d96a53996b6c02b96a9a2b4eed9eac4e9d661a38 (diff) | |
download | git-dt/refs-pseudo.tar.gz |
pseudoref: check return values from read_ref()dt/refs-pseudo
These codepaths attempt to compare the "expected" current value with
the actual current value, but did not check if we successfully read
the current value before comparison.
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | refs.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -2868,7 +2868,9 @@ static int write_pseudoref(const char *pseudoref, const unsigned char *sha1, if (old_sha1) { unsigned char actual_old_sha1[20]; - read_ref(pseudoref, actual_old_sha1); + + if (read_ref(pseudoref, actual_old_sha1)) + die("could not read ref '%s'", pseudoref); if (hashcmp(actual_old_sha1, old_sha1)) { strbuf_addf(err, "Unexpected sha1 when writing %s", pseudoref); rollback_lock_file(&lock); @@ -2904,7 +2906,8 @@ static int delete_pseudoref(const char *pseudoref, const unsigned char *old_sha1 LOCK_DIE_ON_ERROR); if (fd < 0) die_errno(_("Could not open '%s' for writing"), filename); - read_ref(pseudoref, actual_old_sha1); + if (read_ref(pseudoref, actual_old_sha1)) + die("could not read ref '%s'", pseudoref); if (hashcmp(actual_old_sha1, old_sha1)) { warning("Unexpected sha1 when deleting %s", pseudoref); rollback_lock_file(&lock); |