Skip to content
Snippets Groups Projects
Commit 9d7645c1 authored by Stuart D. Gathman's avatar Stuart D. Gathman
Browse files

Binary file handling and extension scanning work in py3.

parent eaa6a43f
No related branches found
No related tags found
No related merge requests found
...@@ -107,8 +107,10 @@ import email ...@@ -107,8 +107,10 @@ import email
from email.message import Message from email.message import Message
try: try:
from email.generator import BytesGenerator from email.generator import BytesGenerator
from email import message_from_binary_file
except: except:
from email.generator import Generator as BytesGenerator from email.generator import Generator as BytesGenerator
from email import message_from_file as message_from_binary_file
from email.utils import quote from email.utils import quote
if not getattr(Message,'as_bytes',None): if not getattr(Message,'as_bytes',None):
...@@ -304,7 +306,7 @@ class MimeMessage(Message): ...@@ -304,7 +306,7 @@ class MimeMessage(Message):
return None return None
def message_from_file(fp): def message_from_file(fp):
msg = email.message_from_binary_file(fp,MimeMessage) msg = message_from_binary_file(fp,MimeMessage)
for part in msg.walk(): for part in msg.walk():
part.modified = False part.modified = False
assert not msg.ismodified() assert not msg.ismodified()
...@@ -315,7 +317,7 @@ ade,adp,asd,asx,asp,bas,bat,chm,cmd,com,cpl,crt,dll,exe,hlp,hta,inf,ins,isp,js, ...@@ -315,7 +317,7 @@ ade,adp,asd,asx,asp,bas,bat,chm,cmd,com,cpl,crt,dll,exe,hlp,hta,inf,ins,isp,js,
jse,lnk,mdb,mde,msc,msi,msp,mst,ocx,pcd,pif,reg,scr,sct,shs,url,vb,vbe,vbs,wsc, jse,lnk,mdb,mde,msc,msi,msp,mst,ocx,pcd,pif,reg,scr,sct,shs,url,vb,vbe,vbs,wsc,
wsf,wsh wsf,wsh
""".split()) """.split())
bad_extensions = map(lambda x:'.' + x,extlist.split(',')) bad_extensions = ['.' + x for x in extlist.split(',')]
def check_ext(name): def check_ext(name):
"Check a name for dangerous Winblows extensions." "Check a name for dangerous Winblows extensions."
...@@ -487,11 +489,14 @@ class HTMLScriptFilter(SGMLFilter): ...@@ -487,11 +489,14 @@ class HTMLScriptFilter(SGMLFilter):
self.modified = False self.modified = False
self.msg = "<!-- WARNING: embedded script removed -->" self.msg = "<!-- WARNING: embedded script removed -->"
def start_script(self,unused): def start_script(self,unused):
#print('beg script',unused)
self.ignoring += 1 self.ignoring += 1
self.modified = True self.modified = True
self.out.write(self.msg)
def end_script(self): def end_script(self):
#print('end script')
self.ignoring -= 1 self.ignoring -= 1
if not self.ignoring:
self.out.write(self.msg)
def handle_data(self,data): def handle_data(self,data):
if not self.ignoring: SGMLFilter.handle_data(self,data) if not self.ignoring: SGMLFilter.handle_data(self,data)
def handle_comment(self,comment): def handle_comment(self,comment):
...@@ -509,7 +514,7 @@ def check_html(msg,savname=None): ...@@ -509,7 +514,7 @@ def check_html(msg,savname=None):
out = StringIO() out = StringIO()
htmlfilter = HTMLScriptFilter(out) htmlfilter = HTMLScriptFilter(out)
try: try:
htmlfilter.write(msg.get_payload(decode=True)) htmlfilter.write(msg.get_payload(decode=True).decode())
htmlfilter.close() htmlfilter.close()
#except sgmllib.SGMLParseError: #except sgmllib.SGMLParseError:
except: except:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment