We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 13a6730 commit c483e7eCopy full SHA for c483e7e
app.py
@@ -346,7 +346,12 @@ def handle_generate_demo():
346
@app.route('/demos/<demo_id>/<path:filename>')
347
def serve_demo_file(demo_id, filename):
348
demo_dir = os.path.join(app.config['DEMOS_DIR'], demo_id)
349
- return send_from_directory(demo_dir, filename)
+ # Validate demo_dir is inside DEMOS_DIR
350
+ normalized_demo_dir = os.path.normpath(os.path.abspath(demo_dir))
351
+ demos_base = os.path.abspath(app.config['DEMOS_DIR'])
352
+ if not normalized_demo_dir.startswith(demos_base + os.sep):
353
+ return "Invalid demo ID", 400
354
+ return send_from_directory(normalized_demo_dir, filename)
355
356
@app.route('/api/download_demo/<demo_id>')
357
def download_demo_zip(demo_id):
0 commit comments