diff options
author | Shreyan Avigyan <shreyan.avigyan@gmail.com> | 2022-12-09 18:17:18 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-09 12:47:18 +0000 |
commit | a29a7b9b786d6b928c4bb4e6e683a3788e3ab1c1 (patch) | |
tree | d8af5c025584ef659d4dff7bdd485d7ea4a4bb9c /Lib/test | |
parent | fb713b21833a17cba8022af0fa4c486512157d4b (diff) | |
download | cpython-a29a7b9b786d6b928c4bb4e6e683a3788e3ab1c1.tar.gz cpython-a29a7b9b786d6b928c4bb4e6e683a3788e3ab1c1.zip |
bpo-43984: Allow winreg.SetValueEx to set -1 without treating it as an error (GH-25775)
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_winreg.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py index 8157c2da6ef..769ab67b0f5 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 |