diff --git a/CI/test_cases/image_cases/images_list.bash b/CI/test_cases/image_cases/images_list.bash index 3bf417c268a4fad60bf773c65a5d3f4041ad48c4..51c7a1aadc50e7bf02de33571bbd46bb204b469e 100755 --- a/CI/test_cases/image_cases/images_list.bash +++ b/CI/test_cases/image_cases/images_list.bash @@ -26,6 +26,7 @@ function test_image_list() { local ret=0 local image="hello-world" + local image_busybox="busybox" local INVALID_IMAGE="k~k" local test="list images info test => (${FUNCNAME[@]})" @@ -40,9 +41,27 @@ function test_image_list() isula images | grep hello [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) + isula pull ${image_busybox} + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image_busybox}" && return ${FAILURE} + + isula images | grep busybox + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) + count=`isula images --filter "reference=*hello*" | grep hello | wc -l` [[ $count -ne 1 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image} with filter" && ((ret++)) + isula images --filter "since=${image}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image}" && ((ret++)) + + isula images --filter "before=${image}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with before: ${image}" && ((ret++)) + + isula images --filter "since=${image_busybox}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image_busybox}" && ((ret++)) + + isula images --filter "before=${image_busybox}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image_busybox}" && ((ret++)) + isula rmi ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to remove image ${image}" && ((ret++)) diff --git a/CI/test_cases/image_cases/img_fs_info.bash b/CI/test_cases/image_cases/img_fs_info.bash index 1ea16b34335ab6ffdc5e6d483bf8f38cc09fb4f5..6399253e82c468586b53223e7036aafdbedf12c7 100755 --- a/CI/test_cases/image_cases/img_fs_info.bash +++ b/CI/test_cases/image_cases/img_fs_info.bash @@ -30,7 +30,10 @@ function test_crictl_image() msg_info "${test} starting..." - crictl pull ${image} + crictl pull --creds test:test ${image} + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} + + crictl pull --auth dGVzdDp0ZXN0 ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} crictl inspecti busybox | grep busybox diff --git a/src/daemon/modules/image/oci/oci_pull.c b/src/daemon/modules/image/oci/oci_pull.c index d0d820f591469578f520ce98c291a1d990902aa6..0249a4158e2e1f8b75b124d97399aa7131bf72c2 100644 --- a/src/daemon/modules/image/oci/oci_pull.c +++ b/src/daemon/modules/image/oci/oci_pull.c @@ -30,7 +30,7 @@ #include "utils_base64.h" #include "utils_string.h" -static int decode_auth(char *auth, char **username, char **password) +static int decode_auth(const char *auth, char **username, char **password) { int nret = 0; int ret = 0; @@ -111,14 +111,16 @@ static int pull_image(const im_pull_request *request, char **name) ERROR("Out of memory"); goto out; } - options->auth.username = request->username; - options->auth.password = request->password; + if (request->auth != NULL) { ret = decode_auth(request->auth, &options->auth.username, &options->auth.password); if (ret != 0) { ERROR("Decode auth failed"); goto out; } + } else { + options->auth.username = util_strdup_s(request->username); + options->auth.password = util_strdup_s(request->password); } options->skip_tls_verify = conf_get_skip_insecure_verify_flag(); diff --git a/src/utils/cutils/utils_base64.c b/src/utils/cutils/utils_base64.c index 4c5bad8e224f640978948ef2e8ff163bc4f4bfdc..2897d0598fb76f7e4f78bf0958c403b81a471656 100644 --- a/src/utils/cutils/utils_base64.c +++ b/src/utils/cutils/utils_base64.c @@ -116,7 +116,7 @@ size_t util_base64_encode_len(size_t len) } } -size_t util_base64_decode_len(char *input, size_t len) +size_t util_base64_decode_len(const char *input, size_t len) { size_t padding_count = 0; @@ -135,7 +135,7 @@ size_t util_base64_decode_len(char *input, size_t len) return (strlen(input) / 4 * 3) - padding_count; } -size_t util_base64_decode(char *input, size_t len, unsigned char *out, size_t out_len) +size_t util_base64_decode(const char *input, size_t len, unsigned char *out, size_t out_len) { BIO *base64 = NULL; BIO *io = NULL; diff --git a/src/utils/cutils/utils_base64.h b/src/utils/cutils/utils_base64.h index 649c0af7fef8d8808a9d30a39051558f97f6eb83..b6ef739811094084d4e788471d3225192be5fb1b 100644 --- a/src/utils/cutils/utils_base64.h +++ b/src/utils/cutils/utils_base64.h @@ -28,12 +28,11 @@ extern "C" { // note: the output length must include the '\0' and the return size is include the '\0'. size_t util_base64_encode(unsigned char *bytes, size_t len, char *out, size_t out_len); size_t util_base64_encode_len(size_t len); -size_t util_base64_decode(char *input, size_t len, unsigned char *out, size_t out_len); -size_t util_base64_decode_len(char *input, size_t len); +size_t util_base64_decode(const char *input, size_t len, unsigned char *out, size_t out_len); +size_t util_base64_decode_len(const char *input, size_t len); #ifdef __cplusplus } #endif #endif // UTILS_CUTILS_UTILS_BASE64_H -