summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usr.bin/cvs/xmalloc.c18
-rw-r--r--usr.bin/cvs/xmalloc.h8
2 files changed, 23 insertions, 3 deletions
diff --git a/usr.bin/cvs/xmalloc.c b/usr.bin/cvs/xmalloc.c
index 1baf4a1ea2d..9883da91ef9 100644
--- a/usr.bin/cvs/xmalloc.c
+++ b/usr.bin/cvs/xmalloc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xmalloc.c,v 1.6 2006/03/28 02:13:44 ray Exp $ */
+/* $OpenBSD: xmalloc.c,v 1.7 2007/01/29 16:22:29 xsa Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -102,3 +102,19 @@ xasprintf(char **ret, const char *fmt, ...)
return (i);
}
+
+int
+xsnprintf(char *str, size_t size, const char *fmt, ...)
+{
+ va_list ap;
+ int i;
+
+ va_start(ap, fmt);
+ i = vsnprintf(str, size, fmt, ap);
+ va_end(ap);
+
+ if (i == -1 || i >= (int)size)
+ fatal("xsnprintf: overflow");
+
+ return (i);
+}
diff --git a/usr.bin/cvs/xmalloc.h b/usr.bin/cvs/xmalloc.h
index 736666950d2..54b39dce9bd 100644
--- a/usr.bin/cvs/xmalloc.h
+++ b/usr.bin/cvs/xmalloc.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: xmalloc.h,v 1.2 2006/03/28 02:13:44 ray Exp $ */
+/* $OpenBSD: xmalloc.h,v 1.3 2007/01/29 16:22:29 xsa Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -27,5 +27,9 @@ char *xstrdup(const char *);
int xasprintf(char **, const char *, ...)
__attribute__((__format__ (printf, 2, 3)))
__attribute__((__nonnull__ (2)));
+int xsnprintf(char *, size_t, const char *, ...)
+ __attribute__((__format__ (printf, 3, 4)))
+ __attribute__((__nonnull__ (3)))
+ __attribute__((__bounded__ (__string__,1,2)));
-#endif /* XMALLOC_H */
+#endif /* XMALLOC_H */