From c7fc1078dad4b237256bfedca5121a6a55ac625d Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Thu, 22 Apr 2010 11:44:46 +0200 Subject: Fix a potential memory violation If read() returns with errno set to EINTR -1 is added to total_len. --- src/monitor/monitor.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/monitor') diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index 0a98d09c2..c7997e42e 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -1371,7 +1371,8 @@ static void process_config_file(struct tevent_context *ev, while (total_len < event_size) { len = read(file_ctx->mt_ctx->inotify_fd, buf+total_len, event_size-total_len); - if (len == -1 && errno != EINTR) { + if (len == -1) { + if (errno == EINTR) continue; DEBUG(0, ("Critical error reading inotify file descriptor.\n")); goto done; } @@ -1391,7 +1392,8 @@ static void process_config_file(struct tevent_context *ev, total_len = 0; while (total_len < in_event->len) { len = read(file_ctx->mt_ctx->inotify_fd, &name, in_event->len); - if (len == -1 && errno != EINTR) { + if (len == -1) { + if (errno == EINTR) continue; DEBUG(0, ("Critical error reading inotify file descriptor.\n")); goto done; } -- cgit