Mercurial > hg > mlmmj
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;