command [argument ...] in ssh(1): a footgun

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 



Hi,

ssh(1) currently affords an argument-passing functionality, but as the manpage states, all arguments are simply concatenated by space. This behavior is non-obvious for those reading only the synopsis: one would expect something that takes argv input to somehow preserve the argument boundary and not, say, let a semicolon ruin all the fun. This is probably old news for all of you.

I have two proposals for dealing with this problem. One modest, one less so.

The modest proposal is that we put a giant CAVEATS section in the manual page. Now this does not help anyone who won't read the manpage at all, but at least by spelling it out we catch skim readers' attention. If someone's code blows up with this assumption, we can at least say "we told you so".

The less modest one is we throw out the "[argument ...]" part altogether. It does not add much functionality, really: everything it does can be achieved by putting a big quotation mark over the existing arguments invocation. There is not much to lose by doing so, except for the logistical costs of deprecation and removal.

What about escaping the arguments? Nobody said the user has to use a POSIX shell, so we simply don't have a universal escape method. The manual's DESCRIPTION section is a bit vague here: it does not specify which shell is used. In truth, session.c runs the user's shell via the `-c` option, not just the system POSIX shell via system().

Sincerely,
Mingye Wang (Artoria2e5)

_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev



[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux