windows: prevent bytes from being passed to registry APIs
authorMatt Harbison <matt_harbison@yahoo.com>
Mon, 13 Jun 2022 11:06:33 -0400
changeset 49317 709e5f7eec1f
parent 49316 ce50d95cfa57
child 49318 6b39c7265935
windows: prevent bytes from being passed to registry APIs There was a TortoiseHg bug report in this area[1], and from inspection, it looks like passing `b""` as `valname` would fail to convert to unicode. The underlying API allows both `""` and `NULL` to return the default value for the key. [1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5803
mercurial/windows.py
--- a/mercurial/windows.py	Thu Jun 02 16:56:39 2022 +0200
+++ b/mercurial/windows.py	Mon Jun 13 11:06:33 2022 -0400
@@ -680,7 +680,9 @@
             # pytype: disable=module-attr
             with winreg.OpenKey(s, encoding.strfromlocal(key)) as hkey:
                 # pytype: enable=module-attr
-                name = valname and encoding.strfromlocal(valname) or valname
+                name = None
+                if valname is not None:
+                    name = encoding.strfromlocal(valname)
                 # pytype: disable=module-attr
                 val = winreg.QueryValueEx(hkey, name)[0]
                 # pytype: enable=module-attr