summaryrefslogtreecommitdiffabout
authorLukasz Janyst <ljanyst@cern.ch>2011-03-05 13:10:55 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2011-03-05 13:13:06 (UTC)
commit7f3c6e0ce9b41142cf2707af100992acdce059df (patch) (unidiff)
tree119a1920c85adcc65017afc8d9d95ab3e2bafef4
parent1b09cbd303d889ec2636127584d57b7f1b70c25e (diff)
downloadcgit-7f3c6e0ce9b41142cf2707af100992acdce059df.zip
cgit-7f3c6e0ce9b41142cf2707af100992acdce059df.tar.gz
cgit-7f3c6e0ce9b41142cf2707af100992acdce059df.tar.bz2
ui-diff.c: avoid html injection
When path-filtering was used in commit-view, the path filter was included without proper html escaping. This patch closes the hole. Signed-off-by: Lukasz Janyst <ljanyst@cern.ch> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-diff.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ui-diff.c b/ui-diff.c
index a53425d..a7bc667 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -163,26 +163,29 @@ static void inspect_filepair(struct diff_filepair *pair)
163 total_adds += lines_added; 163 total_adds += lines_added;
164 total_rems += lines_removed; 164 total_rems += lines_removed;
165} 165}
166 166
167void cgit_print_diffstat(const unsigned char *old_sha1, 167void cgit_print_diffstat(const unsigned char *old_sha1,
168 const unsigned char *new_sha1, const char *prefix) 168 const unsigned char *new_sha1, const char *prefix)
169{ 169{
170 int i, save_context = ctx.qry.context; 170 int i, save_context = ctx.qry.context;
171 171
172 html("<div class='diffstat-header'>"); 172 html("<div class='diffstat-header'>");
173 cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.sha1, 173 cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.sha1,
174 ctx.qry.sha2, NULL, 0); 174 ctx.qry.sha2, NULL, 0);
175 if (prefix) 175 if (prefix) {
176 htmlf(" (limited to '%s')", prefix); 176 html(" (limited to '");
177 html_txt(prefix);
178 html("')");
179 }
177 html(" ("); 180 html(" (");
178 ctx.qry.context = (save_context > 0 ? save_context : 3) << 1; 181 ctx.qry.context = (save_context > 0 ? save_context : 3) << 1;
179 cgit_self_link("more", NULL, NULL, &ctx); 182 cgit_self_link("more", NULL, NULL, &ctx);
180 html("/"); 183 html("/");
181 ctx.qry.context = (save_context > 3 ? save_context : 3) >> 1; 184 ctx.qry.context = (save_context > 3 ? save_context : 3) >> 1;
182 cgit_self_link("less", NULL, NULL, &ctx); 185 cgit_self_link("less", NULL, NULL, &ctx);
183 ctx.qry.context = save_context; 186 ctx.qry.context = save_context;
184 html(" context)"); 187 html(" context)");
185 html(" ("); 188 html(" (");
186 ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2; 189 ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2;
187 cgit_self_link(ctx.qry.ignorews ? "ignore" : "show", NULL, NULL, &ctx); 190 cgit_self_link(ctx.qry.ignorews ? "ignore" : "show", NULL, NULL, &ctx);
188 ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2; 191 ctx.qry.ignorews = (ctx.qry.ignorews + 1) % 2;