Skip to content

(Linux) Split Tunnel CLI does not handle spaces in file path #430

@jordan-ivpn

Description

@jordan-ivpn

Bug report

Describe your environment

  • Device: _____
  • OS name and version: Fedora 42_
  • IVPN app version: 3.14.17_

Describe the problem

A file path with a space (/home/user/script 2.sh, or /usr/lib/plexmediaserver/Plex Media Server) is not recognized as valid for the IVPN App's split tunnel command.

Steps to reproduce:

Create a trivial script called script1.sh:

#!/bin/bash
curl ifconfig.co/json

Make executable chmod +x script1.sh and run the script:

{
  "ip": "...
  ...
}

Add a space to the script name:

cp script1.sh "script 2.sh"

Run it again to verify that the shell handles the space via escape (\ ) or using quotes:

$ script\ 2.sh
$ "script 2.sh"

Enable the split tunnel feature, and run the first script to verify that it works:

$ ivpn splittun -appadd /home/user/script1.sh
Running command in Split Tunneling environment (pid:5603):
{
  "ip": "...
  ...
}

Using common space-handling techniques, try to run the second script:

$ivpn splittun -appadd /home/user/script\ 2.sh 
Error: Exec: "/home/user/script": stat /home/user/script: no such file or directory

$ ivpn splittun -appadd "/home/jordan/script 2.sh"
Error: Exec: "/home/user/script": stat /home/user/script: no such file or directory

$ PATH_TO_EXEC="/home/jordan/script 2.sh"
$ ivpn splittun -appadd $PATH_TO_EXEC
Error: Exec: "/home/user/script": stat /home/user/script: no such file or directory

$ ivpn splittun -appadd "$PATH_TO_EXEC" 
Error: Exec: "/home/user/script": stat /home/user/script: no such file or directory

$ ivpn splittun -appadd $(echo "$PATH_TO_EXEC")
Error: Exec: "/home/user/script": stat /home/user/script: no such file or directory

Observed Results:

The IVPN App seems to be taking split tunnel commands via a shift-like procedure, shifting the next command line arg to a buffer, then parsing, and processing. This does not handle spaces for the file path as expected.

The connect command successfully handles spaces for city names:

ivpn connect -p wg "Las Vegas"   # success
ivpn connect -p wg Las Vegas     # fail

Expected Results:

Accept an escape (\ ) or using quotes for split tunnel executable path.

--

Thanks.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

Status

To Do

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions