[devel] [PATCH for apt v2 18/21] Apt-pipe: ensure mainloop function doesn't return uninitialized or garbage value
Aleksei Nikiforov
darktemplar на altlinux.org
Чт Дек 12 12:57:27 MSK 2019
Found via clang-static-analyzer during investigation of similar issues.
---
apt/cmdline/apt-pipe.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/apt/cmdline/apt-pipe.c b/apt/cmdline/apt-pipe.c
index 7bf1fc6..478eb70 100644
--- a/apt/cmdline/apt-pipe.c
+++ b/apt/cmdline/apt-pipe.c
@@ -155,7 +155,7 @@ static int send_reply(int sock, char *buf, ssize_t bufsize, int fd)
}
static int mainloop(int servsock) {
- int cl;
+ int cl = -1;
int done = 0;
char buf[65536];
@@ -173,7 +173,10 @@ static int mainloop(int servsock) {
if ((received = recv_query(cl, buf, sizeof(buf), &fd)) > 0 && fd != -1)
done = send_reply(cl, buf, received, fd);
if (!done)
+ {
close(cl);
+ cl = -1;
+ }
}
close(servsock);
@@ -254,7 +257,7 @@ static int daemonize()
/* cleanup */
aptpipe_fini();
unlink(APT_PIPE_PATH);
- if (fd)
+ if (fd >= 0)
write(fd, &i, sizeof(int));
exit(EXIT_SUCCESS);
}
--
2.24.1
Подробная информация о списке рассылки Devel