Some characters are reserved and should not be used in Windows independently by the file system used. This avoid to use paths in the filename which could lead to some nasty hacks (like names like "..\hack.txt"). The return statement cause the file transfer to be aborted with VD_AGENT_FILE_XFER_STATUS_ERROR as status. ":" is used to separate filenames from stream names and can be used to create hidden streams. Also is used for drive separator (A:) or device names (NUL:). "/" and "\" are reserved for components (directory, filename, drive, share, server) separators. "*" and "?" are wildcards (which on Windows are supported by different APIs too). "<", ">" and "|" are reserved for shell usage. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- vdagent/file_xfer.cpp | 4 ++++ 1 file changed, 4 insertions(+) This patch was sent many time ago but I forgot to send with updated commit message. diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp index e877cca..f604cdf 100644 --- a/vdagent/file_xfer.cpp +++ b/vdagent/file_xfer.cpp @@ -72,6 +72,10 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start, return; } vd_printf("%u %s (%" PRIu64 ")", start->id, file_name, file_size); + if (strcspn(file_name, "<>:\"/\\|?*") != strlen(file_name)) { + vd_printf("filename contains invalid characters"); + return; + } if (!as_user.begin()) { vd_printf("as_user failed"); return; -- 2.17.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel