mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-05-14 09:33:09 +00:00
Python 3: fix bytes vs strings in viruscheck plugin
Socket communication deals with bytes. There are probably remaining issues with the viruscheck plugin on Python 3, we just can't see them because the code is not fully covered with tests.
This commit is contained in:
parent
65f861901c
commit
f9766a2049
2 changed files with 24 additions and 22 deletions
|
|
@ -87,11 +87,11 @@ class ClamdScanner (object):
|
|||
"""Return a connected socket for sending scan data to it."""
|
||||
port = None
|
||||
try:
|
||||
self.sock.sendall("STREAM")
|
||||
self.sock.sendall(b"STREAM")
|
||||
port = None
|
||||
for dummy in range(60):
|
||||
data = self.sock.recv(self.sock_rcvbuf)
|
||||
i = data.find("PORT")
|
||||
i = data.find(b"PORT")
|
||||
if i != -1:
|
||||
port = int(data[i+5:])
|
||||
break
|
||||
|
|
@ -118,10 +118,10 @@ class ClamdScanner (object):
|
|||
self.wsock.close()
|
||||
data = self.sock.recv(self.sock_rcvbuf)
|
||||
while data:
|
||||
if "FOUND\n" in data:
|
||||
self.infected.append(data)
|
||||
if "ERROR\n" in data:
|
||||
self.errors.append(data)
|
||||
if b"FOUND\n" in data:
|
||||
self.infected.append(data.decode('UTF-8', 'replace'))
|
||||
if b"ERROR\n" in data:
|
||||
self.errors.append(data.decode('UTF-8', 'replace'))
|
||||
data = self.sock.recv(self.sock_rcvbuf)
|
||||
self.sock.close()
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class TestClamav (unittest.TestCase):
|
|||
|
||||
@need_clamav
|
||||
def testClean (self):
|
||||
data = ""
|
||||
data = b""
|
||||
infected, errors = clamav.scan(data, self.clamav_conf)
|
||||
self.assertFalse(infected)
|
||||
self.assertFalse(errors)
|
||||
|
|
@ -37,24 +37,26 @@ class TestClamav (unittest.TestCase):
|
|||
@need_clamav
|
||||
def testInfected (self):
|
||||
# from the clamav test direcotry: the clamav test file as html data
|
||||
data = '<a href="data:application/octet-stream;base64,' \
|
||||
'TVpQAAIAAAAEAA8A//8AALgAAAAhAAAAQAAaAAAAAAAAAAAAAAAAAAAAAAAAAA' \
|
||||
'AAAAAAAAAAAAAAAAAAAAEAALtxEEAAM8BQUIvzU1NQsClAMARmrHn5ujEAeA2t' \
|
||||
'UP9mcA4fvjEA6eX/tAnNIbRMzSFiDAoBAnB2FwIeTgwEL9rMEAAAAAAAAAAAAA' \
|
||||
'AAAAAAwBAAAIAQAAAAAAAAAAAAAAAAAADaEAAA9BAAAAAAAAAAAAAAAAAAAAAA' \
|
||||
'AAAAAAAAS0VSTkVMMzIuRExMAABFeGl0UHJvY2VzcwBVU0VSMzIuRExMAENMQU' \
|
||||
'1lc3NhZ2VCb3hBAOYQAAAAAAAAPz8/P1BFAABMAQEAYUNhQgAAAAAAAAAA4ACO' \
|
||||
'gQsBAhkABAAAAAYAAAAAAABAEAAAABAAAEAAAAAAAEAAABAAAAACAAABAAAAAA' \
|
||||
'AAAAMACgAAAAAAACAAAAAEAAAAAAAAAgAAAAAAEAAAIAAAAAAQAAAQAAAAAAAA' \
|
||||
'EAAAAAAAAAAAAAAAhBAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
|
||||
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
|
||||
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW0NMQU1BVl' \
|
||||
'0AEAAAABAAAAACAAABAAAAAAAAAAAAAAAAAAAAAAAAwA==">t</a>'
|
||||
data = (
|
||||
b'<a href="data:application/octet-stream;base64,'
|
||||
b'TVpQAAIAAAAEAA8A//8AALgAAAAhAAAAQAAaAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAEAALtxEEAAM8BQUIvzU1NQsClAMARmrHn5ujEAeA2t'
|
||||
b'UP9mcA4fvjEA6eX/tAnNIbRMzSFiDAoBAnB2FwIeTgwEL9rMEAAAAAAAAAAAAA'
|
||||
b'AAAAAAwBAAAIAQAAAAAAAAAAAAAAAAAADaEAAA9BAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAS0VSTkVMMzIuRExMAABFeGl0UHJvY2VzcwBVU0VSMzIuRExMAENMQU'
|
||||
b'1lc3NhZ2VCb3hBAOYQAAAAAAAAPz8/P1BFAABMAQEAYUNhQgAAAAAAAAAA4ACO'
|
||||
b'gQsBAhkABAAAAAYAAAAAAABAEAAAABAAAEAAAAAAAEAAABAAAAACAAABAAAAAA'
|
||||
b'AAAAMACgAAAAAAACAAAAAEAAAAAAAAAgAAAAAAEAAAIAAAAAAQAAAQAAAAAAAA'
|
||||
b'EAAAAAAAAAAAAAAAhBAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
|
||||
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW0NMQU1BVl'
|
||||
b'0AEAAAABAAAAACAAABAAAAAAAAAAAAAAAAAAAAAAAAwA==">t</a>'
|
||||
)
|
||||
infected, errors = clamav.scan(data, self.clamav_conf)
|
||||
# different versions of clamav report different responses, apparently
|
||||
acceptable_responses = (
|
||||
['stream: ClamAV-Test-File(2d1206194bd704385e37000be6113f73:781) FOUND\n'],
|
||||
['stream: Clamav.Test.File-6(aa15bcf478d165efd2065190eb473bcb:544) FOUND\n'],
|
||||
[u'stream: ClamAV-Test-File(2d1206194bd704385e37000be6113f73:781) FOUND\n'],
|
||||
[u'stream: Clamav.Test.File-6(aa15bcf478d165efd2065190eb473bcb:544) FOUND\n'],
|
||||
)
|
||||
self.assertIn(infected, acceptable_responses)
|
||||
self.assertFalse(errors)
|
||||
|
|
|
|||
Loading…
Reference in a new issue