summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/bio/b_print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/bio/b_print.c')
-rw-r--r--src/lib/libcrypto/bio/b_print.c109
1 files changed, 0 insertions, 109 deletions
diff --git a/src/lib/libcrypto/bio/b_print.c b/src/lib/libcrypto/bio/b_print.c
deleted file mode 100644
index 09747767dd..0000000000
--- a/src/lib/libcrypto/bio/b_print.c
+++ /dev/null
@@ -1,109 +0,0 @@
1/* $OpenBSD: b_print.c,v 1.25 2014/06/12 15:49:28 deraadt Exp $ */
2
3/* Theo de Raadt places this file in the public domain. */
4
5#include <openssl/bio.h>
6
7int
8BIO_printf(BIO *bio, const char *format, ...)
9{
10 va_list args;
11 int ret;
12
13 va_start(args, format);
14 ret = BIO_vprintf(bio, format, args);
15 va_end(args);
16 return (ret);
17}
18
19#ifdef HAVE_FUNOPEN
20static int
21_BIO_write(void *cookie, const char *buf, int nbytes)
22{
23 return BIO_write(cookie, buf, nbytes);
24}
25
26int
27BIO_vprintf(BIO *bio, const char *format, va_list args)
28{
29 int ret;
30 FILE *fp;
31
32 fp = funopen(bio, NULL, &_BIO_write, NULL, NULL);
33 if (fp == NULL) {
34 ret = -1;
35 goto fail;
36 }
37 ret = vfprintf(fp, format, args);
38 fclose(fp);
39fail:
40 return (ret);
41}
42
43#else /* !HAVE_FUNOPEN */
44
45int
46BIO_vprintf(BIO *bio, const char *format, va_list args)
47{
48 int ret;
49 char *buf = NULL;
50
51 ret = vasprintf(&buf, format, args);
52 if (buf == NULL) {
53 ret = -1;
54 goto fail;
55 }
56 BIO_write(bio, buf, ret);
57 free(buf);
58fail:
59 return (ret);
60}
61
62#endif /* HAVE_FUNOPEN */
63
64/*
65 * BIO_snprintf and BIO_vsnprintf return -1 for overflow,
66 * due to the history of this API. Justification:
67 *
68 * Traditional snprintf surfaced in 4.4BSD, and returned
69 * "number of bytes wanted". Solaris and Windows opted to
70 * return -1. A draft standard was written which returned -1.
71 * Due to the large volume of code already using the first
72 * semantics, the draft was repaired before standardization to
73 * specify "number of bytes wanted" plus "-1 for character conversion
74 * style errors". Solaris adapted to this rule, but Windows stuck
75 * with -1.
76 *
77 * Original OpenSSL comment which is full of lies:
78 *
79 * "In case of truncation, return -1 like traditional snprintf.
80 * (Current drafts for ISO/IEC 9899 say snprintf should return
81 * the number of characters that would have been written,
82 * had the buffer been large enough.)"
83 */
84int
85BIO_snprintf(char *buf, size_t n, const char *format, ...)
86{
87 va_list args;
88 int ret;
89
90 va_start(args, format);
91 ret = vsnprintf(buf, n, format, args);
92 va_end(args);
93
94 if (ret >= n || ret == -1)
95 return (-1);
96 return (ret);
97}
98
99int
100BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
101{
102 int ret;
103
104 ret = vsnprintf(buf, n, format, args);
105
106 if (ret >= n || ret == -1)
107 return (-1);
108 return (ret);
109}