mirror of
https://git.zx2c4.com/cgit
synced 2024-09-07 19:35:18 +00:00
ui-tree,ui-blame: bail from blame if blob is binary
This avoids piping binary blobs through the source-filter. Also prevent robots from crawling it, since it's expensive. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
e10159691e
commit
cc6d9cc7fc
@ -1,3 +1,4 @@
|
||||
User-agent: *
|
||||
Disallow: /*/snapshot/*
|
||||
Disallow: /*/blame/*
|
||||
Allow: /
|
||||
|
@ -152,6 +152,10 @@ static void print_object(const struct object_id *oid, const char *path,
|
||||
cgit_tree_link("tree", NULL, NULL, ctx.qry.head, rev, path);
|
||||
html(")\n");
|
||||
|
||||
if (buffer_is_binary(buf, size)) {
|
||||
html("<div class='error'>blob is binary.</div>");
|
||||
goto cleanup;
|
||||
}
|
||||
if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) {
|
||||
htmlf("<div class='error'>blob size (%ldKB)"
|
||||
" exceeds display size limit (%dKB).</div>",
|
||||
|
@ -89,6 +89,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
|
||||
enum object_type type;
|
||||
char *buf;
|
||||
unsigned long size;
|
||||
bool is_binary;
|
||||
|
||||
type = oid_object_info(the_repository, oid, &size);
|
||||
if (type == OBJ_BAD) {
|
||||
@ -103,6 +104,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
|
||||
"Error reading object %s", oid_to_hex(oid));
|
||||
return;
|
||||
}
|
||||
is_binary = buffer_is_binary(buf, size);
|
||||
|
||||
cgit_set_title_from_path(path);
|
||||
|
||||
@ -110,7 +112,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
|
||||
htmlf("blob: %s (", oid_to_hex(oid));
|
||||
cgit_plain_link("plain", NULL, NULL, ctx.qry.head,
|
||||
rev, path);
|
||||
if (ctx.repo->enable_blame) {
|
||||
if (ctx.repo->enable_blame && !is_binary) {
|
||||
html(") (");
|
||||
cgit_blame_link("blame", NULL, NULL, ctx.qry.head,
|
||||
rev, path);
|
||||
@ -123,7 +125,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch
|
||||
return;
|
||||
}
|
||||
|
||||
if (buffer_is_binary(buf, size))
|
||||
if (is_binary)
|
||||
print_binary_buffer(buf, size);
|
||||
else
|
||||
print_text_buffer(basename, buf, size);
|
||||
|
Loading…
Reference in New Issue
Block a user