Sandbox: Fix ContainerConfig ptr in CreateContainer and createContainers

The pointer that send to newContainer in CreateContainer and
createContainers is not the pointer that point to the address in
s.config.Containers.

This commit fix this issue.

Fixes: #1758

Signed-off-by: Hui Zhu <teawater@antfin.com>
This commit is contained in:
Hui Zhu 2021-04-27 15:21:51 +08:00 committed by Hui Zhu
parent fb30c58847
commit 831224aa22

View File

@ -1099,15 +1099,11 @@ func (s *Sandbox) addContainer(c *Container) error {
// This should be called only when the sandbox is already created.
// It will add new container config to sandbox.config.Containers
func (s *Sandbox) CreateContainer(ctx context.Context, contConfig ContainerConfig) (VCContainer, error) {
// Create the container object, add devices to the sandbox's device-manager:
c, err := newContainer(ctx, s, &contConfig)
if err != nil {
return nil, err
}
// Update sandbox config to include the new container's config
s.config.Containers = append(s.config.Containers, contConfig)
var err error
defer func() {
if err != nil {
if len(s.config.Containers) > 0 {
@ -1117,6 +1113,12 @@ func (s *Sandbox) CreateContainer(ctx context.Context, contConfig ContainerConfi
}
}()
// Create the container object, add devices to the sandbox's device-manager:
c, err := newContainer(ctx, s, &s.config.Containers[len(s.config.Containers)-1])
if err != nil {
return nil, err
}
// create and start the container
err = c.create(ctx)
if err != nil {
@ -1434,9 +1436,9 @@ func (s *Sandbox) createContainers(ctx context.Context) error {
span, ctx := s.trace(ctx, "createContainers")
defer span.End()
for _, contConfig := range s.config.Containers {
for i := range s.config.Containers {
c, err := newContainer(ctx, s, &contConfig)
c, err := newContainer(ctx, s, &s.config.Containers[i])
if err != nil {
return err
}