if (l <= 0)
return nullptr;
- const char* str = reinterpret_cast<const char*>(&data_[reader_]);
- if (static_cast<int>(strlen(str) + 1) != l)
+ if (reader_ + l > data_.size())
+ return nullptr;
+ if (data_[reader_ + l - 1] != 0)
return nullptr;
+ const char* str = reinterpret_cast<const char*>(&data_[reader_]);
reader_ += l;
return str;
if (l <= 0)
return nullptr;
- const bundle_raw* str = reinterpret_cast<const bundle_raw*>(&data_[reader_]);
- if (static_cast<int>(strlen(reinterpret_cast<const char*>(str)) + 1) != l)
+ if (reader_ + l > data_.size())
+ return nullptr;
+ if (data_[reader_ + l - 1] != 0)
return nullptr;
+ const bundle_raw* str = reinterpret_cast<const bundle_raw*>(&data_[reader_]);
reader_ += l;
bundle* b = bundle_decode(str, l - 1);