labgrid-project / labgrid

Embedded systems control library for development, testing and installation
https://labgrid.readthedocs.io/
Other
343 stars 179 forks source link

`TFTPProviderDriver`'s `stage()` method does not work with tftpd `--secure` flag #1487

Open flxzt opened 3 months ago

flxzt commented 3 months ago

I came across the following issue:

When trying to stage files with the TFTPProviderDriver, it's stage() method symlinks the synced file from the cache dir to the tftp server dir. Because the file is outside of the tftp server directory, this does not work in combination with the --secure flag of the tftp server. This flag makes the server chroot into it's server directory so any symlinks that point outside of it won't be followed correctly.

This is a problem when trying to use the stage() method in combination with the TFTPProvider external field, which returns the "externally visible" (relative) path.

I guess a solution can be to remove the --secure flag and use the internal field to resolve to an absolute path of the staged file symlink.

But if I didn't miss anything this renders the external field effectively broken in the TFTPPRoviderDriver when trying to be used in combination with the stage() method. This also dictates the setup of the tftp server which sometimes is not ideal when used for other purposes as well