ui-tag.c: do not segfault when id is missing from query-string

The purpose of the tag page is to print info about a specific tag,
but if no tag was specified on the query-string cgit used to segfault.

With this patch, cgit will fallback to the value of the 'h' parameter
instead (which is never NULL due to prepare_repo_cmd() in cgit.c).

It will now also verify that the specified tagname is in fact a valid
ref in the 'refs/tags/' namespace, i.e. specifying 'id=master' will
trigger a 'Bad tag reference' error.

Noticed-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
Lars Hjemli 2009-08-17 09:19:05 +02:00
父節點 fdd559abd6
當前提交 8a631b1173

查看文件

@ -37,7 +37,10 @@ void cgit_print_tag(char *revname)
struct tag *tag; struct tag *tag;
struct taginfo *info; struct taginfo *info;
if (get_sha1(revname, sha1)) { if (!revname)
revname = ctx.qry.head;
if (get_sha1(fmt("refs/tags/%s", revname), sha1)) {
cgit_print_error(fmt("Bad tag reference: %s", revname)); cgit_print_error(fmt("Bad tag reference: %s", revname));
return; return;
} }