summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2010-04-22 11:44:46 +0200
committerStephen Gallagher <sgallagh@redhat.com>2010-04-26 09:55:09 -0400
commit2e2bebb263d2734f29da6cfb85eeb08a38c50298 (patch)
treece5139c32f55b3185b697b2f870834190c845031
parent15cb60aa3de20f3d6869fb7b4b3fcac2b6b1dca4 (diff)
downloadsssd-2e2bebb263d2734f29da6cfb85eeb08a38c50298.tar.gz
sssd-2e2bebb263d2734f29da6cfb85eeb08a38c50298.tar.xz
sssd-2e2bebb263d2734f29da6cfb85eeb08a38c50298.zip
Fix a potential memory violation
If read() returns with errno set to EINTR -1 is added to total_len.
-rw-r--r--src/monitor/monitor.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index d08630929..9f5c2d38b 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;
}