4 ms·
This doesn't really particularly safe to me (assuming that exec.Command allows spaces in arguments): cmd := exec.Command("grep", s, logName) Since you are s
by danieldk 13y ago
This doesn't really particularly safe to me (assuming that exec.Command allows spaces in arguments):
cmd := exec.Command("grep", s, logName)
Since you are searching for the expression in just one log file, why not use Go's excellent regexp package?
- irtefa 13y agoIt started off as a class assignment where it was required to execute "grep" on whatever shell we were running the program on. That's why, instead of using the regexp package, we went for the above (somewhat shitty) approach. But, that's something I am definitely looking into changing!
- enneff 13y agoYou might have to work pretty hard to write a grep that's as good as grep. It pulls a lot of swift moves in the name of speed.
- cmccabe 13y agoexec.Command doesn't run a shell; it just executes the command. So yes, it's perfectly safe to have spaces and other shell metacharacters in there. Whether or not it's efficient here is another question, of course.
- danieldk 13y agoSo yes, it's perfectly safe to have spaces and other shell metacharacters in there. You could (for instance) probe content of system files by passing -f/some/file And matching that to the log. If you have some control over the log, you could use this to read content from system files. Of course, it's all indirect, since the file is interpreted as containing regular expressions. But it's certainly not 'perfectly safe'.
- cmccabe 13y agoI could also read content from system files by using the advanced hacker tool "cat". I don't see what this has to do with exec.Command.
- deleted 13y ago[deleted]