Scan imported themes for svg scripts

merge-requests/30/head
Bob Mottram 2021-09-13 19:50:02 +01:00
parent f8957185cd
commit b56d543283
3 changed files with 8 additions and 4 deletions

View File

@ -16481,7 +16481,7 @@ def runDaemon(defaultReplyIntervalHours: int,
return False return False
# scan the theme directory for any svg files containing scripts # scan the theme directory for any svg files containing scripts
scanThemesForScripts(baseDir) assert not scanThemesForScripts(baseDir)
# initialize authorized fetch key # initialize authorized fetch key
httpd.signingPrivateKeyPem = None httpd.signingPrivateKeyPem = None

View File

@ -3443,7 +3443,7 @@ def _testDangerousSVG() -> None:
assert dangerousSVG(svgContent, False) assert dangerousSVG(svgContent, False)
baseDir = os.getcwd() baseDir = os.getcwd()
scanThemesForScripts(baseDir) assert not scanThemesForScripts(baseDir)
def _testDangerousMarkup(): def _testDangerousMarkup():

View File

@ -71,6 +71,9 @@ def importTheme(baseDir: str, filename: str) -> bool:
copytree(tempThemeDir, themeDir) copytree(tempThemeDir, themeDir)
if os.path.isdir(tempThemeDir): if os.path.isdir(tempThemeDir):
rmtree(tempThemeDir) rmtree(tempThemeDir)
if scanThemesForScripts(themeDir):
rmtree(themeDir)
return False
return os.path.isfile(themeDir + '/theme.json') return os.path.isfile(themeDir + '/theme.json')
@ -829,7 +832,7 @@ def updateDefaultThemesList(baseDir: str) -> None:
defaultThemesFile.write(name + '\n') defaultThemesFile.write(name + '\n')
def scanThemesForScripts(baseDir: str) -> None: def scanThemesForScripts(baseDir: str) -> bool:
"""Scans the theme directory for any svg files containing scripts """Scans the theme directory for any svg files containing scripts
""" """
for subdir, dirs, files in os.walk(baseDir + '/theme'): for subdir, dirs, files in os.walk(baseDir + '/theme'):
@ -843,5 +846,6 @@ def scanThemesForScripts(baseDir: str) -> None:
svgDangerous = dangerousSVG(content, False) svgDangerous = dangerousSVG(content, False)
if svgDangerous: if svgDangerous:
print('svg file contains script: ' + svgFilename) print('svg file contains script: ' + svgFilename)
assert not svgDangerous return True
# deliberately no break - should resursively scan # deliberately no break - should resursively scan
return False