Unverified Commit 35772f8b authored by Isis Lovecruft's avatar Isis Lovecruft
Browse files

Workaround for datetime exception in Stem for weird ed25519 certs.

There's few bridges whose ed25519 certificates contain the year 491869, which
the datetime module (called from Stem) believes "out of range".  So instead
we'll parse the descriptors one at a time and catch the errors as we go.

 * FIXES #26023: https://bugs.torproject.org/26023
parent 37e126f3
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -161,7 +161,19 @@ def parseServerDescriptorsFile(filename, validate=True):
    logging.info("Parsing server descriptors with Stem: %s" % filename)
    descriptorType = 'server-descriptor 1.0'
    document = parse_file(filename, descriptorType, validate=validate)
    routers = list(document)
    routers = list()

    # Work around https://bugs.torproject.org/26023 by parsing each descriptor
    # at a time and catching any errors not handled in stem:
    while True:
        try:
            routers.append(document.next())
        except StopIteration:
            break
        except Exception as error:
            logging.debug("Error while parsing a bridge server descriptor: %s"
                          % error)

    return routers

def __cmp_published__(x, y):