BUF_MEM_new(3)

BUF_MEM_NEW(3) Library Functions Manual BUF_MEM_NEW(3)

NAME

BUF_MEM_new, BUF_MEM_free, BUF_MEM_grow, BUF_MEM_grow_clean, BUF_reverse, BUF_strdupsimple 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

BIO_new(3), BIO_s_mem(3)

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.

June 6, 2019 Linux 6.12.85-6.12-alt1