From 2c3681f633cd86024e0a4031a4efcea54570fb53 Mon Sep 17 00:00:00 2001 From: cztomczak Date: Wed, 15 Jan 2020 14:32:49 +0100 Subject: [PATCH] Fix crash when setting a cookie with invalid domain (#459). --- src/cookie.pyx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/cookie.pyx b/src/cookie.pyx index ce078c10..6d90144b 100644 --- a/src/cookie.pyx +++ b/src/cookie.pyx @@ -119,6 +119,19 @@ cdef class Cookie: return CefToPyString(cefString) cpdef py_void SetDomain(self, py_string domain): + pattern = re.compile(r"^(?:[a-z0-9](?:[a-z0-9-_]{0,61}[a-z0-9])?\.)" + r"+[a-z0-9][a-z0-9-_]{0,61}[a-z]$") + if PY_MAJOR_VERSION == 2: + assert isinstance(domain, bytes), "domain type is not bytes" + domain = domain.decode(g_applicationSettings["string_encoding"], + errors=BYTES_DECODE_ERRORS) + try: + if not pattern.match(domain.encode("idna").decode("ascii")): + raise Exception("Cookie.SetDomain() failed, invalid domain: {0}" + .format(domain)) + except UnicodeError: + raise Exception("Cookie.SetDomain() failed, invalid domain: {0}" + .format(domain)) cdef CefString cefString cefString.Attach(&self.cefCookie.domain, False) PyToCefString(domain, cefString)