changeset 49317:709e5f7eec1f

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
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 13 Jun 2022 11:06:33 -0400
parents ce50d95cfa57
children 6b39c7265935
files mercurial/windows.py
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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