summaryrefslogtreecommitdiff
path: root/source3/lib/slprintf.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1998-10-26 23:40:33 +0000
committerAndrew Tridgell <tridge@samba.org>1998-10-26 23:40:33 +0000
commit4586b8737a468fb33388740dee75fd37b3501bc1 (patch)
tree709120c23716fa168d66895544deaff4fc731502 /source3/lib/slprintf.c
parentba91cb69be52f1dea802e1ed0f8bda30b0a25cb4 (diff)
downloadsamba-4586b8737a468fb33388740dee75fd37b3501bc1.tar.gz
samba-4586b8737a468fb33388740dee75fd37b3501bc1.tar.bz2
samba-4586b8737a468fb33388740dee75fd37b3501bc1.zip
added a vsnprintf() implementation from cvslock. See the notes on the
license at the top of lib/snprintf.c I've always been slightly uneasy about our half-baked vslprintf() implementation and the risks on platforms that don't have vsnprintf() so when I saw this code in another GPLd package I wanted it for Samba. (This used to be commit e2cb50af45be6683d02ab48a6648816ee3d52ab1)
Diffstat (limited to 'source3/lib/slprintf.c')
-rw-r--r--source3/lib/slprintf.c45
1 files changed, 0 insertions, 45 deletions
diff --git a/source3/lib/slprintf.c b/source3/lib/slprintf.c
index acdcfee38f..a755bf1bc5 100644
--- a/source3/lib/slprintf.c
+++ b/source3/lib/slprintf.c
@@ -29,7 +29,6 @@ extern int DEBUGLEVEL;
pass 1023 for n */
int vslprintf(char *str, int n, char *format, va_list ap)
{
-#ifdef HAVE_VSNPRINTF
int ret = vsnprintf(str, n, format, ap);
if (ret > n || ret < 0) {
str[n] = 0;
@@ -37,50 +36,6 @@ int vslprintf(char *str, int n, char *format, va_list ap)
}
str[ret] = 0;
return ret;
-#else
- static char *buf;
- static int len=8000;
- int ret;
-
- /* this code is NOT a proper vsnprintf() implementation. It
- relies on the fact that all calls to slprintf() in Samba
- pass strings which have already been through pstrcpy() or
- fstrcpy() and never more than 2 strings are
- concatenated. This means the above buffer is absolutely
- ample and can never be overflowed.
-
- In the future we would like to replace this with a proper
- vsnprintf() implementation but right now we need a solution
- that is secure and portable. This is it. */
-
- if (!buf) {
- buf = malloc(len);
- if (!buf) {
- /* can't call debug or we would recurse */
- exit(1);
- }
- }
-
- vsprintf(buf, format, ap);
- ret = strlen(buf);
-
- if (ret < 0) {
- str[0] = 0;
- return -1;
- }
-
- if (ret < n) {
- n = ret;
- } else if (ret > n) {
- ret = -1;
- }
-
- buf[n] = 0;
-
- memcpy(str, buf, n+1);
-
- return ret;
-#endif
}
#ifdef HAVE_STDARG_H