changeset 663:945ef20e9d08

Fixed mmap()ing of zero-sized files (Robin H. Johnson)
author mortenp
date Fri, 31 Oct 2008 06:13:09 +1100
parents 39fe89c4e420
children 5bc02b4b6da8
files ChangeLog src/getaddrsfromfd.c src/mlmmj-list.c
diffstat 3 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Nov 06 08:35:03 2007 +1100
+++ b/ChangeLog	Fri Oct 31 06:13:09 2008 +1100
@@ -1,3 +1,4 @@
+ o Fixed mmap()ing of zero-sized files (Robin H. Johnson)
  o Fixed mlmmj-recieve [sic] for architectures where
    sizeof(int) and sizeof(char *) differ
  o Added support for the 'originalmail' keyword (Sascha Sommer)
--- a/src/getaddrsfromfd.c	Tue Nov 06 08:35:03 2007 +1100
+++ b/src/getaddrsfromfd.c	Fri Oct 31 06:13:09 2008 +1100
@@ -21,6 +21,10 @@
 		log_error(LOG_ARGS, "Could not fstat fd");
 		return -1;
 	}
+	/* mmap of 0-bytes is invalid */
+	if(st.st_size == 0) {
+		return 0;
+	}
 
 	start = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
 	if(start == MAP_FAILED) {
--- a/src/mlmmj-list.c	Tue Nov 06 08:35:03 2007 +1100
+++ b/src/mlmmj-list.c	Fri Oct 31 06:13:09 2008 +1100
@@ -69,6 +69,11 @@
 	if(!S_ISREG(st.st_mode))
 		return -1;
 
+	/* Nobody there */
+	if(st.st_size == 0) {
+		return 0;
+	}
+
 	start = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
 	if(start == MAP_FAILED)
 		return -1;