Skip to content

Commit 5ed685f

Browse files
committed
fix: prevent package postinstall hang when generating jwt secret
The postinstall scripts generated the jwt secret with: cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 This relies on SIGPIPE to terminate the infinite `cat /dev/urandom` once `head` has read its single line. Inside a dpkg/apt maintainer-script context the SIGPIPE disposition is not reliably delivered, so `cat /dev/urandom` spins forever, the postinstall never returns, and the whole `dpkg -i` / upgrade hangs. Read a bounded 512 bytes with `head -c` instead so nothing depends on SIGPIPE to terminate. 512 random bytes yield ~124 alphanumerics on average, so the trailing `head -c 32` reliably produces a full 32-char secret while staying dependency-free. Fixes #2660
1 parent 98affb2 commit 5ed685f

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

build/after-install-openrc.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
rc-update add vikunja default
33

44
# Fix the config to contain proper values
5-
NEW_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
5+
NEW_SECRET=$(head -c 512 /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32)
66
sed -i "s/<jwt-secret>/$NEW_SECRET/g" /etc/vikunja/config.yml
77
sed -i "s/<rootpath>/\/opt\/vikunja\//g" /etc/vikunja/config.yml
88
sed -i "s/path: \"\.\/vikunja.db\"/path: \"\\/opt\/vikunja\/vikunja.db\"/g" /etc/vikunja/config.yml

build/after-install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
systemctl enable vikunja.service
44

55
# Fix the config to contain proper values
6-
NEW_SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
6+
NEW_SECRET=$(head -c 512 /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32)
77
sed -i "s/<jwt-secret>/$NEW_SECRET/g" /etc/vikunja/config.yml
88
sed -i "s/<rootpath>/\/opt\/vikunja\//g" /etc/vikunja/config.yml
99
sed -i "s/path: \"\.\/vikunja.db\"/path: \"\\/opt\/vikunja\/vikunja.db\"/g" /etc/vikunja/config.yml

0 commit comments

Comments
 (0)