diff options
author | Kinsey Moore <kinsey.moore@oarcorp.com> | 2024-01-16 17:49:29 -0600 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2024-01-22 09:56:40 -0600 |
commit | 07ee157e5e4ab567e1a926fcdd6eae4402b6bdd7 (patch) | |
tree | 6fdebd1990f6a3efa8a173e71fc721386cbd13dd | |
parent | cpukit/libmisc/uuid: Check for invalid FD (diff) | |
download | rtems-07ee157e5e4ab567e1a926fcdd6eae4402b6bdd7.tar.bz2 |
cpukit/libmisc: Cast getpid() before shifting
Cast getpid() before shifting to avoid truncation of upper bits before
the 64bit XOR occurs.
-rw-r--r-- | cpukit/libmisc/uuid/gen_uuid.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/cpukit/libmisc/uuid/gen_uuid.c b/cpukit/libmisc/uuid/gen_uuid.c index 9b8dbeaa2e..5601c887c9 100644 --- a/cpukit/libmisc/uuid/gen_uuid.c +++ b/cpukit/libmisc/uuid/gen_uuid.c @@ -171,7 +171,12 @@ static int get_random_fd(void) fcntl(fd, F_SETFD, i | FD_CLOEXEC); } #endif +#ifdef __rtems__ + srand((((time_t)getpid()) << ((sizeof(pid_t)*CHAR_BIT)>>1)) ^ getuid() + ^ tv.tv_sec ^ tv.tv_usec); +#else srand((getpid() << ((sizeof(pid_t)*CHAR_BIT)>>1)) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec); +#endif #ifdef DO_JRAND_MIX jrand_seed[0] = getpid() ^ (tv.tv_sec & 0xFFFF); jrand_seed[1] = getppid() ^ (tv.tv_usec & 0xFFFF); |