From 93707ae156e59b835c4ae0c6d301ed5a8f4a603b Mon Sep 17 00:00:00 2001 From: Joshua Watt Date: Wed, 16 Nov 2022 12:49:19 -0600 Subject: qemu-helper-native: Correctly pass program name as argv[0] The previous version of this wasn't correctly passing the program name as argv[0], and was also over-complicated anyway because argv[] is guaranteed to be terminated with a NULL pointer, so it can be passed directly to the execv'd process without needing to be copied. (From OE-Core rev: 6edf38add3c20c44efe0588e2815bb280d22e0c4) Signed-off-by: Joshua Watt Signed-off-by: Alexandre Belloni Signed-off-by: Richard Purdie --- .../qemu/qemu-helper/qemu-oe-bridge-helper.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'meta/recipes-devtools/qemu/qemu-helper') diff --git a/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper.c b/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper.c index cadf2a012a..9434e1d269 100644 --- a/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper.c +++ b/meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper.c @@ -8,6 +8,7 @@ #include #include +#include void try_program(char const* path, char** args) { if (access(path, X_OK) == 0) { @@ -18,22 +19,14 @@ void try_program(char const* path, char** args) { int main(int argc, char** argv) { char* var; - /* Copy arguments so that they are a NULL terminated list, skipping argv[0] - * since it is this program name */ - char** args = malloc(argc * sizeof(char*)); - for (int i = 0; i < argc - 1; i++) { - args[i] = argv[i + 1]; - } - args[argc - 1] = NULL; - var = getenv("QEMU_BRIDGE_HELPER"); if (var && var[0] != '\0') { - execvp(var, args); + execvp(var, argv); return 1; } - try_program("/usr/libexec/qemu-bridge-helper", args); - try_program("/usr/lib/qemu/qemu-bridge-helper", args); + try_program("/usr/libexec/qemu-bridge-helper", argv); + try_program("/usr/lib/qemu/qemu-bridge-helper", argv); fprintf(stderr, "No bridge helper found\n"); return 1; -- cgit v1.2.3-54-g00ecf