--- cups-1.1.20/scheduler/dirsvc.c.orig 2003-10-22 18:41:33 +0400 +++ cups-1.1.20/scheduler/dirsvc.c 2004-09-03 20:14:28 +0400 @@ -1064,7 +1064,7 @@ UpdateCUPSBrowse(void) int auth; /* Authorization status */ int len; /* Length of name string */ int bytes; /* Number of bytes left */ - char packet[1540], /* Broadcast packet */ + char packet[1541], /* Broadcast packet */ *pptr; /* Pointer into packet */ struct sockaddr_in srcaddr; /* Source address */ char srcname[1024]; /* Source hostname */ @@ -1089,8 +1089,8 @@ UpdateCUPSBrowse(void) */ len = sizeof(srcaddr); - if ((bytes = recvfrom(BrowseSocket, packet, sizeof(packet), 0, - (struct sockaddr *)&srcaddr, &len)) <= 0) + if ((bytes = recvfrom(BrowseSocket, packet, sizeof(packet)-1, 0, + (struct sockaddr *)&srcaddr, &len)) < 0) { /* * "Connection refused" is returned under Linux if the destination port