Comments (4)
Thanks. This concerns downstream conda-forge/python-graphviz and the anaconda Graphviz package introducing the .bat
wrappers (a vanilla Graphviz installation uses plain .exe
binaries).
Looks like the issue is already known downstream: conda-forge/python-graphviz-feedstock#2
It might be better to fix it there. As for the implementation, it might be better to append .bat
to the engine command on Windows in that package, or fall back to launch with .bat
as you proposed (the patch in the pull request uses shell=True
, which AFAICS may be a security risk).
from graphviz.
Thanks for pointing out the downstream issue, I wasn't sure where to best submit it. Regarding security risk of shell=True
, that should not be an issue as the arguments are validated against a whitelist here, effectively preventing the risk of a shell code-injection.
That said, executables on Windows almost always have an extension, and Popen on Windows says extensions are significant. As such, having this package enforce extension-less engine commands seem counter-intuitive (i.e. this will be an issue on Windows irregardless of whether Graphviz was installed by Conda or not).
from graphviz.
Update: I read the docs again, and Popen on Windows (CreateProcess) does imply .exe
if the extension is missing, so it might be acceptable to not include an extension for the engine.
from graphviz.
Yes, this machine here is actually running Windows, so I'm sure it works with vanilla Graphviz. :)
Right, the executables are whitelisted, but I imagine that a user-provided filename could be (ab)used for some kind of shell injection (but I am no security expert).
Added my proposed fix here (so this can be closed): conda-forge/python-graphviz-feedstock#6
from graphviz.
Related Issues (20)
- Graphs not displaying inline in jupyter when created in a function HOT 2
- Make graphviz work in Jupyterlite HOT 1
- multiple incoming edges HOT 2
- Adapt for sphinx-gallery: add `_repr_html_` HOT 4
- memory issue HOT 1
- Add type annotations
- Any example of samehead or sametail would help HOT 2
- NameError: name 'doctest_mark_exe' is not defined HOT 2
- graphiviz-0.20.1 failed tests/test_quoting.py with python 3.12 HOT 2
- Docs: typo 'raise_if_result_exits' in render() argument name HOT 1
- Black colored decision box alongside root node is visible on MAC M1 on installation of graphviz HOT 2
- [self-tests] `test_render_unknown_parameter_raises` fails HOT 5
- Edge labels overlap with edges HOT 3
- New version?🤔 HOT 8
- Fix call-signature related own `PendingDeprecationWarning` in tests HOT 6
- pytest 8.1.1: import file mismatch HOT 2
- Add support of `-Goverlap=scale` flag HOT 4
- Non-unique module names cause test failures with pytest HOT 2
- import error HOT 1
- Doesn't print the vertical bar if uses f-string HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphviz.