mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
base-files: use procd init for urandom_seed
Previous implementation was blocking the init and breaking halt/reboot/sysupgrade (reported by Daniel Golle) v2: use procd logging, use set -e + trap for error handling Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com> Tested-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
b8cd996d92
commit
35e423ca41
@ -1,29 +1,12 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
START=99
|
START=99
|
||||||
|
USE_PROCD=1
|
||||||
|
|
||||||
EXTRA_COMMANDS="save"
|
start_service() {
|
||||||
|
procd_open_instance "urandom_seed"
|
||||||
_log() {
|
procd_set_param command "/sbin/urandom_seed"
|
||||||
logger -t urandom_seed "$1"
|
procd_set_param stdout 1
|
||||||
}
|
procd_set_param stderr 1
|
||||||
|
procd_close_instance
|
||||||
_save() {
|
|
||||||
touch $1.tmp || { _log "touch $1 failed"; return; }
|
|
||||||
chown root:root $1.tmp || { _log "chown $1 failed"; return; }
|
|
||||||
chmod 600 $1.tmp || { _log "chmod $1 failed"; return; }
|
|
||||||
getrandom 512 > $1.tmp || { _log "getrandom failed"; return; }
|
|
||||||
mv $1.tmp $1 || { _log "mv $1 failed"; return; }
|
|
||||||
}
|
|
||||||
|
|
||||||
save() {
|
|
||||||
SEED="$(uci -q get system.@system[0].urandom_seed)"
|
|
||||||
[ "${SEED:0:1}" == "/" ] && _save "$SEED" && _log "Seed saved ($SEED)"
|
|
||||||
|
|
||||||
SEED=/etc/urandom.seed
|
|
||||||
[ ! -f $SEED ] && _save "$SEED" && _log "Seed saved ($SEED)"
|
|
||||||
}
|
|
||||||
|
|
||||||
boot() {
|
|
||||||
save
|
|
||||||
}
|
}
|
||||||
|
20
package/base-files/files/sbin/urandom_seed
Executable file
20
package/base-files/files/sbin/urandom_seed
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
trap '[ "$?" -eq 0 ] || echo "An error occured" >&2' EXIT
|
||||||
|
|
||||||
|
save() {
|
||||||
|
touch "$1.tmp"
|
||||||
|
chown root:root "$1.tmp"
|
||||||
|
chmod 600 "$1.tmp"
|
||||||
|
getrandom 512 > "$1.tmp"
|
||||||
|
mv "$1.tmp" "$1"
|
||||||
|
echo "Seed saved ($1)"
|
||||||
|
}
|
||||||
|
|
||||||
|
SEED="$(uci -q get system.@system[0].urandom_seed || true)"
|
||||||
|
[ "${SEED:0:1}" == "/" ] && save "$SEED"
|
||||||
|
|
||||||
|
SEED=/etc/urandom.seed
|
||||||
|
[ ! -f $SEED ] && save "$SEED"
|
||||||
|
true
|
Loading…
Reference in New Issue
Block a user