[PATCH] erofs-utils: lib: oci: cleanup ocierofs_get_auth_token()
Gao Xiang
hsiangkao at linux.alibaba.com
Thu Sep 4 17:57:04 AEST 2025
- `registry` and `repository` doesn't need to be passed in again;
- `ctx->auth_header` can be assigned directly.
Cc: Chengyu Zhu <hudsonzhu at tencent.com>
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
lib/remotes/oci.c | 46 +++++++++++++++++++++++++---------------------
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/lib/remotes/oci.c b/lib/remotes/oci.c
index f2b08b2..189b634 100644
--- a/lib/remotes/oci.c
+++ b/lib/remotes/oci.c
@@ -511,9 +511,8 @@ static char *ocierofs_discover_auth_endpoint(struct ocierofs_ctx *ctx,
return result;
}
-static char *ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *registry,
- const char *repository, const char *username,
- const char *password)
+static int ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *username,
+ const char *password)
{
static const char * const auth_patterns[] = {
"https://%s/v2/auth",
@@ -521,8 +520,9 @@ static char *ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *regis
"https://%s/token",
NULL,
};
- char *auth_header = NULL;
- char *discovered_auth_url = NULL;
+ const char *registry = ctx->registry;
+ const char *repository = ctx->repository;
+ char *auth_header, *discovered_auth_url;
char *discovered_service = NULL;
const char *service = registry;
bool docker_reg;
@@ -535,8 +535,10 @@ static char *ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *regis
auth_header = ocierofs_get_auth_token_with_url(ctx,
"https://auth.docker.io/token", service, repository,
username, password);
- if (!IS_ERR(auth_header))
- return auth_header;
+ if (!IS_ERR(auth_header)) {
+ ctx->auth_header = auth_header;
+ return 0;
+ }
}
discovered_auth_url = ocierofs_discover_auth_endpoint(ctx, registry, repository);
@@ -579,8 +581,10 @@ static char *ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *regis
username, password);
free(discovered_auth_url);
free(discovered_service);
- if (!IS_ERR(auth_header))
- return auth_header;
+ if (!IS_ERR(auth_header)) {
+ ctx->auth_header = auth_header;
+ return 0;
+ }
}
for (i = 0; auth_patterns[i]; i++) {
@@ -594,12 +598,16 @@ static char *ocierofs_get_auth_token(struct ocierofs_ctx *ctx, const char *regis
username, password);
free(auth_url);
- if (!IS_ERR(auth_header))
- return auth_header;
- if (!docker_reg)
- return NULL;
+ if (!IS_ERR(auth_header)) {
+ ctx->auth_header = auth_header;
+ return 0;
+ }
+ if (!docker_reg) {
+ ctx->auth_header = NULL;
+ return 0;
+ }
}
- return ERR_PTR(-ENOENT);
+ return -ENOENT;
}
static char *ocierofs_get_manifest_digest(struct ocierofs_ctx *ctx,
@@ -863,19 +871,15 @@ static int ocierofs_prepare_auth(struct ocierofs_ctx *ctx,
const char *password)
{
char *auth_header = NULL;
- int ret = 0;
+ int ret;
ctx->using_basic = false;
free(ctx->auth_header);
ctx->auth_header = NULL;
- auth_header = ocierofs_get_auth_token(ctx, ctx->registry,
- ctx->repository,
- username, password);
- if (!IS_ERR(auth_header)) {
- ctx->auth_header = auth_header;
+ ret = ocierofs_get_auth_token(ctx, username, password);
+ if (!ret)
return 0;
- }
if (username && password && *username && *password) {
ret = ocierofs_curl_setup_basic_auth(ctx->curl,
--
2.43.5
More information about the Linux-erofs
mailing list