summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Watt <JPEWhacker@gmail.com>2022-11-16 12:49:19 -0600
committerSteve Sakoman <steve@sakoman.com>2022-11-25 06:16:14 -1000
commit25edeac14bf7c68111b9880e1367b3c981d59ea0 (patch)
tree400d23ad3674ff1171d1a476785480452df7b56f
parentadabfbd9245553d1fb6abb050856e3da89f7a3d5 (diff)
downloadopenembedded-core-contrib-25edeac14bf7c68111b9880e1367b3c981d59ea0.tar.gz
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. Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> (cherry picked from commit 6edf38add3c20c44efe0588e2815bb280d22e0c4) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/recipes-devtools/qemu/qemu-helper/qemu-oe-bridge-helper.c15
1 files changed, 4 insertions, 11 deletions
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 <stdio.h>
#include <unistd.h>
+#include <stdlib.h>
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;