зеркало из https://github.com/microsoft/git.git
daemon: sanitize all directory separators
When sanitizing client-supplied strings on Windows, also strip off backslashes, not just slashes. Signed-off-by: René Scharfe <l.s.r@web.de> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
a5828ae6b5
Коммит
9a7f1ce8b7
8
daemon.c
8
daemon.c
|
@ -566,14 +566,14 @@ static void parse_host_and_port(char *hostport, char **host,
|
|||
|
||||
/*
|
||||
* Sanitize a string from the client so that it's OK to be inserted into a
|
||||
* filesystem path. Specifically, we disallow slashes, runs of "..", and
|
||||
* trailing and leading dots, which means that the client cannot escape
|
||||
* our base path via ".." traversal.
|
||||
* filesystem path. Specifically, we disallow directory separators, runs
|
||||
* of "..", and trailing and leading dots, which means that the client
|
||||
* cannot escape our base path via ".." traversal.
|
||||
*/
|
||||
static void sanitize_client(struct strbuf *out, const char *in)
|
||||
{
|
||||
for (; *in; in++) {
|
||||
if (*in == '/')
|
||||
if (is_dir_sep(*in))
|
||||
continue;
|
||||
if (*in == '.' && (!out->len || out->buf[out->len - 1] == '.'))
|
||||
continue;
|
||||
|
|
Загрузка…
Ссылка в новой задаче