Skip to content

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

Open

Description

@flxzt

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

Activity

  1. rvdgracht commented on Jun 4, 2025

    @rvdgracht
    Contributor

    I'm running into the same problem. Current implementation only works for tftp servers without --secure (which is default).
    For tftp without --secure the full internal file path has to be used which is not ideal and that doesn't allign with the current documentation from i.e. Barebox.

    How about a move from /var/cache/labgrid to the tftp internal dir on the remote instead of a symlink?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions