Fix memory leaks in prpc_sockpath and prpc_main_loop
prpc_sockpath allocated home via ppath_home but never freed it before returning. prpc_main_loop had three early-return paths that leaked sockpath before the normal free at bind() success. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
478c1a85a9
commit
5bf15f5fdc
|
|
@ -241,11 +241,13 @@ void prpc_main_loop() {
|
|||
char *sockpath = prpc_sockpath();
|
||||
if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
|
||||
pdbg_logf(D_ERROR, "Unix socket error failed to open %s", sockpath);
|
||||
pmem_free(PMEM_SUBSYS_OTHER, sockpath);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fchmod(fd, 0600) == -1) {
|
||||
pdbg_logf(D_ERROR, "Failed to set socket permissions");
|
||||
pmem_free(PMEM_SUBSYS_OTHER, sockpath);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -257,9 +259,10 @@ void prpc_main_loop() {
|
|||
|
||||
if (bind(fd, (struct sockaddr *)&addr, strlen(sockpath) + sizeof(addr.sun_family)) == -1) {
|
||||
pdbg_logf(D_ERROR, "Unix socket bind error");
|
||||
pmem_free(PMEM_SUBSYS_OTHER, sockpath);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
pmem_free(PMEM_SUBSYS_OTHER, sockpath);
|
||||
|
||||
if (listen(fd, 5) == -1) {
|
||||
|
|
@ -335,5 +338,6 @@ char *prpc_sockpath() {
|
|||
}
|
||||
|
||||
snprintf(sockpath, len, "%s%s", home, subdir);
|
||||
pmem_free(PMEM_SUBSYS_OTHER, home);
|
||||
return sockpath;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue