Resolves: #1938898, coverity issue

This commit is contained in:
Than Ngo 2021-03-21 14:10:57 +01:00
parent 5a42476a97
commit 22890a8cdd
1 changed files with 54 additions and 16 deletions

View File

@ -1,27 +1,65 @@
diff -up which-2.21/tilde/tilde.c.me which-2.21/tilde/tilde.c
--- which-2.21/tilde/tilde.c.me 2018-07-23 14:32:47.002225732 +0200
+++ which-2.21/tilde/tilde.c 2018-07-23 14:49:06.363623898 +0200
@@ -196,7 +196,8 @@ tilde_expand (string)
int result_size, result_index;
diff -up which-2.21/tilde/tilde.c.coverity which-2.21/tilde/tilde.c
--- which-2.21/tilde/tilde.c.coverity 2008-01-16 18:51:57.000000000 +0100
+++ which-2.21/tilde/tilde.c 2021-03-21 11:43:00.338160051 +0100
@@ -193,10 +193,10 @@ tilde_expand (string)
const char *string;
{
char *result;
- int result_size, result_index;
+ int result_size = 0, result_index = 0;
result_index = result_size = 0;
- result_index = result_size = 0;
- if (result = strchr (string, '~'))
+ result = strchr (string, '~');
+ if (result)
result = (char *)xmalloc (result_size = (strlen (string) + 16));
else
result = (char *)xmalloc (result_size = (strlen (string) + 1));
diff -up which-2.21/which.c.me which-2.21/which.c
diff -up which-2.21/which.c.me which-2.21/which.c
--- which-2.21/which.c.me 2018-07-23 15:09:04.355222509 +0200
+++ which-2.21/which.c 2018-07-25 14:57:43.696309701 +0200
@@ -671,6 +671,9 @@ int main(int argc, char *argv[])
}
@@ -270,7 +270,7 @@ isolate_tilde_prefix (fname, lenp)
char *ret;
int i;
- ret = (char *)xmalloc (strlen (fname));
+ ret = (char *)xmalloc (strlen (fname) + 1);
#if defined (__MSDOS__)
for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
#else
diff -up which-2.21/which.c.coverity which-2.21/which.c
--- which-2.21/which.c.coverity 2015-03-19 17:50:24.000000000 +0100
+++ which-2.21/which.c 2021-03-21 12:19:31.289160885 +0100
@@ -76,16 +76,16 @@ static int skip_functions = 0, read_func
static char *find_command_in_path(const char *name, const char *path_list, int *path_index)
{
- char *found = NULL, *full_path;
+ char *found = NULL, *full_path = NULL;
int status, name_len;
name_len = strlen(name);
+ char *p;
if (!absolute_program(name))
absolute_path_given = 0;
else
{
- char *p;
absolute_path_given = 1;
if (abs_path)
@@ -159,6 +159,7 @@ static char *find_command_in_path(const
free(full_path);
}
+ if (abs_path)
+ free(abs_path);
+
return fail_count;
+ name = NULL; p = NULL; path_list = NULL;
return (found);
}
@@ -540,7 +541,7 @@ int main(int argc, char *argv[])
int function_start_type = 0;
if (read_alias || read_functions)
{
- char buf[1024];
+ char buf[1024] = {};
int processing_aliases = read_alias;
if (isatty(0))