2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH buffer 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 BUF_MEM_new, BUF_MEM_free, BUF_MEM_grow, BUF_strdup \- simple
192 character arrays structure
196 \& #include <openssl/buffer.h>
199 \& BUF_MEM *BUF_MEM_new(void);
202 \& void BUF_MEM_free(BUF_MEM *a);
205 \& int BUF_MEM_grow(BUF_MEM *str, int len);
208 \& char * BUF_strdup(const char *str);
211 The buffer library handles simple character arrays. Buffers are used for
212 various purposes in the library, most notably memory BIOs.
214 The library uses the BUF_MEM structure defined in buffer.h:
217 \& typedef struct buf_mem_st
219 \& int length; /* current number of bytes */
221 \& int max; /* size of buffer */
224 \fBlength\fR is the current size of the buffer in bytes, \fBmax\fR is the amount of
225 memory allocated to the buffer. There are three functions which handle these
226 and one \*(L"miscellaneous\*(R" function.
228 \fIBUF_MEM_new()\fR allocates a new buffer of zero size.
230 \fIBUF_MEM_free()\fR frees up an already existing buffer. The data is zeroed
231 before freeing up in case the buffer contains sensitive data.
233 \fIBUF_MEM_grow()\fR changes the size of an already existing buffer to
234 \fBlen\fR. Any data already in the buffer is preserved if it increases in
237 \fIBUF_strdup()\fR copies a null terminated string into a block of allocated
238 memory and returns a pointer to the allocated block.
239 Unlike the standard C library \fIstrdup()\fR this function uses \fIOPENSSL_malloc()\fR and so
240 should be used in preference to the standard library \fIstrdup()\fR because it can
241 be used for memory leak checking or replacing the \fImalloc()\fR function.
243 The memory allocated from \fIBUF_strdup()\fR should be freed up using the \fIOPENSSL_free()\fR
246 \fIBUF_MEM_new()\fR returns the buffer or NULL on error.
248 \fIBUF_MEM_free()\fR has no return value.
250 \fIBUF_MEM_grow()\fR returns zero on error or the new size (i.e. \fBlen\fR).
254 \fIBUF_MEM_new()\fR, \fIBUF_MEM_free()\fR and \fIBUF_MEM_grow()\fR are available in all
255 versions of SSLeay and OpenSSL. \fIBUF_strdup()\fR was added in SSLeay 0.8.
259 .IX Name "BUF_MEM_new, BUF_MEM_free, BUF_MEM_grow, BUF_strdup - simple
260 character arrays structure"
264 .IX Header "SYNOPSIS"
266 .IX Header "DESCRIPTION"
268 .IX Header "RETURN VALUES"
270 .IX Header "SEE ALSO"