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.
99 lines
3.3 KiB
99 lines
3.3 KiB
diff -up bash-4.2/execute_cmd.c.coverity bash-4.2/execute_cmd.c |
|
--- bash-4.2/execute_cmd.c.coverity 2011-02-24 13:04:35.000000000 +0100 |
|
+++ bash-4.2/execute_cmd.c 2011-02-24 13:49:13.000000000 +0100 |
|
@@ -5036,7 +5036,7 @@ shell_execve (command, args, env) |
|
Elf32_Ehdr ehdr; |
|
Elf32_Phdr *phdr; |
|
Elf32_Shdr *shdr; |
|
- int nphdr, nshdr; |
|
+ Elf32_Half nphdr, nshdr; |
|
|
|
/* We have to copy the data since the sample buffer |
|
might not be aligned correctly to be accessed as |
|
@@ -5044,12 +5044,12 @@ shell_execve (command, args, env) |
|
memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); |
|
|
|
nshdr = ehdr.e_shnum; |
|
- shdr = (Elf32_Shdr *) malloc (nshdr * ehdr.e_shentsize); |
|
+ shdr = (Elf32_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); |
|
|
|
if (shdr != NULL) |
|
{ |
|
#ifdef HAVE_PREAD |
|
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, |
|
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, |
|
ehdr.e_shoff); |
|
#else |
|
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) |
|
@@ -5091,11 +5091,11 @@ shell_execve (command, args, env) |
|
} |
|
|
|
nphdr = ehdr.e_phnum; |
|
- phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); |
|
+ phdr = (Elf32_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); |
|
if (phdr != NULL) |
|
{ |
|
#ifdef HAVE_PREAD |
|
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, |
|
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, |
|
ehdr.e_phoff); |
|
#else |
|
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) |
|
@@ -5120,7 +5120,7 @@ shell_execve (command, args, env) |
|
Elf64_Ehdr ehdr; |
|
Elf64_Phdr *phdr; |
|
Elf64_Shdr *shdr; |
|
- int nphdr, nshdr; |
|
+ Elf32_Half nphdr, nshdr; |
|
|
|
/* We have to copy the data since the sample buffer |
|
might not be aligned correctly to be accessed as |
|
@@ -5128,11 +5128,11 @@ shell_execve (command, args, env) |
|
memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); |
|
|
|
nshdr = ehdr.e_shnum; |
|
- shdr = (Elf64_Shdr *) malloc (nshdr * ehdr.e_shentsize); |
|
+ shdr = (Elf64_Shdr *) malloc ((size_t)nshdr * (size_t)ehdr.e_shentsize); |
|
if (shdr != NULL) |
|
{ |
|
#ifdef HAVE_PREAD |
|
- sample_len = pread (fd, shdr, nshdr * ehdr.e_shentsize, |
|
+ sample_len = pread (fd, shdr, (size_t)nshdr * (size_t)ehdr.e_shentsize, |
|
ehdr.e_shoff); |
|
#else |
|
if (lseek (fd, ehdr.e_shoff, SEEK_SET) != -1) |
|
@@ -5174,11 +5174,11 @@ shell_execve (command, args, env) |
|
} |
|
|
|
nphdr = ehdr.e_phnum; |
|
- phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); |
|
+ phdr = (Elf64_Phdr *) malloc ((size_t)nphdr * (size_t)ehdr.e_phentsize); |
|
if (phdr != NULL) |
|
{ |
|
#ifdef HAVE_PREAD |
|
- sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, |
|
+ sample_len = pread (fd, phdr, (size_t)nphdr * (size_t)ehdr.e_phentsize, |
|
ehdr.e_phoff); |
|
#else |
|
if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) |
|
@@ -5200,8 +5200,8 @@ shell_execve (command, args, env) |
|
|
|
if (offset != -1) |
|
{ |
|
- size_t maxlen = 0; |
|
- size_t actlen = 0; |
|
+ ssize_t maxlen = 0; |
|
+ ssize_t actlen = 0; |
|
char *interp = NULL; |
|
|
|
do |
|
@@ -5250,7 +5250,8 @@ shell_execve (command, args, env) |
|
} |
|
#endif |
|
#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) |
|
- close (fd); |
|
+ if (fd >= 0) |
|
+ close (fd); |
|
#endif |
|
errno = i; |
|
file_error (command);
|
|
|