1
0

ui-diff: Check the return value of get_sha1()

Sync with what we do everywhere else and check the return value of
get_sha1() instead of calling sha1_object_info() to validate the object.
Note that we later call lookup_commit_reference(), which checks that
both SHA1 values refer to commits, anyway.

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Este cometimento está contido em:
Lukas Fleischer 2013-08-20 18:56:12 +02:00 cometido por Jason A. Donenfeld
ascendente 445f6ae8e3
cometimento 01db083729

Ver ficheiro

@ -360,15 +360,11 @@ void cgit_print_diff_ctrls()
void cgit_print_diff(const char *new_rev, const char *old_rev, void cgit_print_diff(const char *new_rev, const char *old_rev,
const char *prefix, int show_ctrls, int raw) const char *prefix, int show_ctrls, int raw)
{ {
enum object_type type;
unsigned long size;
struct commit *commit, *commit2; struct commit *commit, *commit2;
if (!new_rev) if (!new_rev)
new_rev = ctx.qry.head; new_rev = ctx.qry.head;
get_sha1(new_rev, new_rev_sha1); if (get_sha1(new_rev, new_rev_sha1)) {
type = sha1_object_info(new_rev_sha1, &size);
if (type == OBJ_BAD) {
cgit_print_error("Bad object name: %s", new_rev); cgit_print_error("Bad object name: %s", new_rev);
return; return;
} }
@ -378,19 +374,18 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
return; return;
} }
if (old_rev) if (old_rev) {
get_sha1(old_rev, old_rev_sha1); if (get_sha1(old_rev, old_rev_sha1)) {
else if (commit->parents && commit->parents->item) cgit_print_error("Bad object name: %s", old_rev);
hashcpy(old_rev_sha1, commit->parents->item->object.sha1);
else
hashclr(old_rev_sha1);
if (!is_null_sha1(old_rev_sha1)) {
type = sha1_object_info(old_rev_sha1, &size);
if (type == OBJ_BAD) {
cgit_print_error("Bad object name: %s", sha1_to_hex(old_rev_sha1));
return; return;
} }
} else if (commit->parents && commit->parents->item) {
hashcpy(old_rev_sha1, commit->parents->item->object.sha1);
} else {
hashclr(old_rev_sha1);
}
if (!is_null_sha1(old_rev_sha1)) {
commit2 = lookup_commit_reference(old_rev_sha1); commit2 = lookup_commit_reference(old_rev_sha1);
if (!commit2 || parse_commit(commit2)) { if (!commit2 || parse_commit(commit2)) {
cgit_print_error("Bad commit: %s", sha1_to_hex(old_rev_sha1)); cgit_print_error("Bad commit: %s", sha1_to_hex(old_rev_sha1));