[FFmpeg-devel] [PATCH 2/3] lavf/ftp: properly read an empty path

Mariusz SzczepaƄczyk mszczepanczyk at gmail.com
Sun Aug 9 02:38:11 CEST 2015


---
 libavformat/ftp.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/libavformat/ftp.c b/libavformat/ftp.c
index c92ed11..542cf6a 100644
--- a/libavformat/ftp.c
+++ b/libavformat/ftp.c
@@ -354,10 +354,7 @@ static int ftp_current_dir(FTPContext *s)
     if (!end)
         goto fail;
 
-    if (end > res && end[-1] == '/') {
-        end[-1] = '\0';
-    } else
-        *end = '\0';
+    *end = '\0';
     s->path = av_strdup(start);
 
     av_free(res);
@@ -605,9 +602,8 @@ static int ftp_connect(URLContext *h, const char *url)
 {
     char proto[10], path[MAX_URL_SIZE], credencials[MAX_URL_SIZE], hostname[MAX_URL_SIZE];
     const char *tok_user = NULL, *tok_pass = NULL;
-    char *end = NULL;
+    char *end = NULL, *newpath = NULL;
     int err;
-    size_t pathlen;
     FTPContext *s = h->priv_data;
 
     s->state = DISCONNECTED;
@@ -642,10 +638,12 @@ static int ftp_connect(URLContext *h, const char *url)
 
     if ((err = ftp_current_dir(s)) < 0)
         return err;
-    pathlen = strlen(s->path) + strlen(path) + 1;
-    if ((err = av_reallocp(&s->path, pathlen)) < 0)
-        return err;
-    av_strlcat(s->path + strlen(s->path), path, pathlen);
+
+    newpath = av_append_path_component(s->path, path);
+    if (!newpath)
+        return AVERROR(ENOMEM);
+    av_free(s->path);
+    s->path = newpath;
 
     return 0;
 }
-- 
2.4.6



More information about the ffmpeg-devel mailing list