summaryrefslogtreecommitdiff
path: root/devel/cvs
diff options
context:
space:
mode:
authorwiz <wiz@pkgsrc.org>2004-09-09 22:25:16 +0000
committerwiz <wiz@pkgsrc.org>2004-09-09 22:25:16 +0000
commit4e096b8547296dc256964192cf8c8cd91590bd95 (patch)
tree4dd6ee735a8ecf7954aecfb45140d9598b13893d /devel/cvs
parent7b9b305e16f54ccedab93d5dbcdf79cb4eb4115b (diff)
downloadpkgsrc-4e096b8547296dc256964192cf8c8cd91590bd95.tar.gz
From otto@OpenBSD:
Do not evaluate this->next after calling the handler; the handler may have clobbered it. Resolves core dumps of cvs server on user ^C.
Diffstat (limited to 'devel/cvs')
-rw-r--r--devel/cvs/patches/patch-ad16
1 files changed, 16 insertions, 0 deletions
diff --git a/devel/cvs/patches/patch-ad b/devel/cvs/patches/patch-ad
new file mode 100644
index 00000000000..3d71fb61bbd
--- /dev/null
+++ b/devel/cvs/patches/patch-ad
@@ -0,0 +1,16 @@
+$NetBSD: patch-ad,v 1.7 2004/09/09 22:25:16 wiz Exp $
+
+--- lib/sighandle.c.orig 2004-02-03 15:37:50.000000000 +0100
++++ lib/sighandle.c
+@@ -155,8 +155,10 @@ int sig;
+ this = SIG_handlers[sig];
+ while (this != (struct SIG_hlist *) NULL)
+ {
+- (*this->handler)(sig);
++ /* handler may free this (and thus clobber this->next) */
++ struct SIG_hlist *current = this;
+ this = this->next;
++ (*current->handler)(sig);
+ }
+
+ return;