fix: Out of bounds strlen read
This commit is contained in:
parent
43ab72dcb8
commit
29e970fd81
@ -84,6 +84,13 @@ namespace hex {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constexpr inline size_t strnlen(const char *s, size_t n) {
|
||||||
|
size_t i = 0;
|
||||||
|
while (i < n && s[i] != '\x00') i++;
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
template<class... Ts>
|
template<class... Ts>
|
||||||
struct overloaded : Ts... { using Ts::operator()...; };
|
struct overloaded : Ts... { using Ts::operator()...; };
|
||||||
template<class... Ts>
|
template<class... Ts>
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#include <hex/helpers/file.hpp>
|
#include <hex/helpers/file.hpp>
|
||||||
|
|
||||||
|
#include <hex/helpers/utils.hpp>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
namespace hex::fs {
|
namespace hex::fs {
|
||||||
|
|
||||||
@ -90,7 +91,7 @@ namespace hex::fs {
|
|||||||
return "";
|
return "";
|
||||||
|
|
||||||
auto cString = reinterpret_cast<const char *>(bytes.data());
|
auto cString = reinterpret_cast<const char *>(bytes.data());
|
||||||
return { cString, std::strnlen(cString, bytes.size()) };
|
return { cString, hex::strnlen(cString, bytes.size()) };
|
||||||
}
|
}
|
||||||
|
|
||||||
std::u8string File::readU8String(size_t numBytes) {
|
std::u8string File::readU8String(size_t numBytes) {
|
||||||
@ -104,7 +105,7 @@ namespace hex::fs {
|
|||||||
return u8"";
|
return u8"";
|
||||||
|
|
||||||
auto cString = reinterpret_cast<const char8_t *>(bytes.data());
|
auto cString = reinterpret_cast<const char8_t *>(bytes.data());
|
||||||
return { cString, std::min(bytes.size(), std::strlen(reinterpret_cast<const char*>(bytes.data()))) };
|
return { cString, hex::strnlen(reinterpret_cast<const char*>(bytes.data()), bytes.size())) };
|
||||||
}
|
}
|
||||||
|
|
||||||
void File::write(const u8 *buffer, size_t size) {
|
void File::write(const u8 *buffer, size_t size) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user