From 158cbeb15107099ca42d2d63fcb1f2bf4ae1623a Mon Sep 17 00:00:00 2001 From: Boris Astardzhiev Date: Thu, 27 Jul 2017 07:29:06 -0600 Subject: [PATCH] netutils/ftpc: Fix some memory leaks --- netutils/ftpc/ftpc_chdir.c | 9 ++++++++- netutils/ftpc/ftpc_connect.c | 7 ++++++- netutils/ftpc/ftpc_disconnect.c | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/netutils/ftpc/ftpc_chdir.c b/netutils/ftpc/ftpc_chdir.c index 90967a0b5..f128fe6ae 100644 --- a/netutils/ftpc/ftpc_chdir.c +++ b/netutils/ftpc/ftpc_chdir.c @@ -1,7 +1,7 @@ /**************************************************************************** * apps/netutils/ftpc/ftpc_chdir.c * - * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2011, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without @@ -86,6 +86,13 @@ int ftpc_chdir(SESSION handle, FAR const char *path) return ret; } + /* Free any previous setting and set the new working directory */ + + if (session->currdir != NULL) + { + free(session->currdir); + } + session->currdir = ftpc_rpwd(handle); return OK; } diff --git a/netutils/ftpc/ftpc_connect.c b/netutils/ftpc/ftpc_connect.c index 962866024..fcb89423c 100644 --- a/netutils/ftpc/ftpc_connect.c +++ b/netutils/ftpc/ftpc_connect.c @@ -105,7 +105,7 @@ SESSION ftpc_connect(FAR struct ftpc_connect_s *server) */ session->homeldir = strdup(ftpc_lpwd()); -/* session->curldir = strdup(sssion->homeldir); */ +/* session->curldir = strdup(session->homeldir); */ /* Create up a timer to prevent hangs */ @@ -123,6 +123,11 @@ SESSION ftpc_connect(FAR struct ftpc_connect_s *server) return (SESSION)session; errout_with_alloc: + if (session->homeldir != NULL) + { + free(session->homeldir); + } + free(session); errout: return NULL; diff --git a/netutils/ftpc/ftpc_disconnect.c b/netutils/ftpc/ftpc_disconnect.c index 0323ac095..745d54074 100644 --- a/netutils/ftpc/ftpc_disconnect.c +++ b/netutils/ftpc/ftpc_disconnect.c @@ -93,6 +93,7 @@ void ftpc_disconnect(SESSION handle) free(session->pwd); free(session->initrdir); free(session->homerdir); + free(session->homeldir); free(session->currdir); /* Then destroy the session */