diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 25ff2c1cacf1648fbd99bbd266e525a770f75ad4..807b705d875c0acb923294b667f96468d016e90b 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -233,6 +233,16 @@ slapd_daemon( ldap_pvt_thread_mutex_unlock( &new_conn_mutex ); continue; } + + /* make sure descriptor number isn't too great */ + if ( ns >= dtblsize ) { + Debug( LDAP_DEBUG_ANY, + "new connection on %d beyond descriptor table size %d\n", + ns, dtblsize, 0 ); + close(ns); + ldap_pvt_thread_mutex_unlock( &new_conn_mutex ); + continue; + } lber_pvt_sb_set_desc( &c[ns].c_sb, ns ); lber_pvt_sb_set_io( &c[ns].c_sb, &lber_pvt_sb_io_tcp, NULL );