http-push: check path length before using it

We use path_len to skip the base url/path, but we do not know for sure
if path does indeed contain the base url/path. Check if this is so.

Helped-by: Johnathan Nieder <jrnieder@gmail.com>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Tay Ray Chuan 2010-11-25 16:21:08 +08:00 коммит произвёл Junio C Hamano
Родитель 0fdadc501e
Коммит dfc2dcd9ac
1 изменённых файлов: 10 добавлений и 2 удалений

Просмотреть файл

@ -1116,8 +1116,16 @@ static void handle_remote_ls_ctx(struct xml_ctx *ctx, int tag_closed)
} }
} }
if (path) { if (path) {
path += repo->path_len; const char *url = repo->url;
ls->dentry_name = xstrdup(path); if (repo->path)
url = repo->path;
if (strncmp(path, url, repo->path_len))
error("Parsed path '%s' does not match url: '%s'\n",
path, url);
else {
path += repo->path_len;
ls->dentry_name = xstrdup(path);
}
} }
} else if (!strcmp(ctx->name, DAV_PROPFIND_COLLECTION)) { } else if (!strcmp(ctx->name, DAV_PROPFIND_COLLECTION)) {
ls->dentry_flags |= IS_DIR; ls->dentry_flags |= IS_DIR;