edc04bd
diff -up cups-1.4.3/scheduler/select.c.CVE-2010-0302 cups-1.4.3/scheduler/select.c
edc04bd
--- cups-1.4.3/scheduler/select.c.CVE-2010-0302	2010-01-14 23:40:19.000000000 +0100
edc04bd
+++ cups-1.4.3/scheduler/select.c	2010-03-31 13:54:30.000000000 +0200
1f529d9
@@ -454,7 +454,8 @@ cupsdDoSelect(long timeout)		/* I - Time
1f529d9
     if (fdptr->read_cb && event->filter == EVFILT_READ)
1f529d9
       (*(fdptr->read_cb))(fdptr->data);
1f529d9
 
1f529d9
-    if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
1f529d9
+    if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE &&
1f529d9
+        !cupsArrayFind(cupsd_inactive_fds, fdptr))
1f529d9
       (*(fdptr->write_cb))(fdptr->data);
1f529d9
 
1f529d9
     release_fd(fdptr);
edc04bd
@@ -500,7 +501,8 @@ cupsdDoSelect(long timeout)		/* I - Time
1f529d9
 	  (*(fdptr->read_cb))(fdptr->data);
1f529d9
 
edc04bd
 	if (fdptr->use > 1 && fdptr->write_cb &&
edc04bd
-	    (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
1f529d9
+	    (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)) &&
1f529d9
+	    !cupsArrayFind(cupsd_inactive_fds, fdptr))
1f529d9
 	  (*(fdptr->write_cb))(fdptr->data);
1f529d9
 
1f529d9
 	release_fd(fdptr);