[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