Attention is currently required from: plaisthos.
Hello plaisthos,
I'd like you to do a code review.
Please visit
http://gerrit.openvpn.net/c/openvpn/+/1208?usp=email
to review the following change.
Change subject: dns: Fix bug in error handling when talking to script
......................................................................
dns: Fix bug in error handling when talking to script
Comparing the result of read/write to a size_t value
is dangerous C. Since ssize_t and size_t have the same
size ssize_t is promoted to size_t, so -1 becomes
size_t max value and is not smaller than the expected
length.
Make sure to compare ssize_t to ssize_t to avoid any
suprises.
Change-Id: Ic395b6d1dce510bb4b499c5beba61f033a2a860b
Signed-off-by: Frank Lichtenheld <[email protected]>
---
M src/openvpn/dns.c
1 file changed, 5 insertions(+), 6 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/08/1208/1
diff --git a/src/openvpn/dns.c b/src/openvpn/dns.c
index efb888a..2a9e60b 100644
--- a/src/openvpn/dns.c
+++ b/src/openvpn/dns.c
@@ -642,11 +642,10 @@
while (1)
{
- ssize_t rlen, wlen;
char path[PATH_MAX];
/* Block here until parent sends a path */
- rlen = read(dns_pipe_fd[0], &path, sizeof(path));
+ ssize_t rlen = read(dns_pipe_fd[0], &path, sizeof(path));
if (rlen < 1)
{
if (rlen == -1 && errno == EINTR)
@@ -665,8 +664,8 @@
/* Unblock parent process */
while (1)
{
- wlen = write(ack_pipe_fd[1], &res, sizeof(res));
- if ((wlen == -1 && errno != EINTR) || wlen < sizeof(res))
+ ssize_t wlen = write(ack_pipe_fd[1], &res, sizeof(res));
+ if ((wlen == -1 && errno != EINTR) || wlen <
(ssize_t)sizeof(res))
{
/* Not much we can do about errors but exit */
close(dns_pipe_fd[0]);
@@ -727,7 +726,7 @@
env_set_write_file(dvf, es);
int wfd = updown_runner->fds[1];
- size_t dvf_size = strlen(dvf) + 1;
+ ssize_t dvf_size = strlen(dvf) + 1;
while (1)
{
ssize_t len = write(wfd, dvf, dvf_size);
@@ -746,7 +745,7 @@
while (1)
{
ssize_t len = read(rfd, &status, sizeof(status));
- if (len < sizeof(status))
+ if (len < (ssize_t)sizeof(status))
{
if (len == -1 && errno == EINTR)
{
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1208?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Ic395b6d1dce510bb4b499c5beba61f033a2a860b
Gerrit-Change-Number: 1208
Gerrit-PatchSet: 1
Gerrit-Owner: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel