Free daemon struct in all telnetd_daemon error path

Change-Id: I7f014dc5f327a6ae6adf9cdbea8089ffab2efe37
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao 2020-02-03 17:16:49 +08:00 committed by patacongo
parent d6e450e39a
commit 72bbc27b0f

@ -151,9 +151,8 @@ static int telnetd_daemon(int argc, FAR char *argv[])
sa.sa_flags = SA_NOCLDWAIT; sa.sa_flags = SA_NOCLDWAIT;
if (sigaction(SIGCHLD, &sa, NULL) < 0) if (sigaction(SIGCHLD, &sa, NULL) < 0)
{ {
int errval = errno; nerr("ERROR: sigaction failed: %d\n", errno);
nerr("ERROR: sigaction failed: %d\n", errval); goto errout_with_daemon;
return -errval;
} }
/* Block receipt of the SIGCHLD signal */ /* Block receipt of the SIGCHLD signal */
@ -162,9 +161,8 @@ static int telnetd_daemon(int argc, FAR char *argv[])
sigaddset(&blockset, SIGCHLD); sigaddset(&blockset, SIGCHLD);
if (sigprocmask(SIG_BLOCK, &blockset, NULL) < 0) if (sigprocmask(SIG_BLOCK, &blockset, NULL) < 0)
{ {
int errval = errno; nerr("ERROR: sigprocmask failed: %d\n", errno);
nerr("ERROR: sigprocmask failed: %d\n", errval); goto errout_with_daemon;
return -errval;
} }
#endif /* CONFIG_SCHED_HAVE_PARENT */ #endif /* CONFIG_SCHED_HAVE_PARENT */
@ -173,10 +171,9 @@ static int telnetd_daemon(int argc, FAR char *argv[])
listensd = socket(daemon->family, SOCK_STREAM, 0); listensd = socket(daemon->family, SOCK_STREAM, 0);
if (listensd < 0) if (listensd < 0)
{ {
int errval = errno;
nerr("ERROR: socket() failed for family %u: %d\n", nerr("ERROR: socket() failed for family %u: %d\n",
daemon->family, errval); daemon->family, errno);
return -errval; goto errout_with_daemon;
} }
/* Set socket to reuse address */ /* Set socket to reuse address */
@ -348,6 +345,7 @@ errout_with_acceptsd:
errout_with_socket: errout_with_socket:
close(listensd); close(listensd);
errout_with_daemon:
free(daemon); free(daemon);
return 1; return 1;
} }