OpenCoverage

b_print.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bio/b_print.c
Source codeSwitch to Preprocessed file
LineSourceCount
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);
executed 3108 times by 6 tests: return (ret);
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • ssltest
3108
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) {
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3108 times by 6 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • ssltest
0-3108
53 ret = -1;-
54 goto fail;
never executed: goto fail;
0
55 }-
56 BIO_write(bio, buf, ret);-
57 free(buf);-
58fail:
code before this statement executed 3108 times by 6 tests: fail:
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • ssltest
3108
59 return (ret);
executed 3108 times by 6 tests: return (ret);
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • ssltest
3108
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)
ret >= nDescription
TRUEnever evaluated
FALSEnever evaluated
ret == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
95 return (-1);
never executed: return (-1);
0
96 return (ret);
never executed: return (ret);
0
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)
ret >= nDescription
TRUEnever evaluated
FALSEnever evaluated
ret == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
107 return (-1);
never executed: return (-1);
0
108 return (ret);
never executed: return (ret);
0
109}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2