summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-process/lsof/files/lsof-4.94-arm-sigbus-fix.patch')
-rw-r--r--sys-process/lsof/files/lsof-4.94-arm-sigbus-fix.patch63
1 files changed, 0 insertions, 63 deletions
diff --git a/sys-process/lsof/files/lsof-4.94-arm-sigbus-fix.patch b/sys-process/lsof/files/lsof-4.94-arm-sigbus-fix.patch
deleted file mode 100644
index 95bad206372e..000000000000
--- a/sys-process/lsof/files/lsof-4.94-arm-sigbus-fix.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-https://bugs.gentoo.org/797358
-
-From 21cb1dad1243f4c0a427d893babab12e48b60f0e Mon Sep 17 00:00:00 2001
-From: Masatake YAMATO <yamato@redhat.com>
-Date: Sun, 20 Jun 2021 21:40:55 +0900
-Subject: [PATCH] Adjust alignment of buffer passed to stat()
-
-Close #160.
-
-The original code passes char[] buffer to stat().
-This can be cause a SIGBUS.
-
-#160 reported an actual crash on armv7a + glibc-2.33 platform.
-See also https://sourceware.org/bugzilla/show_bug.cgi?id=27993.
-
-The issue is reported by @10ne1.
-
-Signed-off-by: Masatake YAMATO <yamato@redhat.com>
-[Adrian: Backported to 4.94]
-Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---- a/misc.c
-+++ b/misc.c
-@@ -293,7 +293,15 @@ doinchild(fn, fp, rbuf, rbln)
- */
-
- int r_al, r_rbln;
-- char r_arg[MAXPATHLEN+1], r_rbuf[MAXPATHLEN+1];
-+ char r_arg[MAXPATHLEN+1];
-+ union {
-+ char r_rbuf[MAXPATHLEN+1];
-+ /*
-+ * This field is only for adjusting the alignment of r_rbuf that
-+ * can be used as an argument for stat().
-+ */
-+ struct stat _;
-+ } r;
- int (*r_fn)();
- /*
- * Close sufficient open file descriptors except Pipes[0] and
-@@ -358,16 +366,16 @@ doinchild(fn, fp, rbuf, rbln)
- || read(Pipes[0], r_arg, r_al) != r_al
- || read(Pipes[0], (char *)&r_rbln, sizeof(r_rbln))
- != (int)sizeof(r_rbln)
-- || r_rbln < 1 || r_rbln > (int)sizeof(r_rbuf))
-+ || r_rbln < 1 || r_rbln > (int)sizeof(r.r_rbuf))
- break;
-- zeromem (r_rbuf, r_rbln);
-- rv = r_fn(r_arg, r_rbuf, r_rbln);
-+ zeromem (r.r_rbuf, r_rbln);
-+ rv = r_fn(r_arg, r.r_rbuf, r_rbln);
- en = errno;
- if (write(Pipes[3], (char *)&rv, sizeof(rv))
- != sizeof(rv)
- || write(Pipes[3], (char *)&en, sizeof(en))
- != sizeof(en)
-- || write(Pipes[3], r_rbuf, r_rbln) != r_rbln)
-+ || write(Pipes[3], r.r_rbuf, r_rbln) != r_rbln)
- break;
- }
- (void) _exit(0);
---
-2.32.0
-