void mpack_expect_cstr(mpack_reader_t* reader, char* buf, size_t bufsize) { size_t length = mpack_expect_cstr_unchecked(reader, buf, bufsize); // check for null bytes if (!mpack_str_check_no_null(buf, length)) { buf[0] = 0; mpack_reader_flag_error(reader, mpack_error_type); } }
void mpack_read_cstr(mpack_reader_t* reader, char* buf, size_t buffer_size, size_t byte_count) { mpack_read_cstr_unchecked(reader, buf, buffer_size, byte_count); // check for null bytes if (mpack_reader_error(reader) == mpack_ok && !mpack_str_check_no_null(buf, byte_count)) { buf[0] = 0; mpack_reader_flag_error(reader, mpack_error_type); } }
char* mpack_expect_cstr_alloc(mpack_reader_t* reader, size_t maxsize) { size_t length; char* str = mpack_expect_cstr_alloc_unchecked(reader, maxsize, &length); if (str && !mpack_str_check_no_null(str, length)) { MPACK_FREE(str); mpack_reader_flag_error(reader, mpack_error_type); return NULL; } return str; }