This string descriptor cannot be longer than 255 bytes anyway, since its length is defined by its first byte. Also, the libusb code warns "Some devices choke on size > 255". Since each language code is two byte long, only an even number of bytes makes sense, so request only 254 bytes.
…usb 0.4.x PyUSB 0.4 has a very flexible input buffer treatment. This change does not mimic it for all, but make legacy module more close to it.
Use the length as reported by the first byte of the descriptor. Otherwise (at least for some backend/kernel combinations) the buffer length provided by the user would be used instead, and NUL characters would be appended to the returned string. This also makes the legacy getString() function compatible with pyusb 0.4.