Skip to content

Fix sscanf return value checks in cgroups#28

Open
odaysec wants to merge 1 commit into
EpicGamesExt:mainfrom
odaysec:patch-1
Open

Fix sscanf return value checks in cgroups#28
odaysec wants to merge 1 commit into
EpicGamesExt:mainfrom
odaysec:patch-1

Conversation

@odaysec
Copy link
Copy Markdown

@odaysec odaysec commented Jan 8, 2026

Ensure sscanf checks return value for Buffers, Cached, and MemAvailable. scanf‑like functions should have their return values compared against the exact number of expected assignments (here, 1), rather than simply tested for non‑zero. This ensures that partial matches, mismatches, or any other non‑successful cases are properly ignored.

In this file, the first four sscanf calls already use == 1. The last three ("Buffers", "Cached", "MemAvailable") are used as if (sscanf(...)), which only checks for non‑zero. To align with the recommended pattern without changing functionality, update those three conditions to explicitly check == 1. Concretely, in libmemory-patches/cgroups.c around lines 639–643, change:

  • else if (sscanf(line, "Buffers: %llu", &value))else if (sscanf(line, "Buffers: %llu", &value) == 1)
  • else if (sscanf(line, "Cached: %llu", &value))else if (sscanf(line, "Cached: %llu", &value) == 1)
  • else if (sscanf(line, "MemAvailable: %llu", &value))else if (sscanf(line, "MemAvailable: %llu", &value) == 1)

References

SEI CERT C++ Coding Standard: ERR62-CPP. Detect errors when converting a string to a number
SEI CERT C Coding Standard: ERR33-C. Detect and handle standard library errors
cppreference.com: scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s.

Ensure sscanf checks return value for Buffers, Cached, and MemAvailable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant