From 0a12e262cef1f4e21e003dea2a9cb2ea2ae2d84d Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Wed, 26 Sep 2012 12:29:07 +0200 Subject: [PATCH] Noux: fix interpreter argument processing Don't write a '\0' into the argument buffer if no interpreter argument is given. Fixes #368. --- ports/run/noux_shell_script.run | 14 ++++++++++---- ports/src/noux/child_env.h | 10 ++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ports/run/noux_shell_script.run b/ports/run/noux_shell_script.run index e6cf6b6873..6985a06712 100644 --- a/ports/run/noux_shell_script.run +++ b/ports/run/noux_shell_script.run @@ -101,12 +101,18 @@ append config { - /home/test_script correct - #!/bin/make -f + + /home/test_script1 correct + /home/test_script2 "execution of test_script2 succeeded" + + #!/bin/make -f wrong: - @echo "wrong target" + @echo "execution of test_script1 failed" correct: - @echo "correct target" + @echo "execution of test_script1 succeeded" + + #!/bin/bash +echo "$1" diff --git a/ports/src/noux/child_env.h b/ports/src/noux/child_env.h index a144dacf54..f2a095ab1e 100644 --- a/ports/src/noux/child_env.h +++ b/ports/src/noux/child_env.h @@ -128,10 +128,12 @@ namespace Noux { /* append interpreter arguments to argument buffer */ size_t interpreter_args_len = eol - interpreter_line_cursor; - Genode::strncpy(&_args[args_buf_cursor], - &binary_addr[interpreter_line_cursor], - interpreter_args_len + 1); - args_buf_cursor += interpreter_args_len + 1; + if (interpreter_args_len > 0) { + Genode::strncpy(&_args[args_buf_cursor], + &binary_addr[interpreter_line_cursor], + interpreter_args_len + 1); + args_buf_cursor += interpreter_args_len + 1; + } /* append script arguments to argument buffer */ Genode::memcpy(&_args[args_buf_cursor],