[PATCH] Fix incorrect readlink() buffer handling
Thomas Jarosch
thomas.jarosch at intra2net.com
Thu Oct 13 04:13:54 EDT 2011
Also don't mix tabs and spaces.
Creation of a new bug on cyrus bugzilla currently
doesn't work for me (blank page on submit).
Signed-off-by: Thomas Jarosch <thomas.jarosch at intra2net.com>
---
timsieved/actions.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/timsieved/actions.c b/timsieved/actions.c
index 239d01d..347501c 100644
--- a/timsieved/actions.c
+++ b/timsieved/actions.c
@@ -474,20 +474,25 @@ static int isactive(char *name)
{
char filename[1024];
char activelink[1024];
+ ssize_t link_len;
snprintf(filename, 1023, "%s.bc", name);
memset(activelink, 0, sizeof(activelink));
- if ((readlink("defaultbc", activelink, sizeof(activelink)-1) < 0) &&
- (errno != ENOENT))
+
+ link_len = readlink("defaultbc", activelink, sizeof(activelink)-1);
+ if (link_len == -1)
{
- syslog(LOG_ERR, "readlink(defaultbc): %m");
- return FALSE;
+ if (errno != ENOENT)
+ syslog(LOG_ERR, "readlink(defaultbc): %m");
+
+ return FALSE;
}
+ activelink[link_len] = '\0';
if (!strcmp(filename, activelink)) {
- return TRUE;
+ return TRUE;
} else {
- return FALSE;
+ return FALSE;
}
}
--
1.7.4.4
More information about the Cyrus-devel
mailing list