Skip to content

Commit 20bdff1

Browse files
authored
Merge pull request #2014 from anarkiwi/master
Handle invalid UTF-8 in ofdesc messages.
2 parents 8c9309b + 26f6caf commit 20bdff1

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

faucet/valve.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -367,13 +367,16 @@ def _add_ports_and_vlans(self, discovered_ports):
367367

368368
def ofdescstats_handler(self, body):
369369
"""Handle OF DP description."""
370+
def _decode(msg_str):
371+
return msg_str.decode('utf-8', errors='replace')
372+
370373
self.metrics.of_dp_desc_stats.labels( # pylint: disable=no-member
371374
**dict(self.base_prom_labels,
372-
mfr_desc=body.mfr_desc.decode(),
373-
hw_desc=body.hw_desc.decode(),
374-
sw_desc=body.sw_desc.decode(),
375-
serial_num=body.serial_num.decode(),
376-
dp_desc=body.dp_desc.decode())).set(self.dp.dp_id)
375+
mfr_desc=_decode(body.mfr_desc),
376+
hw_desc=_decode(body.hw_desc),
377+
sw_desc=_decode(body.sw_desc),
378+
serial_num=_decode(body.serial_num),
379+
dp_desc=_decode(body.dp_desc))).set(self.dp.dp_id)
377380

378381
def _set_port_status(self, port_no, port_status):
379382
"""Set port operational status."""

tests/test_valve.py

+7
Original file line numberDiff line numberDiff line change
@@ -1245,6 +1245,13 @@ def test_ofdescstats_handler(self):
12451245
serial_num=u'99'.encode(),
12461246
dp_desc=u'test_dp_desc'.encode())
12471247
self.valve.ofdescstats_handler(body)
1248+
invalid_body = parser.OFPDescStats(
1249+
mfr_desc=b'\x80',
1250+
hw_desc=b'test_hw_desc',
1251+
sw_desc=b'test_sw_desc',
1252+
serial_num=b'99',
1253+
dp_desc=b'test_dp_desc')
1254+
self.valve.ofdescstats_handler(invalid_body)
12481255

12491256

12501257
class ValveTestCase(ValveTestBases.ValveTestBig):

0 commit comments

Comments
 (0)