Skip to content
Snippets Groups Projects
Commit 7cdf3708 authored by Jan-Philipp Litza's avatar Jan-Philipp Litza
Browse files

gluon-autoupdater: get random number from urandom

The approach with awk's rand() wasn't really random between across
devices: When srand() was called without arguments, time() was used as
seed, which of course is the same on all devices when the script is
called via cron at HH:00:00.

This patch instead uses /dev/urandom as source of random (we don't need
cryptographically strong random numbers, so urandom is just fine) but
still uses awk for the comparison as busybox's ash cannot deal with
floats in $(())
parent 74493b2b
No related branches found
No related tags found
No related merge requests found
...@@ -10,7 +10,9 @@ BRANCH=$(uci get autoupdater.settings.branch) ...@@ -10,7 +10,9 @@ BRANCH=$(uci get autoupdater.settings.branch)
PROBABILITY=$(uci get autoupdater.${BRANCH}.probability) PROBABILITY=$(uci get autoupdater.${BRANCH}.probability)
if test "a$1" != "a-f"; then if test "a$1" != "a-f"; then
echo | awk "END{srand();exit rand() > $PROBABILITY}" # get one random byte from /dev/urandom, convert it to decimal and check
# against update_probability*255
hexdump -n1 -e '/1 "%d"' /dev/urandom | awk "{exit \$1 > $PROBABILITY * 255}"
if test $? -ne 0; then if test $? -ne 0; then
echo "No autoupdate this time. Use -f to override" echo "No autoupdate this time. Use -f to override"
exit 0 exit 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment