usr/src/cmd/cups/Patches/13.cups-1.4.2-CVE-2009-3553.patch
changeset 5 d07534556b03
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/cmd/cups/Patches/13.cups-1.4.2-CVE-2009-3553.patch	Sat Jan 16 18:11:20 2010 +0200
@@ -0,0 +1,40 @@
+diff -up cups-1.4.2/scheduler/select.c.str3200 cups-1.4.2/scheduler/select.c
+--- scheduler/select.c.str3200	2009-07-15 00:07:52.000000000 +0100
++++ scheduler/select.c	2009-11-10 15:42:55.359665174 +0000
+@@ -454,7 +454,7 @@ cupsdDoSelect(long timeout)		/* I - Time
+     if (fdptr->read_cb && event->filter == EVFILT_READ)
+       (*(fdptr->read_cb))(fdptr->data);
+ 
+-    if (fdptr->write_cb && event->filter == EVFILT_WRITE)
++    if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
+       (*(fdptr->write_cb))(fdptr->data);
+ 
+     release_fd(fdptr);
+@@ -499,7 +499,7 @@ cupsdDoSelect(long timeout)		/* I - Time
+ 	if (fdptr->read_cb && (event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)))
+ 	  (*(fdptr->read_cb))(fdptr->data);
+ 
+-	if (fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
++	if (fdptr->use > 1 && fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
+ 	  (*(fdptr->write_cb))(fdptr->data);
+ 
+ 	release_fd(fdptr);
+@@ -590,7 +590,7 @@ cupsdDoSelect(long timeout)		/* I - Time
+       if (fdptr->read_cb && (pfd->revents & (POLLIN | POLLERR | POLLHUP)))
+         (*(fdptr->read_cb))(fdptr->data);
+ 
+-      if (fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
++      if (fdptr->use > 1 && fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
+         (*(fdptr->write_cb))(fdptr->data);
+ 
+       release_fd(fdptr);
+@@ -645,7 +645,7 @@ cupsdDoSelect(long timeout)		/* I - Time
+       if (fdptr->read_cb && FD_ISSET(fdptr->fd, &cupsd_current_input))
+         (*(fdptr->read_cb))(fdptr->data);
+ 
+-      if (fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
++      if (fdptr->use > 1 && fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
+         (*(fdptr->write_cb))(fdptr->data);
+ 
+       release_fd(fdptr);
+