-
Notifications
You must be signed in to change notification settings - Fork 380
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
SSH_FXP_REALPATH and symlinks #512
Comments
Sounds probably good. |
uhm ... the problem here is that we should also return an error so we cannot reuse the current interface. |
😐 Yeah, looking back at it now, it should have always retuned an error. |
If we cannot change the RealPath interface, I think I have to wait for a v2 to fix this issue. I don't want to maintain a custom branch, I think this is a minor issue, we don't violate the specs. The current code base never returns an error because it does not resolve symbolic links, so no errors can occur |
Well right now, the interface isn’t used for anything right? And we’re supposed to just be using it as an extension interface anyways, right? So, switching the interface shouldn’t actually break anything? 🤔 |
If we could change the
would be perfect. I think it is unlikely that anyone is using this interface as it was added for the start directory feature but it basically doesn't work. Another solution is to add a new extension interface but this way we have to check for 2 interfaces here. This doesn't seem ideal |
A type switch at that point wouldn’t be the worst thing ever, and I don’t see that it would be any particularly performance critical path either. So, I kind of see two different options:
|
Forgot to mention: I did a search on Github for But then the worry is always that you might break closed source, right? The one you cannot account for ahead of time. |
Ok, do you have any preference? Maybe the second option will avoid a backward incompatible change in the future |
Yeah, I’m partial to the second option. There’s a higher possibility of source-code-level breakage, but that risk was always going to be fairly low, and the fix is relatively easy as well, just add an error return and return a It would make sense though to also document that the legacy form is still supported, even though it might not be exported. Just being clear about what kind of behavior exists there (since for anyone coming in new, it might seem astonishing), and why it exists. |
added legacyRealPathFileLister for backward compatibility Fixes pkg#512
added legacyRealPathFileLister for backward compatibility Fixes pkg#512
added legacyRealPathFileLister for backward compatibility Fixes pkg#512
Hi,
OpenSSH resolves symlinks for
SSH_FXP_REALPATH
calls (without failing if the symlink is broken), see here.We simply return a cleaned path without resolving any symbolic links. This is what the v3 specs literally say (v6 has more details):
If we want to behave like OpenSSH I think we can use
os.Lstat
andos.Readlink
for our server implementation.For request-server it is more tricky, we would have to generate
Lstat
andReadlink
calls ourself. Maybe we can just document our realpath behaviour and remove the depracation notice from RealPathFileLister. Request server users can implement RealPathFileLister if they want to resolve symlinks. What do you think about? ThanksThe text was updated successfully, but these errors were encountered: