From 640f32b1b6f7855d5aa8ecdb080e0c08e78e021d Mon Sep 17 00:00:00 2001 From: Franciszek Kalinowski Date: Tue, 12 May 2026 12:00:00 +0000 Subject: [PATCH] avformat/ftp: reject CR/LF in the URL path to prevent FTP command injection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ftp_connect() interpolates the URL path into SIZE/RETR/STOR/CWD/DELE/RMD/RNFR commands without checking for CR/LF, although it already rejects CR/LF in the user and password fields. Reject CR/LF in s->path the same way. Reported and reviewed by Franciszek Kalinowski (isec.pl / striga.ai) and Bartosz Śmigielski. --- libavformat/ftp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavformat/ftp.c b/libavformat/ftp.c index 761dce8128..7b0cf31492 100644 --- a/libavformat/ftp.c +++ b/libavformat/ftp.c @@ -746,6 +746,11 @@ static int ftp_connect(URLContext *h, const char *url) av_free(s->path); s->path = newpath; + if (strpbrk(s->path, "\r\n")) { + av_log(h, AV_LOG_ERROR, "Path contains CR/LF characters\n"); + return AVERROR(EINVAL); + } + return 0; }