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:
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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user