bpo-32329: Fix sys.flags.hash_randomization (#4875)

sys.flags.hash_randomization is now properly set to 0 when hash
randomization is turned off by PYTHONHASHSEED=0.
This commit is contained in:
Victor Stinner 2017-12-15 01:39:48 +01:00 committed by GitHub
parent d1cb1067a8
commit 22097aaa77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 7 deletions

View file

@ -330,10 +330,6 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
/* The variable is only tested for existence here; _PyRandom_Init will
check its value further. */
if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
Py_HashRandomizationFlag = add_flag(Py_HashRandomizationFlag, p);
#ifdef MS_WINDOWS
if ((p = Py_GETENV("PYTHONLEGACYWINDOWSFSENCODING")) && *p != '\0')
Py_LegacyWindowsFSEncodingFlag = add_flag(Py_LegacyWindowsFSEncodingFlag, p);

View file

@ -565,9 +565,11 @@ _PyRandom_Init(void)
if (seed == 0) {
/* disable the randomized hash */
memset(secret, 0, secret_size);
Py_HashRandomizationFlag = 0;
}
else {
lcg_urandom(seed, secret, secret_size);
Py_HashRandomizationFlag = 1;
}
}
else {
@ -582,6 +584,7 @@ _PyRandom_Init(void)
if (res < 0) {
Py_FatalError("failed to get random numbers to initialize Python");
}
Py_HashRandomizationFlag = 1;
}
}