summaryrefslogtreecommitdiff
path: root/usr.sbin/smtpd
diff options
context:
space:
mode:
authorGilles Chehade <gilles@cvs.openbsd.org>2008-12-11 22:17:13 +0000
committerGilles Chehade <gilles@cvs.openbsd.org>2008-12-11 22:17:13 +0000
commit680a3df73420a5f97bbad9d3cb7b50b305e52d2a (patch)
treeaec86a6df7cefd214b0a4ab596ee4075958684ff /usr.sbin/smtpd
parentb0cee09966e77396253a101c64ac15f76a5ddbc4 (diff)
- bsnprintf() is a wrapper to snprintf() that can be used when we handle an
encoding error or a truncation the same way. This will turn many of our snprintf() checks into boolean checks.
Diffstat (limited to 'usr.sbin/smtpd')
-rw-r--r--usr.sbin/smtpd/smtpd/Makefile4
-rw-r--r--usr.sbin/smtpd/util.c60
2 files changed, 62 insertions, 2 deletions
diff --git a/usr.sbin/smtpd/smtpd/Makefile b/usr.sbin/smtpd/smtpd/Makefile
index 83a10fe1500..9f5a191e3aa 100644
--- a/usr.sbin/smtpd/smtpd/Makefile
+++ b/usr.sbin/smtpd/smtpd/Makefile
@@ -1,11 +1,11 @@
-# $OpenBSD: Makefile,v 1.2 2008/12/05 02:51:32 gilles Exp $
+# $OpenBSD: Makefile,v 1.3 2008/12/11 22:17:11 gilles Exp $
PROG= smtpd
SRCS= parse.y log.c config.c buffer.c imsg.c \
smtpd.c lka.c mfa.c queue.c mta.c mda.c control.c \
smtp.c smtp_session.c store.c \
ssl.c ssl_privsep.c dns.c aliases.c forward.c \
- map.c runner.c
+ map.c runner.c util.c
MAN= smtpd.8 smtpd.conf.5
BINDIR= /usr/sbin
diff --git a/usr.sbin/smtpd/util.c b/usr.sbin/smtpd/util.c
new file mode 100644
index 00000000000..17a04f37f9c
--- /dev/null
+++ b/usr.sbin/smtpd/util.c
@@ -0,0 +1,60 @@
+/* $OpenBSD: util.c,v 1.1 2008/12/11 22:17:12 gilles Exp $ */
+
+/*
+ * Copyright (c) 2008 Gilles Chehade <gilles@openbsd.org>
+ *
+ * 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 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 <sys/stat.h>
+#include <sys/param.h>
+#include <sys/queue.h>
+#include <sys/tree.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <dirent.h>
+#include <errno.h>
+#include <event.h>
+#include <fcntl.h>
+#include <paths.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
+#include <time.h>
+#include <util.h>
+#include <unistd.h>
+
+#include "smtpd.h"
+
+int
+bsnprintf(char *str, size_t size, const char *format, ...)
+{
+ int ret;
+ va_list ap;
+
+ va_start(ap, format);
+ ret = vsnprintf(str, size, format, ap);
+ va_end(ap);
+ if (ret == -1 || ret >= (int)size)
+ return 0;
+
+ return 1;
+}