r3657 -
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches
Simon Horman
horms at costa.debian.org
Mon Aug 1 09:32:10 UTC 2005
Author: horms
Date: 2005-08-01 09:32:09 +0000 (Mon, 01 Aug 2005)
New Revision: 3657
Modified:
trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/171_arch-ia64-x86_64-execve-overflow.diff
Log:
update patch - its mostly a regerssion
Modified: trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/171_arch-ia64-x86_64-execve-overflow.diff
===================================================================
--- trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/171_arch-ia64-x86_64-execve-overflow.diff 2005-08-01 09:31:10 UTC (rev 3656)
+++ trunk/kernel-2.4/source/kernel-source-2.4.27-2.4.27/debian/patches/171_arch-ia64-x86_64-execve-overflow.diff 2005-08-01 09:32:09 UTC (rev 3657)
@@ -15,8 +15,8 @@
Signed-off-by: Andi Kleen <ak at suse.de>
-I:100644 100644 d398d537c16b1a744e4bf76136d19d1d80c25099 acfa7e6bb6307923a3c6738b0c498d99c8ce890a M arch/ia64/ia32/sys_ia32.c
-I:100644 100644 0c43987ce7ab3032b96036c7d9d22b81a22a151f 3692043ab57ab273234a2af15dc2d01560f3297a M arch/x86_64/ia32/sys_ia32.c
+D:100644 100644 d398d537c16b1a744e4bf76136d19d1d80c25099 acfa7e6bb6307923a3c6738b0c498d99c8ce890a M arch/ia64/ia32/sys_ia32.c
+R:100644 100644 0c43987ce7ab3032b96036c7d9d22b81a22a151f 3692043ab57ab273234a2af15dc2d01560f3297a M arch/x86_64/ia32/sys_ia32.c
Key:
S: Skipped
@@ -24,113 +24,17 @@
D: Deleted Manually deleted by subsequent user edit
R: Revised Manually revised by subsequent user edit
-diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
---- a/arch/ia64/ia32/sys_ia32.c
-+++ b/arch/ia64/ia32/sys_ia32.c
-@@ -94,7 +94,7 @@ asmlinkage unsigned long sys_brk(unsigne
- static DECLARE_MUTEX(ia32_mmap_sem);
-
- static int
--nargs (unsigned int arg, char **ap)
-+nargs (unsigned int arg, char **ap, int max)
- {
- unsigned int addr;
- int n, err;
-@@ -107,6 +107,8 @@ nargs (unsigned int arg, char **ap)
- err = get_user(addr, (unsigned int *)A(arg));
- if (err)
- return err;
-+ if (n > max)
-+ return -E2BIG;
- if (ap)
- *ap++ = (char *) A(addr);
- arg += sizeof(unsigned int);
-@@ -128,10 +130,11 @@ sys32_execve (char *filename, unsigned i
- int na, ne, len;
- long r;
-
-- na = nargs(argv, NULL);
-+ /* Allocates upto 2x MAX_ARG_PAGES */
-+ na = nargs(argv, NULL, (MAX_ARG_PAGES*PAGE_SIZE) / sizeof(char *) - 1);
- if (na < 0)
- return na;
-- ne = nargs(envp, NULL);
-+ ne = nargs(envp, NULL, (MAX_ARG_PAGES*PAGE_SIZE) / sizeof(char *) - 1 );
- if (ne < 0)
- return ne;
- len = (na + ne + 2) * sizeof(*av);
-@@ -143,10 +146,10 @@ sys32_execve (char *filename, unsigned i
- av[na] = NULL;
- ae[ne] = NULL;
-
-- r = nargs(argv, av);
-+ r = nargs(argv, av, na);
- if (r < 0)
- goto out;
-- r = nargs(envp, ae);
-+ r = nargs(envp, ae, ne);
- if (r < 0)
- goto out;
-
+Rediffed for Debian - Horms
+
diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
--- a/arch/x86_64/ia32/sys_ia32.c
+++ b/arch/x86_64/ia32/sys_ia32.c
-@@ -2200,7 +2200,7 @@ asmlinkage long sys32_ustat(dev_t dev, s
- return ret;
- }
-
--static int nargs(u32 src, char **dst)
-+static int nargs(u32 src, char **dst, int max)
- {
- int cnt;
- u32 val;
-@@ -2210,13 +2210,13 @@ static int nargs(u32 src, char **dst)
- int ret = get_user(val, (__u32 *)(u64)src);
- if (ret)
- return ret;
-+ if (cnt > max)
-+ return -E2BIG;
- if (dst)
+@@ -2207,7 +2207,7 @@
dst[cnt] = (char *)(u64)val;
cnt++;
src += 4;
-- if (cnt >= (MAX_ARG_PAGES * PAGE_SIZE) / sizeof(char *))
-- return -E2BIG;
-- } while(val);
-+ } while(val);
+- if (cnt > max)
++ if (cnt >= (MAX_ARG_PAGES * PAGE_SIZE) / sizeof(char *))
+ return -E2BIG;
+ } while(val);
if (dst)
- dst[cnt-1] = 0;
- return cnt;
-@@ -2230,13 +2230,14 @@ asmlinkage long sys32_execve(char *name,
- int ret;
- unsigned sz = 0;
-
-+ /* Can actually allocate 2*MAX_ARG_PAGES */
- if (argv) {
-- na = nargs(argv, NULL);
-+ na = nargs(argv, NULL, (MAX_ARG_PAGES * PAGE_SIZE)/sizeof(char*) - 1);
- if (na < 0)
- return -EFAULT;
- }
- if (envp) {
-- ne = nargs(envp, NULL);
-+ ne = nargs(envp, NULL, (MAX_ARG_PAGES * PAGE_SIZE)/sizeof(char*) - 1);
- if (ne < 0)
- return -EFAULT;
- }
-@@ -2252,13 +2253,13 @@ asmlinkage long sys32_execve(char *name,
- }
-
- if (argv) {
-- ret = nargs(argv, buf);
-+ ret = nargs(argv, buf, na);
- if (ret < 0)
- goto free;
- }
-
- if (envp) {
-- ret = nargs(envp, buf + na);
-+ ret = nargs(envp, buf + na, ne);
- if (ret < 0)
- goto free;
- }
More information about the Kernel-svn-changes
mailing list