On 12/11/2019 08:29, Theo de Raadt wrote:
Renaud, please test it for me like this: sysupgrade -d / This interface is dangerously incorrect.
What about this one?
Index: sysupgrade.8 =================================================================== RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.8,v retrieving revision 1.10 diff -u -p -r1.10 sysupgrade.8 --- sysupgrade.8 3 Oct 2019 12:43:58 -0000 1.10 +++ sysupgrade.8 12 Nov 2019 18:01:04 -0000 @@ -24,6 +24,7 @@ .Nm .Op Fl fkn .Op Fl r | s +.Op Fl d Ar directory .Op Ar installurl .Sh DESCRIPTION .Nm @@ -48,6 +49,13 @@ triggering a one-shot upgrade using the .Pp The options are as follows: .Bl -tag -width Ds +.It Fl d Ar directory +Choose the prefix of the +.Ar directory +in which the sets will be downloaded. +_sysupgrade will be appended to that name. +Default is +.Pa /home . .It Fl f Force an already applied upgrade. The default is to upgrade to latest snapshot only if available. Index: sysupgrade.sh =================================================================== RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v retrieving revision 1.32 diff -u -p -r1.32 sysupgrade.sh --- sysupgrade.sh 11 Nov 2019 18:26:52 -0000 1.32 +++ sysupgrade.sh 12 Nov 2019 18:01:04 -0000 @@ -25,7 +25,6 @@ umask 0022 export PATH=/usr/bin:/bin:/usr/sbin:/sbin ARCH=$(uname -m) -SETSDIR=/home/_sysupgrade ug_err() { @@ -34,7 +33,7 @@ ug_err() usage() { - ug_err "usage: ${0##*/} [-fkn] [-r | -s] [installurl]" + ug_err "usage: ${0##*/} [-fkn] [-r | -s] [-d directory] [installurl]" } unpriv() @@ -73,14 +72,16 @@ rmel() { echo -n "$_c" } +SETSDIR=/home/_sysupgrade RELEASE=false SNAP=false FORCE=false KEEP=false REBOOT=true -while getopts fknrs arg; do +while getopts d:fknrs arg; do case ${arg} in + d) SETSDIR=${OPTARG}/_sysupgrade;; f) FORCE=true;; k) KEEP=true;; n) REBOOT=false;; @@ -195,7 +196,7 @@ ${KEEP} && > keep cat <<__EOT >/auto_upgrade.conf Location of sets = disk -Pathname to the sets = /home/_sysupgrade/ +Pathname to the sets = ${SETSDIR} Set name(s) = done Directory does not contain SHA256.sig. Continue without verification = yes __EOT @@ -203,7 +204,7 @@ __EOT if ! ${KEEP}; then CLEAN=$(echo SHA256 ${SETS} | sed -e 's/ /,/g') cat <<__EOT > /etc/rc.firsttime -rm -f /home/_sysupgrade/{${CLEAN}} +rm -f ${SETSDIR}/{${CLEAN}} __EOT fi