You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.3 KiB
72 lines
2.3 KiB
From ed5e255c023c9b78120d9ff2246d6516f652d4b7 Mon Sep 17 00:00:00 2001 |
|
From: Javier Martinez Canillas <javierm@redhat.com> |
|
Date: Mon, 10 Feb 2020 19:32:39 +0100 |
|
Subject: [PATCH] Fix stringop-overflow warning |
|
|
|
GCC gives the following compile warning: |
|
|
|
grubby.c: In function 'main': |
|
grubby.c:4508:27: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] |
|
4508 | saved_command_line[0] = '\0'; |
|
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~ |
|
grubby.c:4503:26: note: at offset 0 to an object with size 0 allocated by 'malloc' here |
|
4503 | saved_command_line = malloc(i); |
|
| ^~~~~~~~~ |
|
cc1: all warnings being treated as errors |
|
make: *** [Makefile:38: grubby.o] Error 1 |
|
|
|
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> |
|
--- |
|
grubby.c | 35 +++++++++++++++++++---------------- |
|
1 file changed, 19 insertions(+), 16 deletions(-) |
|
|
|
diff --git a/grubby.c b/grubby.c |
|
index 5ca689539cf..0c0f67a0ae5 100644 |
|
--- a/grubby.c |
|
+++ b/grubby.c |
|
@@ -4500,23 +4500,26 @@ int main(int argc, const char ** argv) { |
|
int i = 0; |
|
for (int j = 1; j < argc; j++) |
|
i += strlen(argv[j]) + 1; |
|
- saved_command_line = malloc(i); |
|
- if (!saved_command_line) { |
|
- fprintf(stderr, "grubby: %m\n"); |
|
- exit(1); |
|
- } |
|
- saved_command_line[0] = '\0'; |
|
- int cmdline_len = 0, arg_len; |
|
- for (int j = 1; j < argc; j++) { |
|
- arg_len = strlen(argv[j]); |
|
- memcpy(saved_command_line + cmdline_len, argv[j], arg_len); |
|
- cmdline_len += arg_len; |
|
- if (j != argc - 1) { |
|
- memcpy(saved_command_line + cmdline_len, " ", 1); |
|
- cmdline_len++; |
|
- } |
|
+ |
|
+ if (i > 0) { |
|
+ saved_command_line = malloc(i); |
|
+ if (!saved_command_line) { |
|
+ fprintf(stderr, "grubby: %m\n"); |
|
+ exit(1); |
|
+ } |
|
+ saved_command_line[0] = '\0'; |
|
+ int cmdline_len = 0, arg_len; |
|
+ for (int j = 1; j < argc; j++) { |
|
+ arg_len = strlen(argv[j]); |
|
+ memcpy(saved_command_line + cmdline_len, argv[j], arg_len); |
|
+ cmdline_len += arg_len; |
|
+ if (j != argc - 1) { |
|
+ memcpy(saved_command_line + cmdline_len, " ", 1); |
|
+ cmdline_len++; |
|
+ } |
|
+ } |
|
+ saved_command_line[cmdline_len] = '\0'; |
|
} |
|
- saved_command_line[cmdline_len] = '\0'; |
|
|
|
optCon = poptGetContext("grubby", argc, argv, options, 0); |
|
poptReadDefaultConfig(optCon, 1); |
|
-- |
|
2.24.1 |
|
|
|
|