-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stop recommending -jnlpUrl
#8639
Conversation
I don't think the escaping is all that interesting since this is a command the user is expected to copy and paste rather than something automatically executed, but CC'ing the security team in case they are interested. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A good start.
sb.append("-name "); | ||
sb.append(computerName); | ||
sb.append(' '); | ||
if (isWebSocket()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could simply deprecate this option, since it will now have no effect other than changing the recommendation for the command if you take the advice to stop using -jnlpUrl
. Compare discussion of vmargs
in #6543.
if (isWebSocket()) { | ||
sb.append("-webSocket "); | ||
} | ||
if (tunnel != null) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here. Also workDirSettings
. IOW there is no longer a reason to have any nondeprecated configurable parameters on JNLPLauncher
.
If you think more things can be cleaned up, then by all means, propose some pull requests to clean them up. I will not be taking cleanup suggestions. |
Seems fine from security POV, thanks for considering the escaping here. |
This PR is now ready for merge. We will merge it after approximately 24 hours if there is no negative feedback. |
See jenkinsci/remoting#677 (comment); the
-jnlpUrl
form essentially means you don't have to specify-name
and things like-webSocket
,-workDir
, etc but then requires Remoting to query the server for these values. Simpler and less error-prone to just pass in the desired arguments directly without the extra layer of indirection.Unfortunately, passing in
-name
via a shell can be tricky if the name contains special characters. We tested with a name of"foo's `bar"
(yes, that includes both single and double quotes, backticks, and spaces) on both Unix and Windows to come up with the escaping algorithm. Fortunately we don't need to do deal with most other characters that need escaping in shells due to the restrictions imposed byJenkins#checkGoodName
.The end result is a simpler connection algorithm on the Remoting side that skips an additional request to the
.jnlp
file on the server and instead begins execution directly with the desired set of arguments. This removal of a layer of indirection makes things easier to understand and debug.Testing done
Tested the instructions on both Unix and Windows with an agent named
"foo's `bar"
.Proposed changelog entries
Proposed upgrade guidelines
N/A
Submitter checklist
Desired reviewers
@mention
Before the changes are marked as
ready-for-merge
:Maintainer checklist