`mkfs.erofs` failed to generate image from Huawei OBS with the following command: $ mkfs.erofs --s3=<endpoint>,urlstyle=vhost,sig=2 s3.erofs test-bucket
because it mistakenly generated a url with repeated '/': "https://test-bucket.<endpoint>//<keyname>" Fix the corresponding logic now. Reported-by: Yifan Zhao <[email protected]> Signed-off-by: Gao Xiang <[email protected]> --- lib/remotes/s3.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/remotes/s3.c b/lib/remotes/s3.c index 2e7763e..3675ab6 100644 --- a/lib/remotes/s3.c +++ b/lib/remotes/s3.c @@ -47,6 +47,7 @@ static int s3erofs_prepare_url(struct s3erofs_curl_request *req, { static const char https[] = "https://"; const char *schema, *host; + /* an additional slash is added, which wasn't specified by user inputs */ bool slash = false; char *url = req->url; int pos, i; @@ -82,8 +83,10 @@ static int s3erofs_prepare_url(struct s3erofs_curl_request *req, } } if (key) { - slash |= url[pos - 1] != '/'; - pos -= !slash; + if (url[pos - 1] == '/') + --pos; + else + slash = true; pos += snprintf(url + pos, S3EROFS_URL_LEN - pos, "/%s", key); } -- 2.43.5
