diff options
author | Gilles Chehade <gilles@cvs.openbsd.org> | 2008-12-11 22:17:13 +0000 |
---|---|---|
committer | Gilles Chehade <gilles@cvs.openbsd.org> | 2008-12-11 22:17:13 +0000 |
commit | 680a3df73420a5f97bbad9d3cb7b50b305e52d2a (patch) | |
tree | aec86a6df7cefd214b0a4ab596ee4075958684ff /usr.sbin/smtpd | |
parent | b0cee09966e77396253a101c64ac15f76a5ddbc4 (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/Makefile | 4 | ||||
-rw-r--r-- | usr.sbin/smtpd/util.c | 60 |
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; +} |