Skip to content

Fix potential memory access issues #17

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions fpga/assembler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ static absl::Status AssembleFrames(FILE *input_stream, fpga::PartDatabase &db,
// Parse fasm.
size_t buf_size = 8192;
char *buffer = (char *)malloc(buf_size);
const absl::Cleanup buffer_freer = [buffer] { free(buffer); };
const absl::Cleanup buffer_freer = [&buffer] { free(buffer); };
ssize_t read_count;
// NOLINTNEXTLINE(misc-include-cleaner)
while ((read_count = getline(&buffer, &buf_size, input_stream)) > 0) {
Expand Down Expand Up @@ -316,11 +316,10 @@ static std::string StatusToErrorMessage(std::string_view message,
}

static absl::StatusOr<std::string> GetOptFlagOrFromEnv(
const absl::Flag<std::optional<std::string>> &flag,
std::string_view env_var) {
const absl::Flag<std::optional<std::string>> &flag, const char *env_var) {
const std::optional<std::string> flag_value = absl::GetFlag(flag);
if (!flag_value.has_value()) {
const char *value = getenv(std::string(env_var).c_str());
const char *value = getenv(env_var);
if (value == nullptr) {
return absl::InvalidArgumentError(
absl::StrFormat("flag \"%s\" not provided either via commandline or "
Expand Down
8 changes: 4 additions & 4 deletions fpga/database-parsers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ absl::StatusOr<T> Unmarshal(const rapidjson::Value &json) {

template <typename T>
inline absl::StatusOr<T> GetMember(const rapidjson::Value &json,
std::string_view name) {
const char *name) {
OK_OR_RETURN(IsObject(json));
auto itr = json.FindMember(name.data());
auto itr = json.FindMember(name);
if (itr == json.MemberEnd()) {
return absl::InvalidArgumentError(absl::StrFormat(
"json attribute \"%s\" not found in %s", name, ValueAsString(json)));
Expand All @@ -123,9 +123,9 @@ inline absl::StatusOr<T> GetMember(const rapidjson::Value &json,

template <typename T>
inline absl::StatusOr<std::optional<T>> OptGetMember(
const rapidjson::Value &json, std::string_view name) {
const rapidjson::Value &json, const char *name) {
OK_OR_RETURN(IsObject(json));
auto itr = json.FindMember(name.data());
auto itr = json.FindMember(name);
if (itr == json.MemberEnd()) {
return std::optional<T>{};
}
Expand Down
3 changes: 1 addition & 2 deletions fpga/memory-mapped-file.cc
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,8 @@ class MemoryMappedFile final : public MemoryBlock {

absl::StatusOr<std::unique_ptr<MemoryBlock>> MemoryMapFile(
std::string_view path) {
const int fd = open(path.data(), O_RDONLY);
const int fd = open(std::string(path).c_str(), O_RDONLY);
if (fd < 0) {
close(fd);
return absl::Status(absl::ErrnoToStatus(
errno, absl::StrFormat("could not open file: %s", path)));
}
Expand Down