openfortivpn: don't report error if symlink already exists
authorAaron Goodman <aaronjg@stanford.edu>
Mon, 20 Jul 2020 14:46:48 +0000 (10:46 -0400)
committerAaron Goodman <aaronjg@stanford.edu>
Wed, 29 Jul 2020 03:06:09 +0000 (23:06 -0400)
If two openfortivpn scripts are started at the same time, a race
condition can occur where the conditional evaluates to true, but the
symlink exists by the time the other script tries to create it

Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
net/openfortivpn/files/openfortivpn.sh

index b50ba016a45a9e6e91cd8893fed0775887cd21e2..5599f31503ec5e3a5adfba4376c97be160245453 100755 (executable)
@@ -104,7 +104,7 @@ proto_openfortivpn_setup() {
         [ -n "$username" ] && append_args -u "$username"
         [ -n "$password" ] && {
                 umask 077
-                mkdir -p /var/etc
+                mkdir -p '/var/etc/openfortivpn'
                 pwfile="/var/etc/openfortivpn/$config.passwd"
                 echo "$password" > "$pwfile"
         }
@@ -112,7 +112,7 @@ proto_openfortivpn_setup() {
         [ -n "$local_ip" ] || local_ip=192.0.2.1
         [ -e '/etc/ppp/peers' ] || mkdir -p '/etc/ppp/peers'
         [ -e '/etc/ppp/peers/openfortivpn' ] || {
-            ln -s -T '/var/etc/openfortivpn/peers' '/etc/ppp/peers/openfortivpn'
+            ln -s -T '/var/etc/openfortivpn/peers' '/etc/ppp/peers/openfortivpn' 2> /dev/null
             mkdir -p '/var/etc/openfortivpn/peers'
         }