`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


Reply via email to