summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_winreg.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-12-09 13:17:25 (GMT)
committerGitHub <noreply@github.com>2022-12-09 13:17:25 (GMT)
commit580165d01c579c781c9ba0327f6ff7457201cea8 (patch)
tree01e7326a869a173f449d1cf585cb887c1d0131e0 /Lib/test/test_winreg.py
parent8ef604518745989a3991a37f58368d2ce3c27d84 (diff)
downloadcpython-580165d01c579c781c9ba0327f6ff7457201cea8.zip
cpython-580165d01c579c781c9ba0327f6ff7457201cea8.tar.gz
cpython-580165d01c579c781c9ba0327f6ff7457201cea8.tar.bz2
bpo-43984: Allow winreg.SetValueEx to set -1 without treating it as an error (GH-25775)
(cherry picked from commit a29a7b9b786d6b928c4bb4e6e683a3788e3ab1c1) Co-authored-by: Shreyan Avigyan <shreyan.avigyan@gmail.com>
Diffstat (limited to 'Lib/test/test_winreg.py')
-rw-r--r--Lib/test/test_winreg.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index 8157c2d..769ab67 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -113,7 +113,6 @@ class BaseWinregTests(unittest.TestCase):
"does not close the actual key!")
except OSError:
pass
-
def _read_test_data(self, root_key, subkeystr="sub_key", OpenKey=OpenKey):
# Check we can get default value for this key.
val = QueryValue(root_key, test_key_name)
@@ -340,6 +339,23 @@ class LocalWinregTests(BaseWinregTests):
finally:
DeleteKey(HKEY_CURRENT_USER, test_key_name)
+ def test_setvalueex_negative_one_check(self):
+ # Test for Issue #43984, check -1 was not set by SetValueEx.
+ # Py2Reg, which gets called by SetValueEx, wasn't checking return
+ # value by PyLong_AsUnsignedLong, thus setting -1 as value in the registry.
+ # The implementation now checks PyLong_AsUnsignedLong return value to assure
+ # the value set was not -1.
+ try:
+ with CreateKey(HKEY_CURRENT_USER, test_key_name) as ck:
+ with self.assertRaises(OverflowError):
+ SetValueEx(ck, "test_name_dword", None, REG_DWORD, -1)
+ SetValueEx(ck, "test_name_qword", None, REG_QWORD, -1)
+ self.assertRaises(FileNotFoundError, QueryValueEx, ck, "test_name_dword")
+ self.assertRaises(FileNotFoundError, QueryValueEx, ck, "test_name_qword")
+
+ finally:
+ DeleteKey(HKEY_CURRENT_USER, test_key_name)
+
def test_queryvalueex_return_value(self):
# Test for Issue #16759, return unsigned int from QueryValueEx.
# Reg2Py, which gets called by QueryValueEx, was returning a value