# bson_new_from_buffer()

## Synopsis

    bson_t *
    bson_new_from_buffer (uint8_t **buf,
                          size_t *buf_len,
                          bson_realloc_func realloc_func,
                          void *realloc_func_ctx);

## Parameters

- `buf`: An out-pointer to a buffer containing a serialized BSON document, or to NULL.

- `buf_len`: An out-pointer to the length of the buffer in bytes.

- `realloc_func`: Optional bson_realloc_func for reallocating the buffer.

- `realloc_func_ctx`: Optional pointer that will be passed as `ctx` to `realloc_func`.

## Description

Creates a new bson_t using the data provided.

The `realloc_func`, if provided, is called to resize `buf` if the document is later expanded, for example by a call to one of the `bson_append` functions.

If `*buf` is initially NULL then it is allocated, using `realloc_func` or the default allocator, and initialized with an empty BSON document, and `*buf_len` is set to 5, the size of an empty document.

## Returns

A newly-allocated bson_t on success, or NULL.

See also

bson_concat()
bson_init()
bson_init_from_json()
bson_init_static()
bson_new()
bson_new_from_buffer()
bson_new_from_data()
bson_new_from_json()
bson_reinit()
bson_reserve_buffer()
bson_sized_new()