summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2022-04-06 20:23:46 +0000
committer Eric Hameleers <alien@slackware.com>2022-04-07 06:59:44 +0200
commitbfece22130a1673e30695d7c5e563b9eace2b915 (patch)
tree41979314035e2fd0ac8460dbb7bf4ed505ad7d51
parentdc48df8960b47406124ff6c59af6d6bd54c60eb7 (diff)
downloadcurrent-bfece22130a1673e30695d7c5e563b9eace2b915.tar.gz
current-bfece22130a1673e30695d7c5e563b9eace2b915.tar.xz
Wed Apr 6 20:23:46 UTC 202220220406202346
a/haveged-1.9.17-x86_64-2.txz: Rebuilt. Install /etc/rc.d/rc.haveged as non-executable. For existing installations running a recent kernel, it is safe to turn this off. Back when we added the haveged package we were using the 4.4 kernel, but since Linux 5.4 this same entropy generating algorithm has been built into the kernel, so there's no reason to also run it in userspace. We'll keep the package around (for now, anyway) in case someone might be running an old kernel. Thanks to Jason A. Donenfeld. a/sysvinit-scripts-15.0-noarch-10.txz: Rebuilt. rc.S, rc.6: use the seedrng utility to seed and initialize the kernel random number generator and generate a new seed. If seedrng is missing, we'll attempt to do these things with scripting. Thanks to Jason A. Donenfeld for hints about how to make a modest improvement in that regard (blame me for any problems with my own changes), but because you can't force the kernel RNG to initialize with a script (it needs an ioctl), you won't get the same guarantees that you do when using the new seedrng utility. a/util-linux-2.38-x86_64-2.txz: Rebuilt. Added seedrng utility, used to seed and initialize the kernel random number generator and to generate new seeds for carrying entropy across reboots. Thanks to Jason A. Donenfeld. n/libmnl-1.0.5-x86_64-1.txz: Upgraded. n/libnfnetlink-1.0.2-x86_64-1.txz: Upgraded. xap/mozilla-thunderbird-91.8.0-x86_64-1.txz: Upgraded. This release contains security fixes and improvements. For more information, see: https://www.mozilla.org/en-US/thunderbird/91.8.0/releasenotes/ https://www.mozilla.org/en-US/security/advisories/mfsa2022-15/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1097 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28281 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1197 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1196 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28282 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28285 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28286 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-24713 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28289 (* Security fix *)
-rw-r--r--ChangeLog.rss52
-rw-r--r--ChangeLog.txt40
-rw-r--r--FILELIST.TXT113
-rwxr-xr-xrecompress.sh1
-rwxr-xr-xsource/a/haveged/haveged.SlackBuild6
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.631
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.S55
-rwxr-xr-xsource/a/sysvinit-scripts/sysvinit-scripts.SlackBuild4
-rw-r--r--source/a/util-linux/seedrng.841
-rw-r--r--source/a/util-linux/seedrng.c441
-rwxr-xr-xsource/a/util-linux/util-linux.SlackBuild6
-rwxr-xr-xsource/n/libmnl/libmnl.SlackBuild2
-rw-r--r--source/n/libmnl/libmnl.url1
-rwxr-xr-xsource/n/libnfnetlink/libnfnetlink.SlackBuild2
14 files changed, 715 insertions, 80 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index 45f3b940f..df33a607c 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,58 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Tue, 5 Apr 2022 19:16:30 GMT</pubDate>
- <lastBuildDate>Wed, 6 Apr 2022 04:59:43 GMT</lastBuildDate>
+ <pubDate>Wed, 6 Apr 2022 20:23:46 GMT</pubDate>
+ <lastBuildDate>Thu, 7 Apr 2022 04:59:44 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.17</generator>
<item>
+ <title>Wed, 6 Apr 2022 20:23:46 GMT</title>
+ <pubDate>Wed, 6 Apr 2022 20:23:46 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20220406202346</link>
+ <guid isPermaLink="false">20220406202346</guid>
+ <description>
+ <![CDATA[<pre>
+a/haveged-1.9.17-x86_64-2.txz: Rebuilt.
+ Install /etc/rc.d/rc.haveged as non-executable. For existing installations
+ running a recent kernel, it is safe to turn this off.
+ Back when we added the haveged package we were using the 4.4 kernel, but
+ since Linux 5.4 this same entropy generating algorithm has been built into
+ the kernel, so there's no reason to also run it in userspace. We'll keep
+ the package around (for now, anyway) in case someone might be running an
+ old kernel. Thanks to Jason A. Donenfeld.
+a/sysvinit-scripts-15.0-noarch-10.txz: Rebuilt.
+ rc.S, rc.6: use the seedrng utility to seed and initialize the kernel
+ random number generator and generate a new seed.
+ If seedrng is missing, we'll attempt to do these things with scripting.
+ Thanks to Jason A. Donenfeld for hints about how to make a modest
+ improvement in that regard (blame me for any problems with my own changes),
+ but because you can't force the kernel RNG to initialize with a script
+ (it needs an ioctl), you won't get the same guarantees that you do when
+ using the new seedrng utility.
+a/util-linux-2.38-x86_64-2.txz: Rebuilt.
+ Added seedrng utility, used to seed and initialize the kernel random number
+ generator and to generate new seeds for carrying entropy across reboots.
+ Thanks to Jason A. Donenfeld.
+n/libmnl-1.0.5-x86_64-1.txz: Upgraded.
+n/libnfnetlink-1.0.2-x86_64-1.txz: Upgraded.
+xap/mozilla-thunderbird-91.8.0-x86_64-1.txz: Upgraded.
+ This release contains security fixes and improvements.
+ For more information, see:
+ https://www.mozilla.org/en-US/thunderbird/91.8.0/releasenotes/
+ https://www.mozilla.org/en-US/security/advisories/mfsa2022-15/
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1097
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28281
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1197
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1196
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28282
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28285
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28286
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-24713
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28289
+ (* Security fix *)
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Tue, 5 Apr 2022 19:16:30 GMT</title>
<pubDate>Tue, 5 Apr 2022 19:16:30 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20220405191630</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 2b094061b..67c8f0fb3 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,43 @@
+Wed Apr 6 20:23:46 UTC 2022
+a/haveged-1.9.17-x86_64-2.txz: Rebuilt.
+ Install /etc/rc.d/rc.haveged as non-executable. For existing installations
+ running a recent kernel, it is safe to turn this off.
+ Back when we added the haveged package we were using the 4.4 kernel, but
+ since Linux 5.4 this same entropy generating algorithm has been built into
+ the kernel, so there's no reason to also run it in userspace. We'll keep
+ the package around (for now, anyway) in case someone might be running an
+ old kernel. Thanks to Jason A. Donenfeld.
+a/sysvinit-scripts-15.0-noarch-10.txz: Rebuilt.
+ rc.S, rc.6: use the seedrng utility to seed and initialize the kernel
+ random number generator and generate a new seed.
+ If seedrng is missing, we'll attempt to do these things with scripting.
+ Thanks to Jason A. Donenfeld for hints about how to make a modest
+ improvement in that regard (blame me for any problems with my own changes),
+ but because you can't force the kernel RNG to initialize with a script
+ (it needs an ioctl), you won't get the same guarantees that you do when
+ using the new seedrng utility.
+a/util-linux-2.38-x86_64-2.txz: Rebuilt.
+ Added seedrng utility, used to seed and initialize the kernel random number
+ generator and to generate new seeds for carrying entropy across reboots.
+ Thanks to Jason A. Donenfeld.
+n/libmnl-1.0.5-x86_64-1.txz: Upgraded.
+n/libnfnetlink-1.0.2-x86_64-1.txz: Upgraded.
+xap/mozilla-thunderbird-91.8.0-x86_64-1.txz: Upgraded.
+ This release contains security fixes and improvements.
+ For more information, see:
+ https://www.mozilla.org/en-US/thunderbird/91.8.0/releasenotes/
+ https://www.mozilla.org/en-US/security/advisories/mfsa2022-15/
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1097
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28281
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1197
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1196
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28282
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28285
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28286
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-24713
+ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-28289
+ (* Security fix *)
++--------------------------+
Tue Apr 5 19:16:30 UTC 2022
a/hwdata-0.358-noarch-1.txz: Upgraded.
ap/cups-filters-1.28.14-x86_64-1.txz: Upgraded.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index 3b4eabd6d..c2f06d61d 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Tue Apr 5 19:21:45 UTC 2022
+Wed Apr 6 20:28:40 UTC 2022
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2022-04-05 19:16 .
+drwxr-xr-x 12 root root 4096 2022-04-06 20:23 .
-rw-r--r-- 1 root root 5767 2022-02-02 22:44 ./ANNOUNCE.15.0
-rw-r--r-- 1 root root 16617 2022-02-02 23:27 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 1095956 2022-04-03 20:04 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2022-04-03 20:04 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 1095594 2022-04-05 19:22 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2022-04-05 19:22 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 85383 2022-04-05 19:16 ./ChangeLog.txt
+-rw-r--r-- 1 root root 87734 2022-04-06 20:23 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2022-03-28 19:32 ./EFI/BOOT
-rw-r--r-- 1 root root 1187840 2021-06-15 19:16 ./EFI/BOOT/bootx64.efi
@@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2022-03-28 19:32 ./EFI/BOOT
-rwxr-xr-x 1 root root 2504 2019-07-05 18:54 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1426860 2022-04-03 20:03 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1426429 2022-04-05 19:21 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 865360 2022-04-05 19:21 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 865362 2022-04-06 20:28 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8034 2022-02-02 03:36 ./README.TXT
-rw-r--r-- 1 root root 3629 2022-03-28 19:22 ./README.initrd
-rw-r--r-- 1 root root 34162 2022-01-30 20:35 ./README_CRYPT.TXT
@@ -744,13 +744,13 @@ drwxr-xr-x 2 root root 4096 2022-02-03 07:02 ./patches
-rw-r--r-- 1 root root 575 2022-02-03 07:02 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2022-02-03 07:02 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2022-02-03 07:02 ./patches/PACKAGES.TXT
-drwxr-xr-x 17 root root 4096 2022-04-05 19:21 ./slackware64
--rw-r--r-- 1 root root 337640 2022-04-05 19:21 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2022-04-05 19:21 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 418748 2022-04-05 19:20 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 4238373 2022-04-05 19:20 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 17 root root 4096 2022-04-06 20:28 ./slackware64
+-rw-r--r-- 1 root root 337643 2022-04-06 20:28 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2022-04-06 20:28 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 418751 2022-04-06 20:27 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 4248253 2022-04-06 20:27 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/a
+drwxr-xr-x 2 root root 32768 2022-04-06 20:27 ./slackware64/a
-rw-r--r-- 1 root root 327 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txt
-rw-r--r-- 1 root root 10720 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txz
-rw-r--r-- 1 root root 163 2022-02-15 18:16 ./slackware64/a/aaa_base-15.1-x86_64-2.txz.asc
@@ -883,9 +883,9 @@ drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/a
-rw-r--r-- 1 root root 314 2021-09-03 18:09 ./slackware64/a/gzip-1.11-x86_64-1.txt
-rw-r--r-- 1 root root 110936 2021-09-03 18:09 ./slackware64/a/gzip-1.11-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-09-03 18:09 ./slackware64/a/gzip-1.11-x86_64-1.txz.asc
--rw-r--r-- 1 root root 485 2022-01-09 02:32 ./slackware64/a/haveged-1.9.17-x86_64-1.txt
--rw-r--r-- 1 root root 54892 2022-01-09 02:32 ./slackware64/a/haveged-1.9.17-x86_64-1.txz
--rw-r--r-- 1 root root 163 2022-01-09 02:32 ./slackware64/a/haveged-1.9.17-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 485 2022-04-06 19:59 ./slackware64/a/haveged-1.9.17-x86_64-2.txt
+-rw-r--r-- 1 root root 54844 2022-04-06 19:59 ./slackware64/a/haveged-1.9.17-x86_64-2.txz
+-rw-r--r-- 1 root root 163 2022-04-06 19:59 ./slackware64/a/haveged-1.9.17-x86_64-2.txz.asc
-rw-r--r-- 1 root root 398 2022-01-11 20:41 ./slackware64/a/hdparm-9.63-x86_64-1.txt
-rw-r--r-- 1 root root 76004 2022-01-11 20:41 ./slackware64/a/hdparm-9.63-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-01-11 20:41 ./slackware64/a/hdparm-9.63-x86_64-1.txz.asc
@@ -1073,9 +1073,9 @@ drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/a
-rw-r--r-- 1 root root 694 2021-02-13 11:17 ./slackware64/a/sysvinit-functions-8.53-x86_64-5.txt
-rw-r--r-- 1 root root 36392 2021-02-13 11:17 ./slackware64/a/sysvinit-functions-8.53-x86_64-5.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:17 ./slackware64/a/sysvinit-functions-8.53-x86_64-5.txz.asc
--rw-r--r-- 1 root root 378 2022-03-29 18:45 ./slackware64/a/sysvinit-scripts-15.0-noarch-9.txt
--rw-r--r-- 1 root root 16304 2022-03-29 18:45 ./slackware64/a/sysvinit-scripts-15.0-noarch-9.txz
--rw-r--r-- 1 root root 163 2022-03-29 18:45 ./slackware64/a/sysvinit-scripts-15.0-noarch-9.txz.asc
+-rw-r--r-- 1 root root 378 2022-04-06 20:10 ./slackware64/a/sysvinit-scripts-15.0-noarch-10.txt
+-rw-r--r-- 1 root root 17128 2022-04-06 20:10 ./slackware64/a/sysvinit-scripts-15.0-noarch-10.txz
+-rw-r--r-- 1 root root 163 2022-04-06 20:10 ./slackware64/a/sysvinit-scripts-15.0-noarch-10.txz.asc
-rw-r--r-- 1 root root 1534 2022-03-28 19:22 ./slackware64/a/tagfile
-rw-r--r-- 1 root root 395 2021-02-15 20:32 ./slackware64/a/tar-1.34-x86_64-1.txt
-rw-r--r-- 1 root root 850976 2021-02-15 20:32 ./slackware64/a/tar-1.34-x86_64-1.txz
@@ -1110,9 +1110,9 @@ drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/a
-rw-r--r-- 1 root root 400 2021-02-13 11:20 ./slackware64/a/utempter-1.2.0-x86_64-3.txt
-rw-r--r-- 1 root root 16100 2021-02-13 11:20 ./slackware64/a/utempter-1.2.0-x86_64-3.txz
-rw-r--r-- 1 root root 163 2021-02-13 11:20 ./slackware64/a/utempter-1.2.0-x86_64-3.txz.asc
--rw-r--r-- 1 root root 354 2022-03-28 18:51 ./slackware64/a/util-linux-2.38-x86_64-1.txt
--rw-r--r-- 1 root root 2934704 2022-03-28 18:51 ./slackware64/a/util-linux-2.38-x86_64-1.txz
--rw-r--r-- 1 root root 163 2022-03-28 18:51 ./slackware64/a/util-linux-2.38-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 354 2022-04-06 19:43 ./slackware64/a/util-linux-2.38-x86_64-2.txt
+-rw-r--r-- 1 root root 2939560 2022-04-06 19:43 ./slackware64/a/util-linux-2.38-x86_64-2.txz
+-rw-r--r-- 1 root root 163 2022-04-06 19:43 ./slackware64/a/util-linux-2.38-x86_64-2.txz.asc
-rw-r--r-- 1 root root 412 2021-11-03 01:09 ./slackware64/a/volume_key-0.3.12-x86_64-5.txt
-rw-r--r-- 1 root root 164184 2021-11-03 01:09 ./slackware64/a/volume_key-0.3.12-x86_64-5.txz
-rw-r--r-- 1 root root 163 2021-11-03 01:09 ./slackware64/a/volume_key-0.3.12-x86_64-5.txz.asc
@@ -3885,7 +3885,7 @@ drwxr-xr-x 2 root root 86016 2022-04-05 19:20 ./slackware64/l
-rw-r--r-- 1 root root 463 2022-01-21 04:11 ./slackware64/l/zstd-1.5.2-x86_64-1.txt
-rw-r--r-- 1 root root 437228 2022-01-21 04:11 ./slackware64/l/zstd-1.5.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-01-21 04:11 ./slackware64/l/zstd-1.5.2-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/n
+drwxr-xr-x 2 root root 32768 2022-04-06 20:27 ./slackware64/n
-rw-r--r-- 1 root root 357 2022-02-11 19:23 ./slackware64/n/ModemManager-1.18.6-x86_64-1.txt
-rw-r--r-- 1 root root 2132292 2022-02-11 19:23 ./slackware64/n/ModemManager-1.18.6-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-02-11 19:23 ./slackware64/n/ModemManager-1.18.6-x86_64-1.txz.asc
@@ -4059,9 +4059,9 @@ drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/n
-rw-r--r-- 1 root root 341 2021-08-21 03:28 ./slackware64/n/libmilter-8.17.1-x86_64-1.txt
-rw-r--r-- 1 root root 119668 2021-08-21 03:28 ./slackware64/n/libmilter-8.17.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-08-21 03:28 ./slackware64/n/libmilter-8.17.1-x86_64-1.txz.asc
--rw-r--r-- 1 root root 535 2021-02-13 12:10 ./slackware64/n/libmnl-1.0.4-x86_64-5.txt
--rw-r--r-- 1 root root 18412 2021-02-13 12:10 ./slackware64/n/libmnl-1.0.4-x86_64-5.txz
--rw-r--r-- 1 root root 163 2021-02-13 12:10 ./slackware64/n/libmnl-1.0.4-x86_64-5.txz.asc
+-rw-r--r-- 1 root root 535 2022-04-06 18:15 ./slackware64/n/libmnl-1.0.5-x86_64-1.txt
+-rw-r--r-- 1 root root 30256 2022-04-06 18:15 ./slackware64/n/libmnl-1.0.5-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2022-04-06 18:15 ./slackware64/n/libmnl-1.0.5-x86_64-1.txz.asc
-rw-r--r-- 1 root root 333 2021-05-21 18:53 ./slackware64/n/libndp-1.8-x86_64-1.txt
-rw-r--r-- 1 root root 25640 2021-05-21 18:53 ./slackware64/n/libndp-1.8-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-05-21 18:53 ./slackware64/n/libndp-1.8-x86_64-1.txz.asc
@@ -4083,9 +4083,9 @@ drwxr-xr-x 2 root root 32768 2022-04-05 19:20 ./slackware64/n
-rw-r--r-- 1 root root 612 2021-02-13 12:11 ./slackware64/n/libnetfilter_queue-1.0.5-x86_64-3.txt
-rw-r--r-- 1 root root 19676 2021-02-13 12:11 ./slackware64/n/libnetfilter_queue-1.0.5-x86_64-3.txz
-rw-r--r-- 1 root root 163 2021-02-13 12:11 ./slackware64/n/libnetfilter_queue-1.0.5-x86_64-3.txz.asc
--rw-r--r-- 1 root root 518 2021-02-13 12:11 ./slackware64/n/libnfnetlink-1.0.1-x86_64-4.txt
--rw-r--r-- 1 root root 21840 2021-02-13 12:11 ./slackware64/n/libnfnetlink-1.0.1-x86_64-4.txz
--rw-r--r-- 1 root root 163 2021-02-13 12:11 ./slackware64/n/libnfnetlink-1.0.1-x86_64-4.txz.asc
+-rw-r--r-- 1 root root 518 2022-04-06 18:13 ./slackware64/n/libnfnetlink-1.0.2-x86_64-1.txt
+-rw-r--r-- 1 root root 21464 2022-04-06 18:13 ./slackware64/n/libnfnetlink-1.0.2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2022-04-06 18:13 ./slackware64/n/libnfnetlink-1.0.2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 403 2021-11-19 20:28 ./slackware64/n/libnftnl-1.2.1-x86_64-1.txt
-rw-r--r-- 1 root root 68484 2021-11-19 20:28 ./slackware64/n/libnftnl-1.2.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-11-19 20:28 ./slackware64/n/libnftnl-1.2.1-x86_64-1.txz.asc
@@ -5346,7 +5346,7 @@ drwxr-xr-x 2 root root 65536 2022-04-05 19:20 ./slackware64/x
-rw-r--r-- 1 root root 213 2021-02-13 13:14 ./slackware64/x/xwud-1.0.5-x86_64-4.txt
-rw-r--r-- 1 root root 25428 2021-02-13 13:14 ./slackware64/x/xwud-1.0.5-x86_64-4.txz
-rw-r--r-- 1 root root 163 2021-02-13 13:14 ./slackware64/x/xwud-1.0.5-x86_64-4.txz.asc
-drwxr-xr-x 2 root root 16384 2022-04-05 19:20 ./slackware64/xap
+drwxr-xr-x 2 root root 16384 2022-04-06 20:27 ./slackware64/xap
-rw-r--r-- 1 root root 625 2021-04-18 18:11 ./slackware64/xap/MPlayer-20210418-x86_64-1.txt
-rw-r--r-- 1 root root 2738724 2021-04-18 18:11 ./slackware64/xap/MPlayer-20210418-x86_64-1.txz
-rw-r--r-- 1 root root 163 2021-04-18 18:11 ./slackware64/xap/MPlayer-20210418-x86_64-1.txz.asc
@@ -5426,9 +5426,9 @@ drwxr-xr-x 2 root root 16384 2022-04-05 19:20 ./slackware64/xap
-rw-r--r-- 1 root root 570 2022-04-04 19:16 ./slackware64/xap/mozilla-firefox-99.0-x86_64-1.txt
-rw-r--r-- 1 root root 57684488 2022-04-04 19:16 ./slackware64/xap/mozilla-firefox-99.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-04-04 19:16 ./slackware64/xap/mozilla-firefox-99.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 663 2022-03-09 22:00 ./slackware64/xap/mozilla-thunderbird-91.7.0-x86_64-1.txt
--rw-r--r-- 1 root root 53048104 2022-03-09 22:00 ./slackware64/xap/mozilla-thunderbird-91.7.0-x86_64-1.txz
--rw-r--r-- 1 root root 163 2022-03-09 22:00 ./slackware64/xap/mozilla-thunderbird-91.7.0-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 663 2022-04-06 00:27 ./slackware64/xap/mozilla-thunderbird-91.8.0-x86_64-1.txt
+-rw-r--r-- 1 root root 53074980 2022-04-06 00:27 ./slackware64/xap/mozilla-thunderbird-91.8.0-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2022-04-06 00:27 ./slackware64/xap/mozilla-thunderbird-91.8.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 359 2022-03-23 03:55 ./slackware64/xap/network-manager-applet-1.26.0-x86_64-1.txt
-rw-r--r-- 1 root root 862788 2022-03-23 03:55 ./slackware64/xap/network-manager-applet-1.26.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2022-03-23 03:55 ./slackware64/xap/network-manager-applet-1.26.0-x86_64-1.txz.asc
@@ -5613,13 +5613,13 @@ drwxr-xr-x 2 root root 4096 2021-02-15 19:33 ./slackware64/y
-rw-r--r-- 1 root root 1486956 2021-02-13 13:56 ./slackware64/y/nethack-3.6.6-x86_64-3.txz
-rw-r--r-- 1 root root 163 2021-02-13 13:56 ./slackware64/y/nethack-3.6.6-x86_64-3.txz.asc
-rw-r--r-- 1 root root 26 2020-12-30 21:55 ./slackware64/y/tagfile
-drwxr-xr-x 18 root root 4096 2022-04-05 19:21 ./source
--rw-r--r-- 1 root root 582977 2022-04-05 19:21 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2022-04-05 19:21 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 811681 2022-04-05 19:21 ./source/FILE_LIST
--rw-r--r-- 1 root root 23557982 2022-04-05 19:21 ./source/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2022-04-06 20:28 ./source
+-rw-r--r-- 1 root root 583154 2022-04-06 20:28 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2022-04-06 20:28 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 811909 2022-04-06 20:28 ./source/FILE_LIST
+-rw-r--r-- 1 root root 23572323 2022-04-06 20:28 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 828 2022-02-02 04:43 ./source/README.TXT
-drwxr-xr-x 122 root root 4096 2022-03-29 18:54 ./source/a
+drwxr-xr-x 122 root root 4096 2022-04-06 19:45 ./source/a
-rw-r--r-- 1 root root 111 2022-02-07 20:58 ./source/a/FTBFSlog
drwxr-xr-x 2 root root 4096 2022-02-15 18:15 ./source/a/aaa_base
-rw-r--r-- 1 root root 11041 2022-02-15 04:49 ./source/a/aaa_base/_aaa_base.tar.gz
@@ -6020,7 +6020,7 @@ drwxr-xr-x 2 root root 4096 2021-09-03 18:08 ./source/a/gzip
drwxr-xr-x 2 root root 4096 2022-01-09 02:32 ./source/a/haveged
-rw-r--r-- 1 root root 351 2016-06-18 20:47 ./source/a/haveged/doinst.sh.gz
-rw-r--r-- 1 root root 341387 2022-01-08 18:47 ./source/a/haveged/haveged-1.9.17.tar.lz
--rwxr-xr-x 1 root root 4219 2021-09-30 17:29 ./source/a/haveged/haveged.SlackBuild
+-rwxr-xr-x 1 root root 4225 2022-04-06 19:58 ./source/a/haveged/haveged.SlackBuild
-rw-r--r-- 1 root root 35 2018-11-02 19:34 ./source/a/haveged/haveged.url
-rw-r--r-- 1 root root 762 2018-11-04 19:15 ./source/a/haveged/rc.haveged
-rw-r--r-- 1 root root 973 2018-06-12 21:15 ./source/a/haveged/slack-desc
@@ -6556,13 +6556,13 @@ drwxr-xr-x 4 root root 4096 2021-02-13 05:31 ./source/a/sysvinit-scripts
drwxr-xr-x 2 root root 4096 2018-09-04 22:24 ./source/a/sysvinit-scripts/default
-rw-r--r-- 1 root root 160 2018-09-04 22:24 ./source/a/sysvinit-scripts/default/cpufreq
-rw-r--r-- 1 root root 367 2018-09-04 22:25 ./source/a/sysvinit-scripts/doinst.sh.gz
-drwxr-xr-x 2 root root 4096 2021-02-20 20:44 ./source/a/sysvinit-scripts/scripts
+drwxr-xr-x 2 root root 4096 2022-04-06 19:32 ./source/a/sysvinit-scripts/scripts
-rw-r--r-- 1 root root 2367 2021-04-24 18:41 ./source/a/sysvinit-scripts/scripts/inittab
-rw-r--r-- 1 root root 1649 2021-04-24 18:41 ./source/a/sysvinit-scripts/scripts/rc.4
--rw-r--r-- 1 root root 10077 2021-11-10 21:50 ./source/a/sysvinit-scripts/scripts/rc.6
+-rw-r--r-- 1 root root 10838 2022-04-06 20:07 ./source/a/sysvinit-scripts/scripts/rc.6
-rw-r--r-- 1 root root 3303 2021-04-23 18:33 ./source/a/sysvinit-scripts/scripts/rc.K
-rw-r--r-- 1 root root 13232 2022-03-29 18:44 ./source/a/sysvinit-scripts/scripts/rc.M
--rw-r--r-- 1 root root 18050 2022-01-27 22:32 ./source/a/sysvinit-scripts/scripts/rc.S
+-rw-r--r-- 1 root root 20187 2022-04-06 20:09 ./source/a/sysvinit-scripts/scripts/rc.S
-rw-r--r-- 1 root root 3330 2021-04-23 18:31 ./source/a/sysvinit-scripts/scripts/rc.cpufreq
-rw-r--r-- 1 root root 274 2021-04-23 18:31 ./source/a/sysvinit-scripts/scripts/rc.local
-rw-r--r-- 1 root root 170 2021-04-23 18:31 ./source/a/sysvinit-scripts/scripts/rc.loop
@@ -6570,7 +6570,7 @@ drwxr-xr-x 2 root root 4096 2021-02-20 20:44 ./source/a/sysvinit-scripts/
-rw-r--r-- 1 root root 691 2021-04-23 18:31 ./source/a/sysvinit-scripts/scripts/rc.modules.local
-rw-r--r-- 1 root root 1656 2021-04-23 18:31 ./source/a/sysvinit-scripts/scripts/rc.sysvinit
-rw-r--r-- 1 root root 842 2018-02-27 06:13 ./source/a/sysvinit-scripts/slack-desc
--rwxr-xr-x 1 root root 2373 2022-03-29 18:45 ./source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
+-rwxr-xr-x 1 root root 2374 2022-04-06 18:40 ./source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
-rw-r--r-- 1 root root 668 2015-08-06 22:54 ./source/a/sysvinit/doinst.sh.gz
-rw-r--r-- 1 root root 1009 2018-06-21 18:24 ./source/a/sysvinit/slack-desc
-rw-r--r-- 1 root root 219560 2022-03-29 01:42 ./source/a/sysvinit/sysvinit-3.02.tar.xz
@@ -6648,7 +6648,7 @@ drwxr-xr-x 2 root root 4096 2021-02-13 05:31 ./source/a/utempter
-rw-r--r-- 1 root root 856 2020-05-16 19:11 ./source/a/utempter/slack-desc
-rwxr-xr-x 1 root root 4158 2021-02-13 05:31 ./source/a/utempter/utempter.SlackBuild
-rw-r--r-- 1 root root 87 2020-05-16 19:10 ./source/a/utempter/utempter.url
-drwxr-xr-x 4 root root 4096 2022-03-28 18:51 ./source/a/util-linux
+drwxr-xr-x 4 root root 4096 2022-04-06 18:31 ./source/a/util-linux
-rw-r--r-- 1 root root 53236 2011-07-12 20:47 ./source/a/util-linux/adjtimex_1.29-2.2.diff.gz
-rw-r--r-- 1 root root 85551 2010-04-17 03:32 ./source/a/util-linux/adjtimex_1.29.orig.tar.gz
-rw-r--r-- 1 root root 434 2014-10-30 15:31 ./source/a/util-linux/bsdstrings-util-linux_overflow.diff.gz
@@ -6667,6 +6667,8 @@ drwxr-xr-x 2 root root 4096 2020-05-08 19:39 ./source/a/util-linux/pam.d-
-rw-r--r-- 1 root root 150 2020-02-19 19:26 ./source/a/util-linux/pam.d/runuser-l
-rw-r--r-- 1 root root 483 2019-01-08 18:50 ./source/a/util-linux/rc.setterm
-rw-r--r-- 1 root root 1266 2009-05-30 01:25 ./source/a/util-linux/scsi_ioctl.h
+-rw-r--r-- 1 root root 884 2022-04-06 18:28 ./source/a/util-linux/seedrng.8.gz
+-rw-r--r-- 1 root root 11947 2022-04-05 19:02 ./source/a/util-linux/seedrng.c
-rw-r--r-- 1 root root 52437 2009-05-30 01:25 ./source/a/util-linux/setserial-2.17.tar.gz
-rw-r--r-- 1 root root 729 2009-05-30 01:25 ./source/a/util-linux/setserial-rc.serial.diff.gz
-rw-r--r-- 1 root root 376 2010-03-30 04:06 ./source/a/util-linux/setserial-undef_TIOCGHAYESESP.diff.gz
@@ -6674,7 +6676,7 @@ drwxr-xr-x 2 root root 4096 2020-05-08 19:39 ./source/a/util-linux/pam.d-
-rw-r--r-- 1 root root 170 2020-02-13 19:17 ./source/a/util-linux/su.default
-rw-r--r-- 1 root root 833 2022-03-28 11:47 ./source/a/util-linux/util-linux-2.38.tar.sign
-rw-r--r-- 1 root root 7349140 2022-03-28 11:47 ./source/a/util-linux/util-linux-2.38.tar.xz
--rwxr-xr-x 1 root root 12139 2022-02-15 18:36 ./source/a/util-linux/util-linux.SlackBuild
+-rwxr-xr-x 1 root root 12327 2022-04-06 18:35 ./source/a/util-linux/util-linux.SlackBuild
-rw-r--r-- 1 root root 275 2019-01-02 21:53 ./source/a/util-linux/util-linux.do.not.list.ram.devices.diff.gz
-rw-r--r-- 1 root root 335 2014-07-03 08:34 ./source/a/util-linux/util-linux.fdisk-no-solaris.diff.gz
-rw-r--r-- 1 root root 10292 2009-05-30 01:25 ./source/a/util-linux/ziptool-1.4.0.tar.xz
@@ -12191,9 +12193,10 @@ drwxr-xr-x 2 root root 4096 2021-08-21 03:28 ./source/n/libmilter
-rw-r--r-- 1 root root 1604826 2021-08-17 07:30 ./source/n/libmilter/sendmail.8.17.1.tar.lz
-rw-r--r-- 1 root root 400 2019-08-20 17:57 ./source/n/libmilter/site.config.m4
-rw-r--r-- 1 root root 830 2018-02-27 06:13 ./source/n/libmilter/slack-desc
-drwxr-xr-x 2 root root 4096 2021-02-13 05:32 ./source/n/libmnl
--rw-r--r-- 1 root root 245548 2016-07-02 08:57 ./source/n/libmnl/libmnl-1.0.4.tar.xz
--rwxr-xr-x 1 root root 4146 2021-02-13 05:32 ./source/n/libmnl/libmnl.SlackBuild
+drwxr-xr-x 2 root root 4096 2022-04-06 18:15 ./source/n/libmnl
+-rw-r--r-- 1 root root 259764 2022-04-05 11:31 ./source/n/libmnl/libmnl-1.0.5.tar.xz
+-rwxr-xr-x 1 root root 4146 2022-04-06 18:15 ./source/n/libmnl/libmnl.SlackBuild
+-rw-r--r-- 1 root root 48 2022-04-06 18:15 ./source/n/libmnl/libmnl.url
-rw-r--r-- 1 root root 1021 2018-02-27 06:13 ./source/n/libmnl/slack-desc
drwxr-xr-x 2 root root 4096 2021-05-21 18:53 ./source/n/libndp
-rw-r--r-- 1 root root 25024 2021-05-20 09:39 ./source/n/libndp/libndp-1.8.tar.lz
@@ -12225,9 +12228,9 @@ drwxr-xr-x 2 root root 4096 2021-02-13 05:32 ./source/n/libnetfilter_queue
-rw-r--r-- 1 root root 258104 2020-06-12 09:39 ./source/n/libnetfilter_queue/libnetfilter_queue-1.0.5.tar.lz
-rwxr-xr-x 1 root root 3374 2021-02-13 05:32 ./source/n/libnetfilter_queue/libnetfilter_queue.SlackBuild
-rw-r--r-- 1 root root 1110 2020-06-08 18:52 ./source/n/libnetfilter_queue/slack-desc
-drwxr-xr-x 2 root root 4096 2021-02-13 05:32 ./source/n/libnfnetlink
--rw-r--r-- 1 root root 241764 2012-10-08 08:58 ./source/n/libnfnetlink/libnfnetlink-1.0.1.tar.xz
--rwxr-xr-x 1 root root 3375 2021-02-13 05:32 ./source/n/libnfnetlink/libnfnetlink.SlackBuild
+drwxr-xr-x 2 root root 4096 2022-04-06 18:13 ./source/n/libnfnetlink
+-rw-r--r-- 1 root root 248820 2022-04-05 11:32 ./source/n/libnfnetlink/libnfnetlink-1.0.2.tar.xz
+-rwxr-xr-x 1 root root 3375 2022-04-06 18:13 ./source/n/libnfnetlink/libnfnetlink.SlackBuild
-rw-r--r-- 1 root root 50 2020-11-25 20:42 ./source/n/libnfnetlink/libnfnetlink.url
-rw-r--r-- 1 root root 1010 2018-02-27 06:13 ./source/n/libnfnetlink/slack-desc
drwxr-xr-x 2 root root 4096 2021-11-19 20:28 ./source/n/libnftnl
@@ -14700,7 +14703,7 @@ drwxr-xr-x 2 root root 4096 2022-03-02 01:30 ./source/xap/mozilla-firefox/
-rwxr-xr-x 1 root root 16105 2022-02-09 01:58 ./source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
-rw-r--r-- 1 root root 2748 2017-12-04 21:30 ./source/xap/mozilla-firefox/mozilla-firefox.desktop
-rw-r--r-- 1 root root 1033 2020-07-07 18:08 ./source/xap/mozilla-firefox/slack-desc
-drwxr-xr-x 4 root root 4096 2022-03-09 21:27 ./source/xap/mozilla-thunderbird
+drwxr-xr-x 4 root root 4096 2022-04-05 23:47 ./source/xap/mozilla-thunderbird
drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/mozilla-thunderbird/autoconf
-rw-r--r-- 1 root root 5869 2016-07-03 18:04 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13-consolidated_fixes-1.patch.gz
-rw-r--r-- 1 root root 300116 1999-01-15 21:03 ./source/xap/mozilla-thunderbird/autoconf/autoconf-2.13.tar.xz
@@ -14723,8 +14726,8 @@ drwxr-xr-x 2 root root 4096 2022-03-02 01:30 ./source/xap/mozilla-thunderb
-rw-r--r-- 1 root root 3378 2005-03-08 05:13 ./source/xap/mozilla-thunderbird/mozilla-thunderbird.desktop
-rw-r--r-- 1 root root 1130 2018-02-27 06:47 ./source/xap/mozilla-thunderbird/slack-desc
-rw-r--r-- 1 root root 330 2019-08-27 16:35 ./source/xap/mozilla-thunderbird/tb.ui.scrollToClick.diff.gz
--rw-r--r-- 1 root root 409451024 2022-03-09 18:02 ./source/xap/mozilla-thunderbird/thunderbird-91.7.0.source.tar.xz
--rw-r--r-- 1 root root 833 2022-03-09 18:02 ./source/xap/mozilla-thunderbird/thunderbird-91.7.0.source.tar.xz.asc
+-rw-r--r-- 1 root root 404452336 2022-04-05 17:49 ./source/xap/mozilla-thunderbird/thunderbird-91.8.0.source.tar.xz
+-rw-r--r-- 1 root root 833 2022-04-05 17:49 ./source/xap/mozilla-thunderbird/thunderbird-91.8.0.source.tar.xz.asc
drwxr-xr-x 2 root root 4096 2022-03-23 03:48 ./source/xap/network-manager-applet
-rw-r--r-- 1 root root 173 2021-09-10 17:57 ./source/xap/network-manager-applet/doinst.sh.gz
-rw-r--r-- 1 root root 1971896 2022-03-22 10:46 ./source/xap/network-manager-applet/network-manager-applet-1.26.0.tar.xz
diff --git a/recompress.sh b/recompress.sh
index 8af6573de..6857af7b5 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -257,6 +257,7 @@ gzip ./source/a/util-linux/setserial-rc.serial.diff
gzip ./source/a/util-linux/util-linux.do.not.list.ram.devices.diff
gzip ./source/a/util-linux/bsdstrings-util-linux_overflow.diff
gzip ./source/a/util-linux/util-linux.fdisk-no-solaris.diff
+gzip ./source/a/util-linux/seedrng.8
gzip ./source/a/util-linux/adjtimex_1.29-2.2.diff
gzip ./source/a/util-linux/doinst.sh
gzip ./source/a/util-linux/ziptool-fix_build.patch
diff --git a/source/a/haveged/haveged.SlackBuild b/source/a/haveged/haveged.SlackBuild
index 4d7967153..163a271c1 100755
--- a/source/a/haveged/haveged.SlackBuild
+++ b/source/a/haveged/haveged.SlackBuild
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright 2014 Erik Falor, West Valley City, Utah, USA
-# Copyright 2018, 2020, 2021 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2018, 2020, 2021, 2022 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=haveged
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -102,7 +102,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
mkdir -p $PKG/etc/rc.d
cat $CWD/rc.haveged > $PKG/etc/rc.d/rc.haveged.new
-chmod 755 $PKG/etc/rc.d/rc.haveged.new
+chmod 644 $PKG/etc/rc.d/rc.haveged.new
find $PKG/usr/man -type f -exec gzip -9 {} \+
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
diff --git a/source/a/sysvinit-scripts/scripts/rc.6 b/source/a/sysvinit-scripts/scripts/rc.6
index 383c5490b..1ebe12b69 100644
--- a/source/a/sysvinit-scripts/scripts/rc.6
+++ b/source/a/sysvinit-scripts/scripts/rc.6
@@ -218,15 +218,32 @@ if /bin/grep -q quota /etc/fstab ; then
fi
# Carry a random seed between reboots.
+# Doing this properly requires the seedrng utility.
if [ -z "$container" ]; then
- echo "Saving random seed from /dev/urandom in /etc/random-seed."
- # Use the pool size from /proc, or 4096 bits:
- if [ -r /proc/sys/kernel/random/poolsize ]; then
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(expr $(cat /proc/sys/kernel/random/poolsize) / 8) 2> /dev/null
- else
- /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+ # Any old seed that exists here shall be deemed useless:
+ if [ -f /etc/random-seed ]; then
+ rm -f /etc/random-seed
+ fi
+ if [ -x /usr/sbin/seedrng ]; then
+ /usr/sbin/seedrng
+ else # we have to fall back on the old method:
+ # Make sure the new seed storage directory exists:
+ if [ ! -d /var/lib/seedrng ]; then
+ mkdir -p /var/lib/seedrng
+ chmod 700 /var/lib/seedrng
+ fi
+ echo "The SeedRNG utility was not found. Generating a non-creditable and"
+ echo "inferior RNG seed: /var/lib/seedrng/seed.no-credit"
+ # To get a seed that matches the pool size, we'll use dd. This assumes that
+ # by the time the machine was shut down that the kernel had generated nearly
+ # a full entropy pool, but there is no guarantee of this.
+ if [ -r /proc/sys/kernel/random/poolsize ]; then
+ /bin/dd if=/dev/urandom of=/var/lib/seedrng/seed.no-credit count=1 bs=$(expr $(cat /proc/sys/kernel/random/poolsize) / 8) 2> /dev/null
+ else
+ /bin/dd if=/dev/urandom of=/var/lib/seedrng/seed.no-credit count=1 bs=512 2> /dev/null
+ fi
+ /bin/chmod 400 /var/lib/seedrng/seed.no-credit
fi
- /bin/chmod 600 /etc/random-seed
fi
# Before unmounting file systems write a reboot or halt record to wtmp.
diff --git a/source/a/sysvinit-scripts/scripts/rc.S b/source/a/sysvinit-scripts/scripts/rc.S
index 5dfa72c5c..c49140616 100644
--- a/source/a/sysvinit-scripts/scripts/rc.S
+++ b/source/a/sysvinit-scripts/scripts/rc.S
@@ -463,16 +463,55 @@ if [ -x /etc/rc.d/rc.serial -a -z "$container" ]; then
fi
# Carry an entropy pool between reboots to improve randomness.
+# To do this properly, we need to utilize the "seedrng" utility, since that
+# supports the ioctls in recent kernels that allow the RNG to be initialized
+# after seeding. Otherwise using the script methods that were previously
+# recommended in the kernel source, it could take a long time for entropy
+# written to /dev/urandom to actually add to the entropy, and the new seed
+# that's output immediately afterward might actually have less entropy. This
+# would only be an issue in case a power failure occured before a proper
+# shutdown, or if a proper shutdown happened before enough time had gone by
+# to generate good entropy. We'll favor using seedrng, but if it's missing
+# (shouldn't be) then we'll fall back on using the script method.
if [ -z "$container" ]; then
+ # Make sure the new seed storage directory exists:
+ if [ ! -d /var/lib/seedrng ]; then
+ mkdir -p /var/lib/seedrng
+ chmod 700 /var/lib/seedrng
+ fi
+ # If the old /etc/random-seed exists and no seedrng-generated seeds exist,
+ # then we might as well use it for non-creditable entropy:
if [ -f /etc/random-seed ]; then
- echo "Using /etc/random-seed to initialize /dev/urandom."
- cat /etc/random-seed > /dev/urandom
+ if ! /bin/ls /var/lib/seedrng/seed.* 1> /dev/null 2> /dev/null ; then
+ echo "Moving /etc/random-seed to /var/lib/seedrng/seed.no-credit."
+ mv /etc/random-seed /var/lib/seedrng/seed.no-credit
+ chmod 400 /var/lib/seedrng/seed.no-credit
+ fi
fi
- # Use the pool size from /proc, or 4096 bits:
- if [ -r /proc/sys/kernel/random/poolsize ]; then
- dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(expr $(cat /proc/sys/kernel/random/poolsize) / 8) 2> /dev/null
- else
- dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+ # If we have the seedrng utility, we will use it to initialize the RNG:
+ if [ -x /usr/sbin/seedrng ]; then
+ /usr/sbin/seedrng
+ else # we have to fall back on the old method:
+ if ! /bin/ls /var/lib/seedrng/seed.* 1> /dev/null 2> /dev/null ; then
+ echo "WARNING: no usable RNG seed was found in /var/lib/seedrng."
+ else
+ echo "The SeedRNG utility was not found. Seeding the RNG with an inferior method."
+ SEED="$(cat /var/lib/seedrng/seed.* | base64)"
+ rm -f /var/lib/seedrng/seed.*
+ sync /var/lib/seedrng
+ echo "$SEED" | base64 -d > /dev/urandom
+ # The seed saved below isn't going to be as large as the pool size, but
+ # it would only be used if the power fails before a proper shutdown is
+ # done. Nevertheless we'll try to get a little entropy saved from our
+ # previous seed(s) plus some bits from /dev/urandom (which *might* have
+ # some additional entropy in it). It's probably better than nothing.
+ echo "Saving a new uncreditable seed: /var/lib/seedrng/seed.no-credit"
+ {
+ head -c 512 /dev/urandom
+ echo "$SEED" | base64 -d
+ } | sha256sum | cut -d ' ' -f 1 > /var/lib/seedrng/seed.no-credit
+ chmod 400 /var/lib/seedrng/seed.no-credit
+ unset SEED
+ fi
fi
- chmod 600 /etc/random-seed
fi
diff --git a/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
index 090af12e5..17e0dd5ce 100755
--- a/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
+++ b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2005-2018 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2005-2022 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=sysvinit-scripts
VERSION=${VERSION:-15.0}
ARCH=noarch
-BUILD=${BUILD:-9}
+BUILD=${BUILD:-10}
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
diff --git a/source/a/util-linux/seedrng.8 b/source/a/util-linux/seedrng.8
new file mode 100644
index 000000000..79ab81fd0
--- /dev/null
+++ b/source/a/util-linux/seedrng.8
@@ -0,0 +1,41 @@
+.TH seedrng 8
+.SH NAME
+seedrng \- seed the Linux kernel random number generator
+.SH SYNOPSIS
+.B seedrng
+.SH DESCRIPTION
+.B SeedRNG
+SeedRNG is a simple program made for seeding the Linux kernel random
+number generator from seed files. The program takes no arguments, must
+be run as root, and always attempts to do something useful.
+
+This program is useful in light of the fact that the Linux kernel RNG
+cannot be initialized from shell scripts, and new seeds cannot be safely
+generated from boot time shell scripts either.
+
+It should be run once at init time and once at shutdown time. It can be
+run at other times without detriment as well. Whenever it is run, it writes
+existing seed files into the RNG pool, and then creates a new seed file.
+If the RNG is initialized at the time of creating a new seed file, then that
+new seed file is marked as "creditable", which means it can be used to
+initialize the RNG. Otherwise, it is marked as "non-creditable", in which
+case it is still used to seed the RNG's pool, but will not initialize the
+RNG.
+
+In order to ensure that entropy only ever stays the same or increases from
+one seed file to the next, old seed values are hashed together with new seed
+values when writing new seed files:
+
+.BR
+new_seed = new_seed[:-32] || HASH(fixed_prefix || real_time || boot_time || old_seed_len || old_seed || new_seed_len || new_seed)
+
+The seed is stored in /var/lib/seedrng/, which can be adjusted at
+compile time. If the SEEDRNG_SKIP_CREDIT environment variable is set to 1,
+true, yes, or y, then seeds never credit the RNG, even if the seed file
+is creditable.
+
+.SH FILES
+.IR /var/lib/seedrng/seed.credit
+.IR /var/lib/seedrng/seed.no-credit
+.SH AUTHOR
+Jason A. Donenfeld <Jason@zx2c4.com>
diff --git a/source/a/util-linux/seedrng.c b/source/a/util-linux/seedrng.c
new file mode 100644
index 000000000..852ed48c3
--- /dev/null
+++ b/source/a/util-linux/seedrng.c
@@ -0,0 +1,441 @@
+// SPDX-License-Identifier: (GPL-2.0 OR Apache-2.0 OR MIT OR BSD-1-Clause OR CC0-1.0)
+/*
+ * Copyright (C) 2022 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
+ */
+
+#include <linux/random.h>
+#include <sys/random.h>
+#include <sys/ioctl.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <unistd.h>
+#include <time.h>
+#include <errno.h>
+#include <endian.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef LOCALSTATEDIR
+#define LOCALSTATEDIR "/var/lib"
+#endif
+#ifndef RUNSTATEDIR
+#define RUNSTATEDIR "/var/run"
+#endif
+
+#define SEED_DIR LOCALSTATEDIR "/seedrng"
+#define CREDITABLE_SEED SEED_DIR "/seed.credit"
+#define NON_CREDITABLE_SEED SEED_DIR "/seed.no-credit"
+#define LOCK_FILE RUNSTATEDIR "/seedrng.lock"
+
+enum blake2s_lengths {
+ BLAKE2S_BLOCK_LEN = 64,
+ BLAKE2S_HASH_LEN = 32,
+ BLAKE2S_KEY_LEN = 32
+};
+
+enum seedrng_lengths {
+ MAX_SEED_LEN = 512,
+ MIN_SEED_LEN = BLAKE2S_HASH_LEN
+};
+
+struct blake2s_state {
+ uint32_t h[8];
+ uint32_t t[2];
+ uint32_t f[2];
+ uint8_t buf[BLAKE2S_BLOCK_LEN];
+ unsigned int buflen;
+ unsigned int outlen;
+};
+
+#define le32_to_cpup(a) le32toh(*(a))
+#define cpu_to_le32(a) htole32(a)
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+#endif
+#ifndef DIV_ROUND_UP
+#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
+#endif
+
+static inline void cpu_to_le32_array(uint32_t *buf, unsigned int words)
+{
+ while (words--) {
+ *buf = cpu_to_le32(*buf);
+ ++buf;
+ }
+}
+
+static inline void le32_to_cpu_array(uint32_t *buf, unsigned int words)
+{
+ while (words--) {
+ *buf = le32_to_cpup(buf);
+ ++buf;
+ }
+}
+
+static inline uint32_t ror32(uint32_t word, unsigned int shift)
+{
+ return (word >> (shift & 31)) | (word << ((-shift) & 31));
+}
+
+static const uint32_t blake2s_iv[8] = {
+ 0x6A09E667UL, 0xBB67AE85UL, 0x3C6EF372UL, 0xA54FF53AUL,
+ 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL
+};
+
+static const uint8_t blake2s_sigma[10][16] = {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
+ { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 },
+ { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 },
+ { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 },
+ { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 },
+ { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 },
+ { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 },
+ { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 },
+ { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 },
+ { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 },
+};
+
+static void blake2s_set_lastblock(struct blake2s_state *state)
+{
+ state->f[0] = -1;
+}
+
+static void blake2s_increment_counter(struct blake2s_state *state, const uint32_t inc)
+{
+ state->t[0] += inc;
+ state->t[1] += (state->t[0] < inc);
+}
+
+static void blake2s_init_param(struct blake2s_state *state, const uint32_t param)
+{
+ int i;
+
+ memset(state, 0, sizeof(*state));
+ for (i = 0; i < 8; ++i)
+ state->h[i] = blake2s_iv[i];
+ state->h[0] ^= param;
+}
+
+static void blake2s_init(struct blake2s_state *state, const size_t outlen)
+{
+ blake2s_init_param(state, 0x01010000 | outlen);
+ state->outlen = outlen;
+}
+
+static void blake2s_compress(struct blake2s_state *state, const uint8_t *block, size_t nblocks, const uint32_t inc)
+{
+ uint32_t m[16];
+ uint32_t v[16];
+ int i;
+
+ while (nblocks > 0) {
+ blake2s_increment_counter(state, inc);
+ memcpy(m, block, BLAKE2S_BLOCK_LEN);
+ le32_to_cpu_array(m, ARRAY_SIZE(m));
+ memcpy(v, state->h, 32);
+ v[ 8] = blake2s_iv[0];
+ v[ 9] = blake2s_iv[1];
+ v[10] = blake2s_iv[2];
+ v[11] = blake2s_iv[3];
+ v[12] = blake2s_iv[4] ^ state->t[0];
+ v[13] = blake2s_iv[5] ^ state->t[1];
+ v[14] = blake2s_iv[6] ^ state->f[0];
+ v[15] = blake2s_iv[7] ^ state->f[1];
+
+#define G(r, i, a, b, c, d) do { \
+ a += b + m[blake2s_sigma[r][2 * i + 0]]; \
+ d = ror32(d ^ a, 16); \
+ c += d; \
+ b = ror32(b ^ c, 12); \
+ a += b + m[blake2s_sigma[r][2 * i + 1]]; \
+ d = ror32(d ^ a, 8); \
+ c += d; \
+ b = ror32(b ^ c, 7); \
+} while (0)
+
+#define ROUND(r) do { \
+ G(r, 0, v[0], v[ 4], v[ 8], v[12]); \
+ G(r, 1, v[1], v[ 5], v[ 9], v[13]); \
+ G(r, 2, v[2], v[ 6], v[10], v[14]); \
+ G(r, 3, v[3], v[ 7], v[11], v[15]); \
+ G(r, 4, v[0], v[ 5], v[10], v[15]); \
+ G(r, 5, v[1], v[ 6], v[11], v[12]); \
+ G(r, 6, v[2], v[ 7], v[ 8], v[13]); \
+ G(r, 7, v[3], v[ 4], v[ 9], v[14]); \
+} while (0)
+ ROUND(0);
+ ROUND(1);
+ ROUND(2);
+ ROUND(3);
+ ROUND(4);
+ ROUND(5);
+ ROUND(6);
+ ROUND(7);
+ ROUND(8);
+ ROUND(9);
+
+#undef G
+#undef ROUND
+
+ for (i = 0; i < 8; ++i)
+ state->h[i] ^= v[i] ^ v[i + 8];
+
+ block += BLAKE2S_BLOCK_LEN;
+ --nblocks;
+ }
+}
+
+static void blake2s_update(struct blake2s_state *state, const void *inp, size_t inlen)
+{
+ const size_t fill = BLAKE2S_BLOCK_LEN - state->buflen;
+ const uint8_t *in = inp;
+
+ if (!inlen)
+ return;
+ if (inlen > fill) {
+ memcpy(state->buf + state->buflen, in, fill);
+ blake2s_compress(state, state->buf, 1, BLAKE2S_BLOCK_LEN);
+ state->buflen = 0;
+ in += fill;
+ inlen -= fill;
+ }
+ if (inlen > BLAKE2S_BLOCK_LEN) {
+ const size_t nblocks = DIV_ROUND_UP(inlen, BLAKE2S_BLOCK_LEN);
+ blake2s_compress(state, in, nblocks - 1, BLAKE2S_BLOCK_LEN);
+ in += BLAKE2S_BLOCK_LEN * (nblocks - 1);
+ inlen -= BLAKE2S_BLOCK_LEN * (nblocks - 1);
+ }
+ memcpy(state->buf + state->buflen, in, inlen);
+ state->buflen += inlen;
+}
+
+static void blake2s_final(struct blake2s_state *state, uint8_t *out)
+{
+ blake2s_set_lastblock(state);
+ memset(state->buf + state->buflen, 0, BLAKE2S_BLOCK_LEN - state->buflen);
+ blake2s_compress(state, state->buf, 1, state->buflen);
+ cpu_to_le32_array(state->h, ARRAY_SIZE(state->h));
+ memcpy(out, state->h, state->outlen);
+}
+
+static size_t determine_optimal_seed_len(void)
+{
+ size_t ret = 0;
+ char poolsize_str[11] = { 0 };
+ int fd = open("/proc/sys/kernel/random/poolsize", O_RDONLY);
+
+ if (fd < 0 || read(fd, poolsize_str, sizeof(poolsize_str) - 1) < 0) {
+ fprintf(stderr, "WARNING: Unable to determine pool size, falling back to %u bits: %s\n", MIN_SEED_LEN * 8, strerror(errno));
+ ret = MIN_SEED_LEN;
+ } else
+ ret = DIV_ROUND_UP(strtoul(poolsize_str, NULL, 10), 8);
+ if (fd >= 0)
+ close(fd);
+ if (ret < MIN_SEED_LEN)
+ ret = MIN_SEED_LEN;
+ else if (ret > MAX_SEED_LEN)
+ ret = MAX_SEED_LEN;
+ return ret;
+}
+
+static int read_new_seed(uint8_t *seed, size_t len, bool *is_creditable)
+{
+ ssize_t ret;
+ int urandom_fd;
+
+ *is_creditable = false;
+ ret = getrandom(seed, len, GRND_NONBLOCK);
+ if (ret == (ssize_t)len) {
+ *is_creditable = true;
+ return 0;
+ } else if (ret < 0 && errno == ENOSYS) {
+ struct pollfd random_fd = {
+ .fd = open("/dev/random", O_RDONLY),
+ .events = POLLIN
+ };
+ if (random_fd.fd < 0)
+ return -errno;
+ *is_creditable = poll(&random_fd, 1, 0) == 1;
+ close(random_fd.fd);
+ } else if (getrandom(seed, len, GRND_INSECURE) == (ssize_t)len)
+ return 0;
+ urandom_fd = open("/dev/urandom", O_RDONLY);
+ if (urandom_fd < 0)
+ return -errno;
+ ret = read(urandom_fd, seed, len);
+ if (ret == (ssize_t)len)
+ ret = 0;
+ else
+ ret = -errno ? -errno : -EIO;
+ close(urandom_fd);
+ return ret;
+}
+
+static int seed_rng(uint8_t *seed, size_t len, bool credit)
+{
+ struct {
+ int entropy_count;
+ int buf_size;
+ uint8_t buffer[MAX_SEED_LEN];
+ } req = {
+ .entropy_count = credit ? len * 8 : 0,
+ .buf_size = len
+ };
+ int random_fd, ret;
+
+ if (len > sizeof(req.buffer))
+ return -EFBIG;
+ memcpy(req.buffer, seed, len);
+
+ random_fd = open("/dev/random", O_RDWR);
+ if (random_fd < 0)
+ return -errno;
+ ret = ioctl(random_fd, RNDADDENTROPY, &req);
+ if (ret)
+ ret = -errno ? -errno : -EIO;
+ close(random_fd);
+ return ret;
+}
+
+static int seed_from_file_if_exists(const char *filename, bool credit, struct blake2s_state *hash)
+{
+ uint8_t seed[MAX_SEED_LEN];
+ ssize_t seed_len;
+ int fd, dfd, ret = 0;
+
+ fd = open(filename, O_RDONLY);
+ if (fd < 0 && errno == ENOENT)
+ return 0;
+ else if (fd < 0) {
+ ret = -errno;
+ fprintf(stderr, "ERROR: Unable to open seed file: %s\n", strerror(errno));
+ return ret;
+ }
+ dfd = open(SEED_DIR, O_DIRECTORY | O_RDONLY);
+ if (dfd < 0) {
+ ret = -errno;
+ close(fd);
+ fprintf(stderr, "ERROR: Unable to open seed directory: %s\n", strerror(errno));
+ return ret;
+ }
+ seed_len = read(fd, seed, sizeof(seed));
+ if (seed_len < 0) {
+ ret = -errno;
+ fprintf(stderr, "ERROR: Unable to read seed file: %s\n", strerror(errno));
+ }
+ close(fd);
+ if (ret) {
+ close(dfd);
+ return ret;
+ }
+ if ((unlink(filename) < 0 || fsync(dfd) < 0) && seed_len) {
+ ret = -errno;
+ fprintf(stderr, "ERROR: Unable to remove seed after reading, so not seeding: %s\n", strerror(errno));
+ }
+ close(dfd);
+ if (ret)
+ return ret;
+ if (!seed_len)
+ return 0;
+
+ blake2s_update(hash, &seed_len, sizeof(seed_len));
+ blake2s_update(hash, seed, seed_len);
+
+ fprintf(stdout, "Seeding %zd bits %s crediting\n", seed_len * 8, credit ? "and" : "without");
+ ret = seed_rng(seed, seed_len, credit);
+ if (ret < 0)
+ fprintf(stderr, "ERROR: Unable to seed: %s\n", strerror(-ret));
+ return ret;
+}
+
+static bool skip_credit(void)
+{
+ const char *skip = getenv("SEEDRNG_SKIP_CREDIT");
+ return skip && (!strcmp(skip, "1") || !strcasecmp(skip, "true") ||
+ !strcasecmp(skip, "yes") || !strcasecmp(skip, "y"));
+}
+
+int main(int argc __attribute__((unused)), char *argv[] __attribute__((unused)))
+{
+ static const char seedrng_prefix[] = "SeedRNG v1 Old+New Prefix";
+ static const char seedrng_failure[] = "SeedRNG v1 No New Seed Failure";
+ int ret, fd = -1, lock, program_ret = 0;
+ uint8_t new_seed[MAX_SEED_LEN];
+ size_t new_seed_len;
+ bool new_seed_creditable;
+ struct timespec realtime = { 0 }, boottime = { 0 };
+ struct blake2s_state hash;
+
+ umask(0077);
+ if (getuid()) {
+ fprintf(stderr, "ERROR: This program requires root\n");
+ return 1;
+ }
+
+ blake2s_init(&hash, BLAKE2S_HASH_LEN);
+ blake2s_update(&hash, seedrng_prefix, strlen(seedrng_prefix));
+ clock_gettime(CLOCK_REALTIME, &realtime);
+ clock_gettime(CLOCK_BOOTTIME, &boottime);
+ blake2s_update(&hash, &realtime, sizeof(realtime));
+ blake2s_update(&hash, &boottime, sizeof(boottime));
+
+ if (mkdir(SEED_DIR, 0700) < 0 && errno != EEXIST) {
+ fprintf(stderr, "ERROR: Unable to create \"%s\" directory: %s\n", SEED_DIR, strerror(errno));
+ return 1;
+ }
+
+ lock = open(LOCK_FILE, O_WRONLY | O_CREAT, 0000);
+ if (lock < 0 || flock(lock, LOCK_EX) < 0) {
+ fprintf(stderr, "ERROR: Unable to open lock file: %s\n", strerror(errno));
+ program_ret = 1;
+ goto out;
+ }
+
+ ret = seed_from_file_if_exists(NON_CREDITABLE_SEED, false, &hash);
+ if (ret < 0)
+ program_ret |= 1 << 1;
+ ret = seed_from_file_if_exists(CREDITABLE_SEED, !skip_credit(), &hash);
+ if (ret < 0)
+ program_ret |= 1 << 2;
+
+ new_seed_len = determine_optimal_seed_len();
+ ret = read_new_seed(new_seed, new_seed_len, &new_seed_creditable);
+ if (ret < 0) {
+ fprintf(stderr, "ERROR: Unable to read new seed: %s\n", strerror(-ret));
+ new_seed_len = BLAKE2S_HASH_LEN;
+ strncpy((char *)new_seed, seedrng_failure, new_seed_len);
+ program_ret |= 1 << 3;
+ }
+ blake2s_update(&hash, &new_seed_len, sizeof(new_seed_len));
+ blake2s_update(&hash, new_seed, new_seed_len);
+ blake2s_final(&hash, new_seed + new_seed_len - BLAKE2S_HASH_LEN);
+
+ fprintf(stdout, "Saving %zu bits of %s seed for next boot\n", new_seed_len * 8, new_seed_creditable ? "creditable" : "non-creditable");
+ fd = open(NON_CREDITABLE_SEED, O_WRONLY | O_CREAT | O_TRUNC, 0400);
+ if (fd < 0) {
+ fprintf(stderr, "ERROR: Unable to open seed file for writing: %s\n", strerror(errno));
+ program_ret |= 1 << 4;
+ goto out;
+ }
+ if (write(fd, new_seed, new_seed_len) != (ssize_t)new_seed_len || fsync(fd) < 0) {
+ fprintf(stderr, "ERROR: Unable to write seed file: %s\n", strerror(errno));
+ program_ret |= 1 << 5;
+ goto out;
+ }
+ if (new_seed_creditable && rename(NON_CREDITABLE_SEED, CREDITABLE_SEED) < 0) {
+ fprintf(stderr, "WARNING: Unable to make new seed creditable: %s\n", strerror(errno));
+ program_ret |= 1 << 6;
+ }
+out:
+ if (fd >= 0)
+ close(fd);
+ if (lock >= 0)
+ close(lock);
+ return program_ret;
+}
diff --git a/source/a/util-linux/util-linux.SlackBuild b/source/a/util-linux/util-linux.SlackBuild
index 22ff3e4d9..7ea3dfdbb 100755
--- a/source/a/util-linux/util-linux.SlackBuild
+++ b/source/a/util-linux/util-linux.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=util-linux
VERSION=${VERSION:-$(echo util-linux*.tar.xz | cut -d - -f 3 | rev | cut -f 3- -d . | rev)}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
ADJTIMEXVERS=1.29
SETSERIALVERS=2.17
@@ -310,6 +310,10 @@ cat rc.serial > $PKG/etc/rc.d/rc.serial.new
cat serial.conf > $PKG/etc/serial.conf.new
cat setserial.8 | gzip -9c > $PKG/usr/man/man8/setserial.8.gz
+# Build seedrng, a utility for seeding the kernel random number generator:
+gcc -O2 -std=gnu99 $CWD/seedrng.c -o $PKG/usr/sbin/seedrng
+zcat $CWD/seedrng.8.gz > $PKG/usr/man/man8/seedrng.8
+
# These have always traditionally been available before /usr
# might be mounted:
( cd $PKG/usr/bin
diff --git a/source/n/libmnl/libmnl.SlackBuild b/source/n/libmnl/libmnl.SlackBuild
index 0b796f4c5..9f24b96e0 100755
--- a/source/n/libmnl/libmnl.SlackBuild
+++ b/source/n/libmnl/libmnl.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libmnl
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-5}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
diff --git a/source/n/libmnl/libmnl.url b/source/n/libmnl/libmnl.url
new file mode 100644
index 000000000..3bf64733b
--- /dev/null
+++ b/source/n/libmnl/libmnl.url
@@ -0,0 +1 @@
+https://www.netfilter.org/projects/libmnl/files
diff --git a/source/n/libnfnetlink/libnfnetlink.SlackBuild b/source/n/libnfnetlink/libnfnetlink.SlackBuild
index c019e6be3..ac7f7c08a 100755
--- a/source/n/libnfnetlink/libnfnetlink.SlackBuild
+++ b/source/n/libnfnetlink/libnfnetlink.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=libnfnetlink
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-4}
+BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}