Browse Source

Now that fill_baddynamic() is being called much earlier, it cannot use

grep in a NFS diskless environment.  Found and fixed by Hugo Villeneuve
OPENBSD_5_0
deraadt 13 years ago
parent
commit
d1eeef20be
1 changed files with 20 additions and 19 deletions
  1. +20
    -19
      src/etc/rc

+ 20
- 19
src/etc/rc View File

@ -1,4 +1,4 @@
# $OpenBSD: rc,v 1.387 2011/07/18 21:01:23 deraadt Exp $ # $OpenBSD: rc,v 1.388 2011/07/19 13:49:07 deraadt Exp $
# System startup script run by init on autoboot # System startup script run by init on autoboot
# or after single-user. # or after single-user.
@ -120,26 +120,27 @@ fill_baddynamic()
local _sysctl="net.inet.${_service}.baddynamic" local _sysctl="net.inet.${_service}.baddynamic"
local _name _port _srv _junk _ban local _name _port _srv _junk _ban
local _i=0 local _i=0
grep "/${_service}" /etc/services | { local _ifs="${IFS}"
IFS=" /" IFS=" /"
while read _name _port _srv _junk; do while read _name _port _srv _junk; do
[ "x${_srv}" = "x${_service}" ] || continue; [ "x${_srv}" = "x${_service}" ] && \
if [ "x${_ban}" = "x" ]; then [ "x${_name}" = "x${_name#\#}" ] || continue;
_ban="+${_port}" if [ "x${_ban}" = "x" ]; then
else _ban="+${_port}"
_ban="${_ban},+${_port}" else
fi _ban="${_ban},+${_port}"
# Flush before argv gets too long fi
if [ $((++_i)) -gt 128 ]; then # Flush before argv gets too long
sysctl ${_sysctl}=${_ban} >/dev/null if [ $((++_i)) -gt 128 ]; then
_ban=""
_i=0
fi
done;
if [ "x${_ban}" != "x" ]; then
sysctl ${_sysctl}=${_ban} >/dev/null sysctl ${_sysctl}=${_ban} >/dev/null
_ban=""
_i=0
fi fi
} done < /etc/services;
if [ "x${_ban}" != "x" ]; then
sysctl ${_sysctl}=${_ban} >/dev/null
fi
IFS="${_ifs}"
} }
start_daemon() start_daemon()


|||||||
|||||||
xxxxxxxxxx
 
000:0
x
 
000:0
Loading…
Cancel
Save