diff --git a/CHANGES b/CHANGES index aca743c578..b27b290107 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +4218. [bug] Potential null pointer dereference on out of memory if mmap is not supported. [RT #40777] + 4217. [protocol] Add support for CSYNC. [RT #40532] 4216. [cleanup] Silence static analysis warnings. [RT #40649] diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c index 4be9eced75..f0dc9fdf1c 100644 --- a/lib/isc/unix/file.c +++ b/lib/isc/unix/file.c @@ -674,6 +674,9 @@ isc_file_mmap(void *addr, size_t len, int prot, len = end - offset; buf = malloc(len); + if (buf == NULL) + return (NULL); + ret = read(fd, buf, len); if (ret != (ssize_t) len) { free(buf); diff --git a/lib/isc/win32/file.c b/lib/isc/win32/file.c index c6adaae20f..572dce4a5a 100644 --- a/lib/isc/win32/file.c +++ b/lib/isc/win32/file.c @@ -751,6 +751,9 @@ isc_file_mmap(void *addr, size_t len, int prot, len = end - offset; buf = malloc(len); + if (buf == NULL) + return (NULL); + ret = read(fd, buf, (unsigned int) len); if (ret != (ssize_t) len) { free(buf);