1 |
commit: c029863b70ca77f59cd181974cfab0fa18c0a265 |
2 |
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Oct 29 03:38:58 2021 +0000 |
4 |
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Oct 29 03:38:58 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/sandbox.git/commit/?id=c029863b |
7 |
|
8 |
sandbox: avoid repetitive strlen calculations when building cmdline |
9 |
|
10 |
Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org> |
11 |
|
12 |
src/sandbox.c | 20 +++++++++----------- |
13 |
1 file changed, 9 insertions(+), 11 deletions(-) |
14 |
|
15 |
diff --git a/src/sandbox.c b/src/sandbox.c |
16 |
index 6cd5f38..7e8a769 100644 |
17 |
--- a/src/sandbox.c |
18 |
+++ b/src/sandbox.c |
19 |
@@ -263,21 +263,19 @@ int main(int argc, char **argv) |
20 |
str_list_add_item_copy(argv_bash, sandbox_info.sandbox_rc, oom_error); |
21 |
if (argc >= 2) { |
22 |
int i; |
23 |
+ size_t cmdlen; |
24 |
+ char *cmd = NULL; |
25 |
|
26 |
str_list_add_item_copy(argv_bash, run_str, oom_error); |
27 |
str_list_add_item_copy(argv_bash, argv[1], oom_error); |
28 |
+ cmdlen = strlen(argv_bash[4]); |
29 |
for (i = 2; i < argc; i++) { |
30 |
- char *tmp_ptr; |
31 |
- |
32 |
- tmp_ptr = xrealloc(argv_bash[4], |
33 |
- (strlen(argv_bash[4]) + |
34 |
- strlen(argv[i]) + 2) * |
35 |
- sizeof(char)); |
36 |
- argv_bash[4] = tmp_ptr; |
37 |
- |
38 |
- snprintf(argv_bash[4] + strlen(argv_bash[4]), |
39 |
- strlen(argv[i]) + 2, " %s", |
40 |
- argv[i]); |
41 |
+ size_t arglen = strlen(argv[i]); |
42 |
+ argv_bash[4] = xrealloc(argv_bash[4], cmdlen + arglen + 2); |
43 |
+ argv_bash[4][cmdlen] = ' '; |
44 |
+ memcpy(argv_bash[4] + cmdlen + 1, argv[i], arglen); |
45 |
+ cmdlen += arglen + 1; |
46 |
+ argv_bash[4][cmdlen] = '\0'; |
47 |
} |
48 |
} |