From 680a3df73420a5f97bbad9d3cb7b50b305e52d2a Mon Sep 17 00:00:00 2001 From: Gilles Chehade Date: Thu, 11 Dec 2008 22:17:13 +0000 Subject: - 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. --- usr.sbin/smtpd/smtpd/Makefile | 4 +-- usr.sbin/smtpd/util.c | 60 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 usr.sbin/smtpd/util.c (limited to 'usr.sbin/smtpd') 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 + * + * 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 +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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; +} -- cgit v1.2.3