refs: prevent accidental NULL dereference in write_pseudoref

Several of the refs functions take NULL to indicate that the ref is not
to be updated.  If refs_update_ref were called with a NULL new object
ID, we could pass that NULL pointer to write_pseudoref, which would then
segfault when it dereferenced it.  Instead, simply return successfully,
since if we don't want to update the pseudoref, there's nothing to do.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2017-10-15 22:06:52 +00:00 коммит произвёл Junio C Hamano
Родитель ae077771b0
Коммит 6ee18216d8
1 изменённых файлов: 3 добавлений и 0 удалений

3
refs.c
Просмотреть файл

@ -583,6 +583,9 @@ static int write_pseudoref(const char *pseudoref, const struct object_id *oid,
struct strbuf buf = STRBUF_INIT;
int ret = -1;
if (!oid)
return 0;
strbuf_addf(&buf, "%s\n", oid_to_hex(oid));
filename = git_path("%s", pseudoref);