diff options
| -rw-r--r-- | cgit.c | 3 | ||||
| -rw-r--r-- | cgit.h | 1 | ||||
| -rw-r--r-- | cgitrc.5.txt | 4 | ||||
| -rw-r--r-- | ui-tree.c | 6 | 
4 files changed, 14 insertions, 0 deletions
| @@ -165,6 +165,8 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.max_msg_len = atoi(value);  	else if (!strcmp(name, "max-repodesc-length"))  		ctx.cfg.max_repodesc_len = atoi(value); +	else if (!strcmp(name, "max-blob-size")) +		ctx.cfg.max_blob_size = atoi(value);  	else if (!strcmp(name, "max-repo-count"))  		ctx.cfg.max_repo_count = atoi(value);  	else if (!strcmp(name, "max-commit-count")) @@ -270,6 +272,7 @@ static void prepare_context(struct cgit_context *ctx)  	ctx->cfg.max_lock_attempts = 5;  	ctx->cfg.max_msg_len = 80;  	ctx->cfg.max_repodesc_len = 80; +	ctx->cfg.max_blob_size = 0;  	ctx->cfg.max_stats = 0;  	ctx->cfg.module_link = "./?repo=%s&page=commit&id=%s";  	ctx->cfg.renamelimit = -1; @@ -185,6 +185,7 @@ struct cgit_config {  	int max_lock_attempts;  	int max_msg_len;  	int max_repodesc_len; +	int max_blob_size;  	int max_stats;  	int nocache;  	int noplainemail; diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 0c13485..e69140b 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt @@ -177,6 +177,10 @@ max-repodesc-length::  	Specifies the maximum number of repo description characters to display  	on the repository index page. Default value: "80". +max-blob-size:: +	Specifies the maximum size of a blob to display HTML for in KBytes. +	Default value: "0" (limit disabled). +  max-stats::  	Set the default maximum statistics period. Valid values are "week",  	"month", "quarter" and "year". If unspecified, statistics are @@ -107,6 +107,12 @@ static void print_object(const unsigned char *sha1, char *path, const char *base  		        curr_rev, path);  	htmlf(")<br/>blob: %s\n", sha1_to_hex(sha1)); +	if (ctx.cfg.max_blob_size && size / 1024 > ctx.cfg.max_blob_size) { +		htmlf("<div class='error'>blob size (%dKB) exceeds display size limit (%dKB).</div>", +				size / 1024, ctx.cfg.max_blob_size); +		return; +	} +  	if (buffer_is_binary(buf, size))  		print_binary_buffer(buf, size);  	else | 
