bin/54354: Bug in inetd connection rate control
Jose Marcio Martins da Cruz
Jose-Marcio.Martins at ensmp.fr
Thu Jul 10 22:40:18 PDT 2003
>Number: 54354
>Category: bin
>Synopsis: Bug in inetd connection rate control
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jul 10 22:40:15 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Jose Marcio Martins da Cruz
>Release: FreeBSD 4.8-STABLE i386
>Organization:
Ecole des Mines de Paris
>Environment:
>Description:
Hello,
There seems to have a bug at inetd.c source file.
This pb regards connection rate control feature.
Line 2341 shall probably be :
if ((cnt * 60) / (CHTSIZE * CHTGRAN) > sep->se_maxcpm) {
...
instead of
if (cnt * (CHTSIZE * CHTGRAN) / 60 > sep->se_maxcpm) {
char pname[INET6_ADDRSTRLEN];
getnameinfo((struct sockaddr *)&rss,
((struct sockaddr *)&rss)->sa_len,
pname, sizeof(pname), NULL, 0,
NI_NUMERICHOST|NI_WITHSCOPEID);
r = -1;
syslog(LOG_ERR,
"%s from %s exceeded counts/min (limit %d/min)",
sep->se_service, pname,
sep->se_maxcpm);
}
as the connection rate is the number of connections ***DIVIDED*** by the
size of the measurement window.
As long as you don't change original CHTSIZE and CHTGRAN values (6 and
10), this bug has no effect.
This problem was remarked by Claus Assmann (ca at sendmail.org) and Jose
Marcio Martins da Cruz (Jose-Marcio.Martins at ensmp.fr).
Version information of the source file is :
__FBSDID("$FreeBSD: src/usr.sbin/inetd/inetd.c,v 1.119 2003/02/23 16:54:19 dwmalone Exp $");
Best regards,
Jose-Marcio
--
---------------------------------------------------------------
Jose Marcio MARTINS DA CRUZ Tel. :(33) 01.40.51.93.41
Ecole des Mines de Paris http://j-chkmail.ensmp.fr
60, bd Saint Michel http://www.ensmp.fr/~martins
75272 - PARIS CEDEX 06 mailto:Jose-Marcio.Martins at ensmp.fr
>How-To-Repeat:
>Fix:
--- inetd.c.org 2003-07-07 12:37:55.987790000 +0200
+++ inetd.c 2003-07-07 12:39:19.990674000 +0200
@@ -2338,7 +2338,7 @@
cnt += ct->ct_Count;
}
}
- if (cnt * (CHTSIZE * CHTGRAN) / 60 > sep->se_maxcpm) {
+ if ((cnt * 60) / (CHTSIZE * CHTGRAN) > sep->se_maxcpm) {
char pname[INET6_ADDRSTRLEN];
getnameinfo((struct sockaddr *)&rss,
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list