AtomLinter/linter-gcc

Relative paths are relative to Atom's $PWD, not the project root

Opened this issue · 0 comments

Suppose I invoke Atom from dmenu (making it start under /home/bruno), and it auto-reopens my last project, under /home/bruno/Git/project. Upon saving, linter-gcc should run gcc from /home/bruno/Git/project as said in the package description ("Paths are expanded relative to the project that contains the file being linted.").

However, gcc runs under /home/bruno, thus breaking all the relative include paths specified in .gcc-flags.json., among other things.

In order to reproduce/prove, edit the config file and replace /usr/bin/gcc with a path to some shell script that reports its own $PWD, such as one containing the command xmessage "at: $PWD --- args: $*" &, which will simply open a pop-up with its $PWD and parameters. Then, just launch atom from any folder, letting it reopen the last project, save a C source file, and wait for it.

The linter is therefore unusable unless I start Atom from the exact project folder every time (not convenient) or specify absolute paths everywhere (not portable). Besides, this is arguably a security flaw too, since broken relative paths can be made to lead to files the user does not intend on compiling... keep in mind the C preprocessor alone can do arbitrary computation.