BUF_MEM_NEW(3)

πŸ“¦ version 4.4.0, in alpine 3.24, arch rolling

πŸ’– BUF_MEM_NEW(3) πŸ’–

okay so welcome to the BUF_MEM_NEW(3) page from the Library Functions Manual β€” yes, the manual name is folded right in here, bestie, because we are not doing boring header-line energy today. This is the buffer-memory page: simple character arrays, but make it libcrypto. ✨


🌸 NAME 🌸

BUF_MEM_new, BUF_MEM_free, BUF_MEM_grow, BUF_MEM_grow_clean β€” simple character arrays structure, and honestly that's the whole vibe.

✨ SYNOPSIS ✨

library β€œlibcrypto” #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);

πŸŽ€ DESCRIPTION πŸŽ€

The buffer library handles simple character arrays. Buffers are used for various purposes in the library, most notably memory BIOs. iykyk β€” memory BIOs are lowkey the main character here.

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 β€” that's the official count, periodt.

  • BUF_MEM_new() β€” allocates a new buffer of zero size. Main character move: it arrives empty and ready to grow.
  • 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. Security queen behavior, fr fr.
  • 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.

🫢 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 πŸ”₯

Go read these too, bestie β€” they're giving related lore. πŸ’…

πŸ¦‹ HISTORY πŸ¦‹

  • BUF_MEM_new(), BUF_MEM_free(), and BUF_MEM_grow() first appeared in SSLeay 0.6.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.

xoxo, your Debian bestie πŸ’– β€” this page is dated June 8, 2025, and it's the BUF_MEM_NEW(3) page. Slay. βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from