imagebuildah: fix crash with empty RUN

fix a crash when RUN is executed without any argument.

Closes: https://github.com/containers/buildah/issues/5312

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2024-02-01 17:14:13 +01:00
parent b850c711ff
commit 9d516e22e3
No known key found for this signature in database
GPG Key ID: 67E38F7A8BA21772
2 changed files with 22 additions and 3 deletions

View File

@ -1737,11 +1737,15 @@ func (s *StageExecutor) getCreatedBy(node *parser.Node, addedContentSummary stri
buildArgs := s.getBuildArgsKey()
return "/bin/sh -c #(nop) ARG " + buildArgs
case "RUN":
shArg := ""
buildArgs := s.getBuildArgsResolvedForRun()
if buildArgs != "" {
return "|" + strconv.Itoa(len(strings.Split(buildArgs, " "))) + " " + buildArgs + " /bin/sh -c " + node.Original[4:]
if len(node.Original) > 4 {
shArg = node.Original[4:]
}
result := "/bin/sh -c " + node.Original[4:]
if buildArgs != "" {
return "|" + strconv.Itoa(len(strings.Split(buildArgs, " "))) + " " + buildArgs + " /bin/sh -c " + shArg
}
result := "/bin/sh -c " + shArg
if len(node.Heredocs) > 0 {
for _, doc := range node.Heredocs {
heredocContent := strings.TrimSpace(doc.Content)

View File

@ -952,3 +952,18 @@ _EOF
fi
done
}
@test "empty run statement doesn't crash" {
skip_if_no_runtime
_prefetch alpine
cd ${TEST_SCRATCH_DIR}
printf 'FROM alpine\nRUN \\\n echo && echo' > Dockerfile
run_buildah bud --pull=false --layers .
printf 'FROM alpine\nRUN\n echo && echo' > Dockerfile
run_buildah ? bud --pull=false --layers .
expect_output --substring -- "-c requires an argument"
}