Skip to content

Commit 2e7764d

Browse files
authored
Do not leak AuthConfig into CreateContainerCmd's JSON (#1807)
1 parent 554acf6 commit 2e7764d

File tree

3 files changed

+32
-10
lines changed

3 files changed

+32
-10
lines changed

docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.dockerjava.core.command;
22

3-
import com.fasterxml.jackson.annotation.JsonIgnore;
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
44
import com.fasterxml.jackson.annotation.JsonProperty;
55
import com.github.dockerjava.api.command.CreateContainerCmd;
66
import com.github.dockerjava.api.command.CreateContainerResponse;
@@ -30,6 +30,13 @@
3030
* Creates a new container.
3131
* `/containers/create`
3232
*/
33+
@JsonAutoDetect(
34+
fieldVisibility = JsonAutoDetect.Visibility.NONE,
35+
setterVisibility = JsonAutoDetect.Visibility.NONE,
36+
getterVisibility = JsonAutoDetect.Visibility.NONE,
37+
isGetterVisibility = JsonAutoDetect.Visibility.NONE,
38+
creatorVisibility = JsonAutoDetect.Visibility.NONE
39+
)
3340
public class CreateContainerCmdImpl extends AbstrDockerCmd<CreateContainerCmd, CreateContainerResponse> implements
3441
CreateContainerCmd {
3542

@@ -122,13 +129,10 @@ public class CreateContainerCmdImpl extends AbstrDockerCmd<CreateContainerCmd, C
122129
@JsonProperty("NetworkingConfig")
123130
private NetworkingConfig networkingConfig;
124131

125-
@JsonIgnore
126132
private String ipv4Address = null;
127133

128-
@JsonIgnore
129134
private String ipv6Address = null;
130135

131-
@JsonIgnore
132136
private List<String> aliases = null;
133137

134138
private AuthConfig authConfig;
@@ -151,7 +155,6 @@ public CreateContainerCmd withAuthConfig(AuthConfig authConfig) {
151155
}
152156

153157
@Override
154-
@JsonIgnore
155158
public List<String> getAliases() {
156159
return aliases;
157160
}
@@ -256,7 +259,6 @@ public CreateContainerCmd withEnv(List<String> env) {
256259
}
257260

258261
@Override
259-
@JsonIgnore
260262
public ExposedPort[] getExposedPorts() {
261263
return exposedPorts.getExposedPorts();
262264
}
@@ -277,7 +279,6 @@ public CreateContainerCmd withExposedPorts(List<ExposedPort> exposedPorts) {
277279
/**
278280
* @see #stopSignal
279281
*/
280-
@JsonIgnore
281282
@Override
282283
public String getStopSignal() {
283284
return stopSignal;
@@ -326,7 +327,6 @@ public CreateContainerCmd withImage(String image) {
326327
}
327328

328329
@Override
329-
@JsonIgnore
330330
public Map<String, String> getLabels() {
331331
return labels;
332332
}
@@ -430,7 +430,6 @@ public CreateContainerCmd withAttachStdout(Boolean attachStdout) {
430430
}
431431

432432
@Override
433-
@JsonIgnore
434433
public Volume[] getVolumes() {
435434
return volumes.getVolumes();
436435
}

docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.github.dockerjava.cmd;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
35
import com.github.dockerjava.api.async.ResultCallback;
6+
import com.github.dockerjava.api.command.CreateContainerCmd;
47
import com.github.dockerjava.api.command.CreateContainerResponse;
58
import com.github.dockerjava.api.command.CreateNetworkResponse;
69
import com.github.dockerjava.api.command.CreateVolumeResponse;
@@ -70,6 +73,7 @@
7073
import static org.hamcrest.Matchers.emptyString;
7174
import static org.hamcrest.Matchers.not;
7275
import static org.hamcrest.Matchers.notNullValue;
76+
import static org.hamcrest.Matchers.nullValue;
7377
import static org.hamcrest.Matchers.startsWith;
7478
import static org.junit.Assert.assertNotNull;
7579
import static org.junit.Assert.assertSame;
@@ -1108,4 +1112,17 @@ public void overrideHostConfigWithRawValues() {
11081112

11091113
assertThat(inspectContainerResponse.getHostConfig().getNanoCPUs(), is(500_000_000L));
11101114
}
1115+
1116+
@Test
1117+
public void shouldNotEncodeAuth() {
1118+
CreateContainerCmd cmd = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
1119+
.withAuthConfig(new AuthConfig().withEmail("test@test.com"))
1120+
.withCmd("sleep", "9999");
1121+
1122+
ObjectMapper objectMapper = dockerRule.getConfig().getObjectMapper();
1123+
1124+
ObjectNode jsonNode = objectMapper.valueToTree(cmd);
1125+
1126+
assertThat(jsonNode.get("authConfig"), nullValue());
1127+
}
11111128
}

docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ public class DockerRule extends ExternalResource {
3737

3838
private final Set<String> createdVolumeNames = new HashSet<>();
3939

40+
private final DefaultDockerClientConfig config = config();
41+
4042
public DockerClient newClient() {
41-
DockerClientImpl dockerClient = CmdIT.createDockerClient(config());
43+
DockerClientImpl dockerClient = CmdIT.createDockerClient(config);
4244

4345
dockerClient.withDockerCmdExecFactory(
4446
new DockerCmdExecFactoryDelegate(dockerClient.dockerCmdExecFactory) {
@@ -82,6 +84,10 @@ protected DockerClient getDockerClient() {
8284
};
8385
}
8486

87+
public DefaultDockerClientConfig getConfig() {
88+
return config;
89+
}
90+
8591
public DockerClient getClient() {
8692
if (dockerClient != null) {
8793
return dockerClient;

0 commit comments

Comments
 (0)