Blob Blame History Raw
diff -up cups-1.3.11/scheduler/select.c.CVE-2009-3553 cups-1.3.11/scheduler/select.c
--- cups-1.3.11/scheduler/select.c.CVE-2009-3553	2008-07-11 23:48:49.000000000 +0100
+++ cups-1.3.11/scheduler/select.c	2009-12-03 10:50:45.928460205 +0000
@@ -483,7 +483,7 @@ cupsdDoSelect(long timeout)		/* I - Time
       (*(fdptr->read_cb))(fdptr->data);
     }
 
-    if (fdptr->write_cb && event->filter == EVFILT_WRITE)
+    if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
     {
       cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
 	              fdptr->fd);
@@ -543,7 +543,7 @@ cupsdDoSelect(long timeout)		/* I - Time
 	  (*(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)))
 	{
 	  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
 	        	  fdptr->fd);
@@ -655,7 +655,7 @@ cupsdDoSelect(long timeout)		/* I - Time
         (*(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)))
       {
         cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
 	                fdptr->fd);
@@ -725,7 +725,7 @@ cupsdDoSelect(long timeout)		/* I - Time
         (*(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))
       {
         cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
 	                fdptr->fd);