diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-15 17:03:03 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2021-12-15 17:03:03 (GMT) |
| commit | 187de15e2bd4cc19b14e2a9b97ca1b12d847a2c9 (patch) | |
| tree | b2c889d1b7026d3804efb4161133fd0ea70968d6 | |
| parent | cacd6930cf7caa54e575401e527dae2156bc8424 (diff) | |
| download | tcl-187de15e2bd4cc19b14e2a9b97ca1b12d847a2c9.zip tcl-187de15e2bd4cc19b14e2a9b97ca1b12d847a2c9.tar.gz tcl-187de15e2bd4cc19b14e2a9b97ca1b12d847a2c9.tar.bz2 | |
Fix [90612089d8]: signed integer overflow in ExprRandFunc()
| -rw-r--r-- | generic/tclBasic.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c index fb85241..1cc22e1 100644 --- a/generic/tclBasic.c +++ b/generic/tclBasic.c @@ -7781,15 +7781,15 @@ ExprRandFunc( * take into consideration the thread this interp is running in. */ - iPtr->randSeed = TclpGetClicks() + (PTR2INT(Tcl_GetCurrentThread())<<12); + iPtr->randSeed = TclpGetClicks() + ((unsigned long)PTR2UINT(Tcl_GetCurrentThread())*4093); /* * Make sure 1 <= randSeed <= (2^31) - 2. See below. */ - iPtr->randSeed &= (unsigned long) 0x7FFFFFFF; - if ((iPtr->randSeed == 0) || (iPtr->randSeed == 0x7FFFFFFF)) { - iPtr->randSeed ^= 123459876; + iPtr->randSeed &= 0x7FFFFFFFL; + if ((iPtr->randSeed == 0) || (iPtr->randSeed == 0x7FFFFFFFL)) { + iPtr->randSeed ^= 123459876L; } } |
