diff --git a/lib/libesp32/berry/src/be_byteslib.c b/lib/libesp32/berry/src/be_byteslib.c index 046505aef..82053443d 100644 --- a/lib/libesp32/berry/src/be_byteslib.c +++ b/lib/libesp32/berry/src/be_byteslib.c @@ -806,7 +806,10 @@ static int m_asstring(bvm *vm) { buf_impl attr = bytes_check_data(vm, 0); check_ptr(vm, &attr); - size_t safe_len = strnlen((const char*) attr.bufptr, attr.len); + /* equivalent to strnlen() */ + const char* str = (const char*) attr.bufptr; + const char* found = memchr(str, '\0', attr.len); + size_t safe_len = found ? (size_t)(found - str) : (size_t)attr.len; be_pushnstring(vm, (const char*) attr.bufptr, safe_len); be_return(vm); }