From 513b3863d999f91b47d7e9f26710390db55f9463 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Thu, 14 Jan 2016 14:28:37 +0100 Subject: ui-shared: prevent malicious filename from injecting headers --- html.c | 26 ++++++++++++++++++++++++++ html.h | 1 + ui-shared.c | 8 +++++--- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/html.c b/html.c index 959148c..d89df3a 100644 --- a/html.c +++ b/html.c @@ -239,6 +239,32 @@ void html_url_arg(const char *txt) html(txt); } +void html_header_arg_in_quotes(const char *txt) +{ + const char *t = txt; + while (t && *t) { + unsigned char c = *t; + const char *e = NULL; + if (c == '\\') + e = "\\\\"; + else if (c == '\r') + e = "\\r"; + else if (c == '\n') + e = "\\n"; + else if (c == '"') + e = "\\\""; + if (e) { + html_raw(txt, t - txt); + html(e); + txt = t + 1; + } + t++; + } + if (t != txt) + html(txt); + +} + void html_hidden(const char *name, const char *value) { html("tests/filters/dump.sh (unfollow)
Commit message (Expand)Author
2015-08-14tag: move layout into page functionJohn Keeping
2015-08-14summary: move layout into page functionJohn Keeping
2015-08-14stats: move layout into page functionJohn Keeping
2015-08-14refs: move layout to page functionJohn Keeping
2015-08-14log: move layout into page functionJohn Keeping
2015-08-14diff: move layout to page functionJohn Keeping
2015-08-14commit: move layout into page functionJohn Keeping
2015-08-14about: move layout into page functionsJohn Keeping
2015-08-14ui-shared: add cgit_print_layout_{start,end}()John Keeping
2015-08-14html: remove html_status()John Keeping
2015-08-14snapshot: don't reimplement cgit_print_error_page()John Keeping
2015-08-14snapshot: use cgit_print_error_page() for HTTP status codesJohn Keeping
2015-08-14patch: use cgit_print_error_page() for HTTP status codesJohn Keeping
2015-08-14blob: use cgit_print_error_page() to add HTTP headersJohn Keeping
2015-08-14snapshot: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14plain: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14clone: use cgit_print_error_page() instead of html_status()John Keeping
2015-08-14cgit: use cgit_print_error_page() where appropriateJohn Keeping
2015-08-14ui-shared: add cgit_print_error_page() functionJohn Keeping
2015-08-14ui-patch: make sure to send http headersChristian Hesse
2015-08-13Makefile: make "git/config.mak.uname" inclusion optionalJohn Keeping
2015-08-13ui-shared: show full date in tooltip if longer ago than max_relativeJohn Keeping
2015-08-13ui-shared: use common function in print_rel_date()John Keeping
2015-08-13ui-shared: extract date formatting to a functionJohn Keeping
2015-08-13filter: don't use dlsym unnecessarilyJohn Keeping
2015-08-13ui-tree: use "sane" isgraph()John Keeping
2015-08-13cgit.h: move stdbool.h from ui-shared.hJohn Keeping
2015-08-13cache.c: fix header orderJohn Keeping
2015-08-13configfile.c: don't include system headers directlyJohn Keeping
2015-08-13Remove redundant includesJohn Keeping
2015-08-13Makefile: include Git's config.mak.unameJohn Keeping
2015-08-13tests: allow shell to be overriddenJohn Keeping
2015-08-13redirect: cleanlinessJason A. Donenfeld
2015-08-13redirect: be more careful for different cgi setupsJason A. Donenfeld
2015-08-12ui-log: fix double countingJohn Keeping
2015-08-12log: allow users to follow a fileJohn Keeping
2015-08-12shared: make cgit_diff_tree_cb publicJohn Keeping
2015-08-12t0110: Chain together using &&Jason A. Donenfeld
2015-08-12about: always ensure page has a trailing slashJason A. Donenfeld
2015-08-12filters: apply HTML escapingLazaros Koromilas
2015-08-12git: update to v2.5.0Christian Hesse
2015-08-12Fix processing of repo.hide and repo.ignoreDaniel Reichelt