...
Code Block | ||
---|---|---|
| ||
int get_secret() {
int secret = (rand() % 100) + 100;
return secret;
}
|
Compliant Solution
The compliant solution uses a mutex to make each call to prevent concurrent access to the shared seed value used in rand() function atomic.
Code Block | ||
---|---|---|
| ||
#include <pthread.h> pthread_mutex_t rand_lock = PTHREAD_MUTEX_INITIALIZER; int get_secret() { int secret; pthread_mutex_lock(&rand_lock) ; secret = (rand() % 100) + 100; pthread_mutex_unlock(&rand_lock); return secret; } |
Risk Assessment
Race conditions caused by multiple threads invoking the same library function can lead to abnormal termination or may lead to data integrity violations
...