Skip to content
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

Reuse result from getenv #1116

Merged
merged 1 commit into from
Oct 4, 2024

Conversation

mabraham
Copy link
Contributor

@mabraham mabraham commented Oct 3, 2024

Description

In theory, calling getenv a second time could return NULL after previously returning non-NULL, which would be undefined behavior when passed to strcmp. Re-using the non-NULL value is slightly safer, and keeps clang's static analyzer happier.

Target release

I would like my code to appear in release XXXXX

Type of contribution
  • changes to code or doc authored by PLUMED developers, or additions of code in the core or within the default modules
  • changes to a module not authored by you
  • new module contribution or edit of a module authored by you
Copyright
  • I agree to transfer the copyright of the code I have written to the PLUMED developers or to the author of the code I am modifying.
  • the module I added or modified contains a COPYRIGHT file with the correct license information. Code should be released under an open source license. I also used the command cd src && ./header.sh mymodulename in order to make sure the headers of the module are correct.
Tests
  • I added a new regtest or modified an existing regtest to validate my changes.
  • I verified that all regtests are passed successfully on GitHub Actions.

In theory, calling getenv a second time could return NULL after
previously returning non-NULL, which would be undefined behavior when
passed to strcmp. Re-using the non-NULL value is slightly safer, and
keeps clang's static analyzer happier.
@mabraham
Copy link
Contributor Author

mabraham commented Oct 3, 2024

Found during GROMACS CI version upgrade. Upstreaming the change for future convenience.

@GiovanniBussi
Copy link
Member

I see, this would happen if:

  • getenv is called
  • context switch to another thread
  • the other thread changes the environment variable
  • context switch to the initial thread
  • getenv is called again

Unlikely, but I agree should be fixed, thanks!

@GiovanniBussi GiovanniBussi merged commit 18896fd into plumed:master Oct 4, 2024
19 of 22 checks passed
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.

2 participants