From d7a1dbb19f01231b4ed665754fb231117e27ca3b Mon Sep 17 00:00:00 2001 From: Per Cederqvist Date: Fri, 29 Sep 2006 20:07:16 +0000 Subject: [PATCH] Check that conferences read from the database are the expected size. (Bug 169). * src/server/simple-cache.c (read_conference): Sanitycheck the supplied size. --- ChangeLog | 7 +++++++ src/server/simple-cache.c | 22 +++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c48639fc..51a52bd0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-29 Per Cederqvist + + Check that conferences read from the database are the expected + size. (Bug 169). + * src/server/simple-cache.c (read_conference): Sanitycheck the + supplied size. + 2006-09-28 Per Cederqvist Renamed the error code illegal-aux-item to illegal-aux-item-tag. diff --git a/src/server/simple-cache.c b/src/server/simple-cache.c index 397afb38..e2b67135 100644 --- a/src/server/simple-cache.c +++ b/src/server/simple-cache.c @@ -274,21 +274,33 @@ read_person(FILE *fp, static Conference * read_conference(FILE *fp, long pos, - long UNUSED(size)) /* FIXME (bug 169): sanity-check the size */ + long size) { Conference *c; - long dummy; + long conf_no; + long new_pos; c = alloc_conference(); fseek(fp, pos+1, SEEK_SET); /* Skip 'C' */ - dummy = fparse_long(fp); + conf_no = fparse_long(fp); if ( fparse_conference(fp, c) != OK ) { free_conference(c); return NULL; } - else - return c; + + new_pos = ftell(fp); + if (new_pos < 0) + { + kom_log("ftell failed: %s. Ignored.\n", strerror(errno)); + } + else if (new_pos != pos + size) + { + kom_log("WARNING: Conference %ld at %ld should be %ld bytes, " + "but %ld bytes was read\n", + conf_no, pos, size, new_pos - pos); + } + return c; } -- GitLab