tree 390e5e4027a65d579a16b51dd159197e593fcad8
parent 6c60bc18aa21f263ed1b3710957bcb6f33932775
author Vincent Palatin <vpalatin@chromium.org> 1466786262 -0700
committer chrome-bot <chrome-bot@chromium.org> 1466878795 -0700

servod: handle gracefully the lack of USB serial number

All the callers assume that usb_get_iserial() is returning a string but
it might return 'None' in case of error (e.g. no serial number on a
device). So update the function to return an empty string rather than
None to avoid dying in random places.
The typical failing case was when running servod with '--serialname'
parameter but no other USB filtering parameter, the daemon would iterate
over all connected USB devices and call usb_get_iserial() for each of
them. If one has no serial number, it would die like this when trying to
apply a string function on 'None':
Traceback (most recent call last):
  File "servod", line 9, in <module>
    load_entry_point('servo==0.0.1.post3721316', 'console_scripts', 'servod')()
  File "servo/servod.py", line 518, in main
    main_function()
  File "servo/servod.py", line 435, in main_function
    multiservo.parse_rc(logger, options.rcfile))
  File "servo/servod.py", line 328, in discover_servo
    all_servos.extend(usb_find(vid, pid, serialname))
  File "servo/servod.py", line 173, in usb_find
      (not serialname or usb_get_iserial(device).endswith(serialname)):
  AttributeError: 'NoneType' object has no attribute 'endswith'

Actually, for devices without a serial number string, iSerialNumber is 0.
So doing .getString() on 0 will likely return the string descriptor which
contains non-ascii bytes and will end up triggering exception in various
string conversion routines.
Skip trying to get the string in this case.

BUG=chrome-os-partner:54772
TEST=run servod with just the '--serialname' parameter
e.g. 'sudo servod --serial=00025' and see it starting up regardless
of the random USB devices connected to the workstation.

Change-Id: I0804dc06c64559f4772a31a90f9c32120c699294
Reviewed-on: https://chromium-review.googlesource.com/356060
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
