-
Notifications
You must be signed in to change notification settings - Fork 53
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
grep: avoid shell code evaluation #749
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
mknos
commented
Sep 30, 2024
- When running grep -g or -u, the default code uses Term::Cap but this fails over to executing external tput command
- tput would be available on Linux/BSD but is not a consideration for Windows
- Feed the TERM environment variable to tput command in single quotes to prevent shell commands from being initiated though TERM
- To verify this I had to temporarily bypass the Term::Cap code on my Linux system
- No other instances of backticks, system() or exec() calls within grep
* When running grep -g or -u, the default code uses Term::Cap but this fails over to executing external tput command * tput would be available on Linux/BSD but is not a consideration for Windows * Feed the TERM environment variable to tput command in single quotes to prevent shell commands from being initiated though TERM * To verify this I had to temporarily bypass the Term::Cap code on my Linux system * No other instances of backticks, system() or exec() calls within grep %TERM='linux;halt -p;' perl grep -g include a.c # with patch applied tput fails but system doesn't halt tput: unknown terminal "linux;halt -p;" tput: unknown terminal "linux;halt -p;" #include <stdio.h> #include <stdlib.h>
Pull Request Test Coverage Report for Build 11125842795Details
💛 - Coveralls |
briandfoy
requested changes
Sep 30, 2024
* Previous commit was half baked because invalid user input could still creep into shell * Switch backticks over to system LIST, which does not execute tput via a shell * Code for redirecting and restoring STDOUT was lifted out of bin/awk
briandfoy
approved these changes
Oct 5, 2024
changes: be more careful with handling the TERM env var |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Program: grep
The grep program
Status: released
there is a new release with this fix
Type: bug
an existing feature does not work
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.