mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
fix: padded base64 encoded docker auth field
base64 allows usage of new line characters and some tools use them. As a result, the length of the encoded string cannot be used to determine whether it's padded or not. This patch fixes the regression after #82148.
This commit is contained in:
parent
be65a9d1b6
commit
5bec54ed5b
@ -287,8 +287,7 @@ func decodeDockerConfigFieldAuth(field string) (username, password string, err e
|
|||||||
|
|
||||||
// StdEncoding can only decode padded string
|
// StdEncoding can only decode padded string
|
||||||
// RawStdEncoding can only decode unpadded string
|
// RawStdEncoding can only decode unpadded string
|
||||||
// a string is correctly padded if and only if its length is a multiple of 4
|
if strings.HasSuffix(strings.TrimSpace(field), "=") {
|
||||||
if (len(field) % 4) == 0 {
|
|
||||||
// decode padded data
|
// decode padded data
|
||||||
decoded, err = base64.StdEncoding.DecodeString(field)
|
decoded, err = base64.StdEncoding.DecodeString(field)
|
||||||
} else {
|
} else {
|
||||||
|
@ -214,6 +214,13 @@ func TestDecodeDockerConfigFieldAuth(t *testing.T) {
|
|||||||
password: "bar",
|
password: "bar",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// some test as before but with new line characters
|
||||||
|
{
|
||||||
|
input: "Zm9vOm\nJhcg==\n",
|
||||||
|
username: "foo",
|
||||||
|
password: "bar",
|
||||||
|
},
|
||||||
|
|
||||||
// standard encoding (with padding)
|
// standard encoding (with padding)
|
||||||
{
|
{
|
||||||
input: base64.StdEncoding.EncodeToString([]byte("foo:bar")),
|
input: base64.StdEncoding.EncodeToString([]byte("foo:bar")),
|
||||||
@ -241,6 +248,12 @@ func TestDecodeDockerConfigFieldAuth(t *testing.T) {
|
|||||||
fail: true,
|
fail: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// only new line characters are ignored
|
||||||
|
{
|
||||||
|
input: "Zm9vOmJhcg== ",
|
||||||
|
fail: true,
|
||||||
|
},
|
||||||
|
|
||||||
// bad base64 data
|
// bad base64 data
|
||||||
{
|
{
|
||||||
input: "pants",
|
input: "pants",
|
||||||
|
Loading…
Reference in New Issue
Block a user