diff options
-rw-r--r-- | compat/freezero.c | 29 | ||||
-rw-r--r-- | compat/imsg-buffer.c | 4 | ||||
-rw-r--r-- | compat/imsg.c | 4 | ||||
-rw-r--r-- | configure.ac | 1 |
4 files changed, 34 insertions, 4 deletions
diff --git a/compat/freezero.c b/compat/freezero.c new file mode 100644 index 00000000..916b120f --- /dev/null +++ b/compat/freezero.c @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> + +#include <stdlib.h> +#include <string.h> + +#include "compat.h" + +void +freezero(void *ptr, size_t size) +{ + memset(ptr, 0, size); + free(ptr); +} diff --git a/compat/imsg-buffer.c b/compat/imsg-buffer.c index 3576d5f0..a302fa27 100644 --- a/compat/imsg-buffer.c +++ b/compat/imsg-buffer.c @@ -1,4 +1,4 @@ -/* $OpenBSD: imsg-buffer.c,v 1.9 2017/03/17 14:51:26 deraadt Exp $ */ +/* $OpenBSD: imsg-buffer.c,v 1.10 2017/04/11 09:57:19 reyk Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -182,7 +182,7 @@ ibuf_free(struct ibuf *buf) { if (buf == NULL) return; - free(buf->buf); + freezero(buf->buf, buf->size); free(buf); } diff --git a/compat/imsg.c b/compat/imsg.c index 987284b3..85f13370 100644 --- a/compat/imsg.c +++ b/compat/imsg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: imsg.c,v 1.14 2017/03/24 09:34:12 nicm Exp $ */ +/* $OpenBSD: imsg.c,v 1.15 2017/04/11 09:57:19 reyk Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -263,7 +263,7 @@ imsg_close(struct imsgbuf *ibuf, struct ibuf *msg) void imsg_free(struct imsg *imsg) { - free(imsg->data); + freezero(imsg->data, imsg->hdr.len - IMSG_HEADER_SIZE); } int diff --git a/configure.ac b/configure.ac index 115dd1de..b078c4f4 100644 --- a/configure.ac +++ b/configure.ac @@ -105,6 +105,7 @@ AC_REPLACE_FUNCS([ \ explicit_bzero \ fgetln \ fparseln \ + freezero \ getdtablecount \ getprogname \ recallocarray \ |