From 235e0bd65a49b469d661a9831067e3f745fbbaad Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 12 Jul 2015 19:46:58 +0100 Subject: [PATCH] Update imsg*.[ch] from OpenBSD, including bzero->memset. --- compat.h | 5 ----- compat/imsg-buffer.c | 11 ++++++----- compat/imsg.c | 17 ++++++++--------- configure.ac | 1 - 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/compat.h b/compat.h index 2c6f1c67..8666a1d8 100644 --- a/compat.h +++ b/compat.h @@ -185,11 +185,6 @@ typedef uint64_t u_int64_t; #define flock(fd, op) (0) #endif -#ifndef HAVE_BZERO -#undef bzero -#define bzero(buf, len) memset(buf, 0, len); -#endif - #ifndef HAVE_CLOSEFROM /* closefrom.c */ void closefrom(int); diff --git a/compat/imsg-buffer.c b/compat/imsg-buffer.c index 6756de0a..241c4f4d 100644 --- a/compat/imsg-buffer.c +++ b/compat/imsg-buffer.c @@ -1,4 +1,4 @@ -/* $OpenBSD: imsg-buffer.c,v 1.4 2014/06/30 00:25:17 deraadt Exp $ */ +/* $OpenBSD: imsg-buffer.c,v 1.7 2015/07/12 18:40:49 nicm Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -74,7 +74,7 @@ ibuf_realloc(struct ibuf *buf, size_t len) /* on static buffers max is eq size and so the following fails */ if (buf->wpos + len > buf->max) { - errno = ENOMEM; + errno = ERANGE; return (-1); } @@ -149,7 +149,7 @@ ibuf_write(struct msgbuf *msgbuf) unsigned int i = 0; ssize_t n; - bzero(&iov, sizeof(iov)); + memset(&iov, 0, sizeof(iov)); TAILQ_FOREACH(buf, &msgbuf->bufs, entry) { if (i >= IOV_MAX) break; @@ -233,8 +233,9 @@ msgbuf_write(struct msgbuf *msgbuf) char buf[CMSG_SPACE(sizeof(int))]; } cmsgbuf; - bzero(&iov, sizeof(iov)); - bzero(&msg, sizeof(msg)); + memset(&iov, 0, sizeof(iov)); + memset(&msg, 0, sizeof(msg)); + memset(&cmsgbuf, 0, sizeof(cmsgbuf)); TAILQ_FOREACH(buf, &msgbuf->bufs, entry) { if (i >= IOV_MAX) break; diff --git a/compat/imsg.c b/compat/imsg.c index 9db26ad6..982ee069 100644 --- a/compat/imsg.c +++ b/compat/imsg.c @@ -1,4 +1,4 @@ -/* $OpenBSD: imsg.c,v 1.6 2014/06/30 00:26:22 deraadt Exp $ */ +/* $OpenBSD: imsg.c,v 1.9 2015/07/12 18:40:49 nicm Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -34,12 +34,10 @@ int imsg_get_fd(struct imsgbuf *); int available_fds(unsigned int); -/* TA: 2014-09-08: Note that the original code calls getdtablecount() which is - * OpenBSD specific. Until such time that it's ported elsewhere from - * , I've mimicked what OpenSMTPD are doing, by using available_fds() - * instead. +/* + * The original code calls getdtablecount() which is OpenBSD specific. Use + * available_fds() from OpenSMTPD instead. */ - int available_fds(unsigned int n) { @@ -68,7 +66,7 @@ void imsg_init(struct imsgbuf *ibuf, int fd) { msgbuf_init(&ibuf->w); - bzero(&ibuf->r, sizeof(ibuf->r)); + memset(&ibuf->r, 0, sizeof(ibuf->r)); ibuf->fd = fd; ibuf->w.fd = fd; ibuf->pid = getpid(); @@ -89,7 +87,8 @@ imsg_read(struct imsgbuf *ibuf) int fd; struct imsg_fd *ifd; - bzero(&msg, sizeof(msg)); + memset(&msg, 0, sizeof(msg)); + memset(&cmsgbuf, 0, sizeof(cmsgbuf)); iov.iov_base = ibuf->r.buf + ibuf->r.wpos; iov.iov_len = sizeof(ibuf->r.buf) - ibuf->r.wpos; @@ -317,7 +316,7 @@ int imsg_flush(struct imsgbuf *ibuf) { while (ibuf->w.queued) - if (msgbuf_write(&ibuf->w) < 0) + if (msgbuf_write(&ibuf->w) <= 0) return (-1); return (0); } diff --git a/configure.ac b/configure.ac index cd3ab5a3..24aded53 100644 --- a/configure.ac +++ b/configure.ac @@ -99,7 +99,6 @@ AC_CHECK_HEADERS( # Check for some functions that are replaced or omitted. AC_CHECK_FUNCS( [ \ - bzero \ dirfd \ flock \ setproctitle \