Skip to content

Commit 5c7ade3

Browse files
authored
Merge pull request swiftlang#35813 from 3405691582/CarefulExecve
[tools] Fix invocation of execv.
2 parents c84586d + 7687bc1 commit 5c7ade3

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

stdlib/tools/swift-reflection-test/swift-reflection-test.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -643,8 +643,15 @@ int doDumpHeapInstance(const char *BinaryFilename) {
643643
close(PipeMemoryReader_getParentReadFD(&Pipe));
644644
dup2(PipeMemoryReader_getChildReadFD(&Pipe), STDIN_FILENO);
645645
dup2(PipeMemoryReader_getChildWriteFD(&Pipe), STDOUT_FILENO);
646-
_execv(BinaryFilename, NULL);
647-
exit(EXIT_SUCCESS);
646+
647+
char *const argv[] = {strdup(BinaryFilename), NULL};
648+
int r = _execv(BinaryFilename, argv);
649+
int status = EXIT_SUCCESS;
650+
if (r == -1) {
651+
perror("child process");
652+
status = EXIT_FAILURE;
653+
}
654+
exit(status);
648655
}
649656
default: { // Parent
650657
close(PipeMemoryReader_getChildReadFD(&Pipe));

0 commit comments

Comments
 (0)