diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2022-12-09 13:17:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-09 13:17:25 (GMT) |
commit | 580165d01c579c781c9ba0327f6ff7457201cea8 (patch) | |
tree | 01e7326a869a173f449d1cf585cb887c1d0131e0 /Lib/test/test_winreg.py | |
parent | 8ef604518745989a3991a37f58368d2ce3c27d84 (diff) | |
download | cpython-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.py | 18 |
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 |