-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8373475: Unintentional format string in logString of AccessInfo.cpp #28950
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
Conversation
|
👋 Welcome back dnguyen! A progress list of the required criteria for merging this PR into |
|
@DamonGuy This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 131 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Webrevs
|
src/jdk.accessibility/windows/native/toolscommon/AccessInfo.cpp
Outdated
Show resolved
Hide resolved
|
|
||
| fprintf(logfile, tmpbuf); | ||
| fprintf(logfile, "\n"); | ||
| fprintf(logfile, "%s\n", tmpbuf); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why can't we use fputs and avoid all the format string logic and ambiguity altogether?
Alternatively, use vfprintf directly instead of first formatting the arguments into a temporary buffer with vsnprintf and then sending the result to the output.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A similar pattern is used elsewhere in this file. And I don't want this fix to become a reworking of this code, because that isn't a goal here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After reading about fputs, I think this is best. Like you mentioned, no ambiguity since it does not use specifiers. Updated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A similar pattern is used elsewhere in this file. And I don't want this fix to become a reworking of this code, because that isn't a goal here.
Indeed, it is.
I agree it's better to keep the code consistent.
At the same time, I think it's worth submitting a bug to simplify usages like that, fputs works perfectly for strings that don't require formatting.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since Damon already made the change and its just one line I'm fine to keep it but not go looking for more.
|
|
||
| fprintf(logfile, tmpbuf); | ||
| fprintf(logfile, "\n"); | ||
| fprintf(logfile, "%s\n", tmpbuf); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A similar pattern is used elsewhere in this file. And I don't want this fix to become a reworking of this code, because that isn't a goal here.
prrace
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wait where's the \n gone ?
|
|
||
| fprintf(logfile, tmpbuf); | ||
| fprintf(logfile, "\n"); | ||
| fputs(tmpbuf, logfile); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since fputs doesn't add a line break automatically, you have to add it explicitly.
fputs(tmpbuf, logfile);
fputs("\n", logfile);There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for catching this too!
|
|
||
| fprintf(logfile, tmpbuf); | ||
| fprintf(logfile, "\n"); | ||
| fputs(tmpbuf, logfile); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unless I'm missing something you'd need to add a 2nd fputs for the newline or go back to fprintf like before the latest comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have gone back to fprintf for consistency as you mentioned above. Newline is included. Thanks!
|
/integrate |
|
Going to push as commit a59dbc5.
Your commit was automatically rebased without conflicts. |
This update is to fix the potential issue where tmpbuf can be read as a format argument for
fprintf. I have added a specifier here to avoid this issue since the string from tmpbuf is not guaranteed to not cause issues. This update should make this print more reliable and safe to use.Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28950/head:pull/28950$ git checkout pull/28950Update a local copy of the PR:
$ git checkout pull/28950$ git pull https://git.openjdk.org/jdk.git pull/28950/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28950View PR using the GUI difftool:
$ git pr show -t 28950Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28950.diff
Using Webrev
Link to Webrev Comment