@@ -341,7 +341,7 @@ def test_setvalueex_value_range(self):
341341 def test_queryvalueex_return_value (self ):
342342 # Test for Issue #16759, return unsigned int from QueryValueEx.
343343 # Reg2Py, which gets called by QueryValueEx, was returning a value
344- # generated by PyLong_FromLong. The implmentation now uses
344+ # generated by PyLong_FromLong. The implementation now uses
345345 # PyLong_FromUnsignedLong to match DWORD's size.
346346 try :
347347 with CreateKey (HKEY_CURRENT_USER , test_key_name ) as ck :
@@ -354,6 +354,19 @@ def test_queryvalueex_return_value(self):
354354 finally :
355355 DeleteKey (HKEY_CURRENT_USER , test_key_name )
356356
357+ def test_setvalueex_crash_with_none_arg (self ):
358+ # Test for Issue #21151, segfault when None is passed to SetValueEx
359+ try :
360+ with CreateKey (HKEY_CURRENT_USER , test_key_name ) as ck :
361+ self .assertNotEqual (ck .handle , 0 )
362+ test_val = None
363+ SetValueEx (ck , "test_name" , 0 , REG_BINARY , test_val )
364+ ret_val , ret_type = QueryValueEx (ck , "test_name" )
365+ self .assertEqual (ret_type , REG_BINARY )
366+ self .assertEqual (ret_val , test_val )
367+ finally :
368+ DeleteKey (HKEY_CURRENT_USER , test_key_name )
369+
357370
358371
359372@unittest .skipUnless (REMOTE_NAME , "Skipping remote registry tests" )
0 commit comments