author | Florian Pritz <bluewind@xssn.at> | 2010-02-01 16:55:37 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-02-27 11:47:57 (UTC) |
commit | 8d946079c5f51ce934ff5edf6333962c6061d8a5 (patch) (unidiff) | |
tree | 6d62be9c7f5e498f55a8c38f29b831fc3fc1d6b0 | |
parent | c86e206a9773f97dc6de6bbf45712bb304de3653 (diff) | |
download | cgit-8d946079c5f51ce934ff5edf6333962c6061d8a5.zip cgit-8d946079c5f51ce934ff5edf6333962c6061d8a5.tar.gz cgit-8d946079c5f51ce934ff5edf6333962c6061d8a5.tar.bz2 |
ui-shared.c: fix segfault when repo is empty
PATH_INFO="/$REPONAME/commit/?id=1" QUERY_STRING="id=1" ./cgit.cgi
triggers segfault when the repository is empty and therefore
ctx.qry.head is unset
Signed-off-by: Florian Pritz <bluewind@xssn.at>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-shared.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ui-shared.c b/ui-shared.c index 4049a2b..8a7cc32 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -233,33 +233,33 @@ static char *repolink(char *title, char *class, char *page, char *head, | |||
233 | } | 233 | } |
234 | if (head && strcmp(head, ctx.repo->defbranch)) { | 234 | if (head && strcmp(head, ctx.repo->defbranch)) { |
235 | html(delim); | 235 | html(delim); |
236 | html("h="); | 236 | html("h="); |
237 | html_url_arg(head); | 237 | html_url_arg(head); |
238 | delim = "&"; | 238 | delim = "&"; |
239 | } | 239 | } |
240 | return fmt("%s", delim); | 240 | return fmt("%s", delim); |
241 | } | 241 | } |
242 | 242 | ||
243 | static void reporevlink(char *page, char *name, char *title, char *class, | 243 | static void reporevlink(char *page, char *name, char *title, char *class, |
244 | char *head, char *rev, char *path) | 244 | char *head, char *rev, char *path) |
245 | { | 245 | { |
246 | char *delim; | 246 | char *delim; |
247 | 247 | ||
248 | delim = repolink(title, class, page, head, path); | 248 | delim = repolink(title, class, page, head, path); |
249 | if (rev && strcmp(rev, ctx.qry.head)) { | 249 | if (rev && ctx.qry.head != NULL && strcmp(rev, ctx.qry.head)) { |
250 | html(delim); | 250 | html(delim); |
251 | html("id="); | 251 | html("id="); |
252 | html_url_arg(rev); | 252 | html_url_arg(rev); |
253 | } | 253 | } |
254 | html("'>"); | 254 | html("'>"); |
255 | html_txt(name); | 255 | html_txt(name); |
256 | html("</a>"); | 256 | html("</a>"); |
257 | } | 257 | } |
258 | 258 | ||
259 | void cgit_summary_link(char *name, char *title, char *class, char *head) | 259 | void cgit_summary_link(char *name, char *title, char *class, char *head) |
260 | { | 260 | { |
261 | reporevlink(NULL, name, title, class, head, NULL, NULL); | 261 | reporevlink(NULL, name, title, class, head, NULL, NULL); |
262 | } | 262 | } |
263 | 263 | ||
264 | void cgit_tag_link(char *name, char *title, char *class, char *head, | 264 | void cgit_tag_link(char *name, char *title, char *class, char *head, |
265 | char *rev) | 265 | char *rev) |
@@ -333,33 +333,33 @@ void cgit_refs_link(char *name, char *title, char *class, char *head, | |||
333 | { | 333 | { |
334 | reporevlink("refs", name, title, class, head, rev, path); | 334 | reporevlink("refs", name, title, class, head, rev, path); |
335 | } | 335 | } |
336 | 336 | ||
337 | void cgit_snapshot_link(char *name, char *title, char *class, char *head, | 337 | void cgit_snapshot_link(char *name, char *title, char *class, char *head, |
338 | char *rev, char *archivename) | 338 | char *rev, char *archivename) |
339 | { | 339 | { |
340 | reporevlink("snapshot", name, title, class, head, rev, archivename); | 340 | reporevlink("snapshot", name, title, class, head, rev, archivename); |
341 | } | 341 | } |
342 | 342 | ||
343 | void cgit_diff_link(char *name, char *title, char *class, char *head, | 343 | void cgit_diff_link(char *name, char *title, char *class, char *head, |
344 | char *new_rev, char *old_rev, char *path) | 344 | char *new_rev, char *old_rev, char *path) |
345 | { | 345 | { |
346 | char *delim; | 346 | char *delim; |
347 | 347 | ||
348 | delim = repolink(title, class, "diff", head, path); | 348 | delim = repolink(title, class, "diff", head, path); |
349 | if (new_rev && strcmp(new_rev, ctx.qry.head)) { | 349 | if (new_rev && ctx.qry.head != NULL && strcmp(new_rev, ctx.qry.head)) { |
350 | html(delim); | 350 | html(delim); |
351 | html("id="); | 351 | html("id="); |
352 | html_url_arg(new_rev); | 352 | html_url_arg(new_rev); |
353 | delim = "&"; | 353 | delim = "&"; |
354 | } | 354 | } |
355 | if (old_rev) { | 355 | if (old_rev) { |
356 | html(delim); | 356 | html(delim); |
357 | html("id2="); | 357 | html("id2="); |
358 | html_url_arg(old_rev); | 358 | html_url_arg(old_rev); |
359 | } | 359 | } |
360 | html("'>"); | 360 | html("'>"); |
361 | html_txt(name); | 361 | html_txt(name); |
362 | html("</a>"); | 362 | html("</a>"); |
363 | } | 363 | } |
364 | 364 | ||
365 | void cgit_patch_link(char *name, char *title, char *class, char *head, | 365 | void cgit_patch_link(char *name, char *title, char *class, char *head, |