Browse Source

Use freezero(3) for the imsg framework in imsg_free(3) and ibuf_free(3).

In our privsep model, imsg is often used to transport sensitive
information between processes.  But a process might free an imsg, and
reuse the memory for a different thing.  iked uses some
explicit_bzero() to clean imsg-buffer but doing it in the library with
the freezero() is less error-prone and also benefits other daemons.
OK deraadt@ jsing@ claudio@
OPENBSD_6_2
reyk 7 years ago
parent
commit
9e0fddd8a3
2 changed files with 4 additions and 4 deletions
  1. +2
    -2
      src/lib/libutil/imsg-buffer.c
  2. +2
    -2
      src/lib/libutil/imsg.c

+ 2
- 2
src/lib/libutil/imsg-buffer.c View File

@ -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> * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -182,7 +182,7 @@ ibuf_free(struct ibuf *buf)
{ {
if (buf == NULL) if (buf == NULL)
return; return;
free(buf->buf);
freezero(buf->buf, buf->size);
free(buf); free(buf);
} }


+ 2
- 2
src/lib/libutil/imsg.c View File

@ -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> * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -263,7 +263,7 @@ imsg_close(struct imsgbuf *ibuf, struct ibuf *msg)
void void
imsg_free(struct imsg *imsg) imsg_free(struct imsg *imsg)
{ {
free(imsg->data);
freezero(imsg->data, imsg->hdr.len - IMSG_HEADER_SIZE);
} }
int int


Loading…
Cancel
Save