NAME
BUF_MEM_new
,
BUF_MEM_free
, BUF_MEM_grow
,
BUF_MEM_grow_clean
,
BUF_reverse
, BUF_strdup
— simple character arrays
structure
SYNOPSIS
#include
<openssl/buffer.h>
BUF_MEM *
BUF_MEM_new
(void);
void
BUF_MEM_free
(BUF_MEM *a);
int
BUF_MEM_grow
(BUF_MEM *str,
size_t len);
int
BUF_MEM_grow_clean
(BUF_MEM *str,
size_t len);
void
BUF_reverse
(unsigned char *out,
const unsigned char *in, size_t
len);
char *
BUF_strdup
(const char *str);
DESCRIPTION
The buffer library handles simple character arrays. Buffers are used for various purposes in the library, most notably memory BIOs.
The library uses the BUF_MEM structure defined in buffer.h:
typedef struct buf_mem_st { size_t length; /* current number of bytes */ char *data; size_t max; /* size of buffer */ } BUF_MEM;
length is the current size of the buffer in bytes; max is the amount of memory allocated to the buffer. There are three functions which handle these and one miscellaneous function.
BUF_MEM_new
()
allocates a new buffer of zero size.
BUF_MEM_free
()
frees up an already existing buffer. The data is zeroed before freeing up in
case the buffer contains sensitive data. If a is a
NULL
pointer, no action occurs.
BUF_MEM_grow
()
changes the size of an already existing buffer to len.
Any data already in the buffer is preserved if it increases in size.
BUF_MEM_grow_clean
()
is similar to BUF_MEM_grow
(), but it sets any freed
or additionally allocated memory to zero.
BUF_reverse
()
reverses len bytes at in into
out. If in is
NULL
, out is reversed in
place.
BUF_strdup
()
copies a NUL terminated string into a block of allocated memory and returns
a pointer to the allocated block. Unlike the system
strdup(3) function, BUF_strdup
() will accept
a NULL
argument and will return
NULL
in that case. Its use in new programs is
discouraged.
The memory allocated from
BUF_strdup
()
should be freed up using the
free(3) function.
RETURN VALUES
BUF_MEM_new
() returns the buffer or
NULL
on error.
BUF_MEM_grow
() and
BUF_MEM_grow_clean
() return zero on error or the new
size (i.e. len).
SEE ALSO
HISTORY
BUF_MEM_new
(),
BUF_MEM_free
(), and
BUF_MEM_grow
() first appeared in SSLeay 0.6.0.
BUF_strdup
() first appeared in SSLeay 0.8.0. All
these functions have been available since OpenBSD
2.4.
BUF_MEM_grow_clean
() first appeared in
OpenSSL 0.9.7 and has been available since OpenBSD
3.2.
BUF_reverse
() first appeared in OpenSSL
1.0.0 and has been available since OpenBSD 4.9.