[FFmpeg-devel] [PATCH] avformat/ftp: Exit with error on ftp_open if file does not exist
Fotyev V.
fotevvd at gmail.com
Sat Dec 28 15:11:54 EET 2019
See attached
On 2019-12-28 17:17, Michael Niedermayer wrote:
> On Sat, Dec 28, 2019 at 01:52:04PM +0300, Fotyev V. wrote:
>> Add a check for code 550 when requesting file size
>> ---
>> libavformat/ftp.c | 11 +++++++++--
>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavformat/ftp.c b/libavformat/ftp.c
>> index 97ad80d..64a5250 100644
>> --- a/libavformat/ftp.c
>> +++ b/libavformat/ftp.c
>> @@ -391,13 +391,17 @@ static int ftp_file_size(FTPContext *s)
>> char command[CONTROL_BUFFER_SIZE];
>> char *res = NULL;
>> static const int size_codes[] = {213, 0};
>> + int resp_code;
>>
>> snprintf(command, sizeof(command), "SIZE %s\r\n", s->path);
>> - if (ftp_send_command(s, command, size_codes, &res) == 213 && res &&
>> strlen(res) > 4) {
>> + resp_code = ftp_send_command(s, command, size_codes, &res);
> patch is corrupted by newlines
>
> [...]
>
> thx
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
From 46108143e535962dd2d65398e7f794cbeb3e9cd7 Mon Sep 17 00:00:00 2001
From: ftk <ftk at users.noreply.github.com>
Date: Sat, 28 Dec 2019 13:40:52 +0300
Subject: [PATCH] libavformat: ftp: Exit with error on ftp_open if file does
not exist
Add a check for code 550 when requesting file size
---
libavformat/ftp.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/libavformat/ftp.c b/libavformat/ftp.c
index 97ad80d..64a5250 100644
--- a/libavformat/ftp.c
+++ b/libavformat/ftp.c
@@ -391,13 +391,17 @@ static int ftp_file_size(FTPContext *s)
char command[CONTROL_BUFFER_SIZE];
char *res = NULL;
static const int size_codes[] = {213, 0};
+ int resp_code;
snprintf(command, sizeof(command), "SIZE %s\r\n", s->path);
- if (ftp_send_command(s, command, size_codes, &res) == 213 && res && strlen(res) > 4) {
+ resp_code = ftp_send_command(s, command, size_codes, &res);
+ if (resp_code == 213 && res && strlen(res) > 4) {
s->filesize = strtoll(&res[4], NULL, 10);
} else {
s->filesize = -1;
av_free(res);
+ if (resp_code == 550)
+ return AVERROR(ENOENT);
return AVERROR(EIO);
}
@@ -723,10 +727,13 @@ static int ftp_open(URLContext *h, const char *url, int flags)
if ((err = ftp_connect(h, url)) < 0)
goto fail;
+ if ((err = ftp_file_size(s)) == AVERROR(ENOENT))
+ goto fail;
+
if (ftp_restart(s, 0) < 0) {
h->is_streamed = 1;
} else {
- if (ftp_file_size(s) < 0 && flags & AVIO_FLAG_READ)
+ if (err < 0 && flags & AVIO_FLAG_READ)
h->is_streamed = 1;
if (s->write_seekable != 1 && flags & AVIO_FLAG_WRITE)
h->is_streamed = 1;
--
2.17.1
More information about the ffmpeg-devel
mailing list