Resolve potential null pointer crash and two Time of Check conditions #11380
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Describe your PR, what does it fix/add?
Resolves a potential null pointer crash and two Time-of-Check to Time-of-Use conditions.
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
While Hyprland does some sanity checking when it starts, a future refactor could potentially allow XDG_RUNTIME_DIR to not be set in the CCompositor constructor. If that happened a null pointer exception would be thrown. I added a check to make sure this cannot happen.
A very minor change is that
m_hyprTempDataRoot
is now constructed withstd::filesystem
so that the platform will build the directory separators itself.Two possible TOCTOU conditions existed when created hyprTempDataRoot directory and when creating the instancePath directories. These are now patched up with ask-for-forgiveness.
Is it ready for merging, or does it need work?
I compiled these changes on an Arch system and Hyprland still runs fine.