This commit is contained in:
Ram-Z 2026-01-07 16:40:00 -08:00 committed by GitHub
commit 491d6edfa7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 15 deletions

View File

@ -7,6 +7,7 @@
import re
import sys
import html
import io as _io
import os.path
import collections
import functools
@ -813,7 +814,8 @@ class AbstractDownloadItem(QObject):
if filename is None: # pragma: no cover
log.downloads.error("No filename to open the download!")
return
self.pdfjs_requested.emit(os.path.basename(filename),
dirname = os.path.basename(os.path.dirname(filename))
self.pdfjs_requested.emit(os.path.join(dirname, os.path.basename(filename)),
self.url())
def cancel_for_origin(self) -> bool:
@ -1373,8 +1375,8 @@ class TempDownloadManager:
# Make sure that the filename is not too long
suggested_name = utils.elide_filename(suggested_name, 50)
# pylint: disable=consider-using-with
fobj = tempfile.NamedTemporaryFile(dir=tmpdir.name, delete=False,
suffix='_' + suggested_name)
tmpfiledir = tempfile.mkdtemp(dir=tmpdir.name)
fobj = _io.open(os.path.join(tmpfiledir, suggested_name), 'w+b')
self.files.append(fobj)
return fobj

View File

@ -517,8 +517,6 @@ def qute_pdfjs(url: QUrl) -> _HandlerRet:
filename = QUrlQuery(url).queryItemValue('filename')
if not filename:
raise UrlInvalidError("Missing filename")
if '/' in filename or os.sep in filename:
raise RequestDeniedError("Path separator in filename.")
path = _pdf_path(filename)
with open(path, 'rb') as f:

View File

@ -9,7 +9,7 @@ import time
import logging
import py.path
from qutebrowser.qt.core import QUrl, QUrlQuery
from qutebrowser.qt.core import QUrl
import pytest
from qutebrowser.browser import qutescheme, pdfjs, downloads
@ -298,15 +298,6 @@ class TestPDFJSHandler:
with pytest.raises(qutescheme.UrlInvalidError):
qutescheme.data_for_url(QUrl('qute://pdfjs/file'))
@pytest.mark.parametrize('sep', ['/', os.sep])
def test_file_pathsep(self, sep):
url = QUrl('qute://pdfjs/file')
query = QUrlQuery()
query.addQueryItem('filename', 'foo{}bar'.format(sep))
url.setQuery(query)
with pytest.raises(qutescheme.RequestDeniedError):
qutescheme.data_for_url(url)
class TestQuteConfigdiff: