From 2c3aed1381f22494bc06fd66dec8292a296db10f Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 15 Jul 2015 18:05:28 -0400 Subject: pseudoref: check return values from read_ref() 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 Signed-off-by: Junio C Hamano --- refs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/refs.c b/refs.c index 522b19b539..1db3654b8e 100644 --- a/refs.c +++ b/refs.c @@ -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); -- cgit v1.2.3