]> git.ipfire.org Git - ipfire-3.x.git/blobdiff - bash/patches/bash-4.2-coverity.patch
bash: Update to 4.3
[ipfire-3.x.git] / bash / patches / bash-4.2-coverity.patch
diff --git a/bash/patches/bash-4.2-coverity.patch b/bash/patches/bash-4.2-coverity.patch
new file mode 100644 (file)
index 0000000..5fc8456
--- /dev/null
@@ -0,0 +1,99 @@
+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);