As far as I know, there is no requirement that $SCRIPT_NAME contain only URL-safe characters, so we need to make sure that any special characters are escaped.
Unified · Split
| @@ -139,7 +139,7 @@ static void site_url(const char *page, const char *search, const char *sort, int · 138 unmodified lines | |||
| 139 | if (ctx.cfg.virtual_root) | 139 | if (ctx.cfg.virtual_root) |
| 140 | html_attr(ctx.cfg.virtual_root); | 140 | html_attr(ctx.cfg.virtual_root); |
| 141 | else | 141 | else |
| 142 | html(ctx.cfg.script_name); | 142 | html_url_path(ctx.cfg.script_name); |
| 143 | 143 | ||
| 144 | if (page) { | 144 | if (page) { |
| 145 | htmlf("?p=%s", page); | 145 | htmlf("?p=%s", page); |
| @@ -219,7 +219,7 @@ static char *repolink(const char *title, const char *class, const char *page, · 73 unmodified lines | |||
| 219 | html_url_path(path); | 219 | html_url_path(path); |
| 220 | } | 220 | } |
| 221 | } else { | 221 | } else { |
| 222 | html(ctx.cfg.script_name); | 222 | html_url_path(ctx.cfg.script_name); |
| 223 | html("?url="); | 223 | html("?url="); |
| 224 | html_url_arg(ctx.repo->url); | 224 | html_url_arg(ctx.repo->url); |
| 225 | if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/') | 225 | if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/') |