ShellSubscriber: Avoid rollover bug

We initialize 'mToken' instead of leaving it uninitialized, making
it much less likely to rollover.  In additional, we change our
check to inequality, to handle rollover if that were to happen.

There is the (theoretical) possibility of exactly 2^32 other
requests being claimed between our claim and our check.  It's
assumed that is essentially impossible and not a concern.

Test: TreeHugger
Bug: 150619687
Change-Id: Iee303e05082a6b3b31ed546bd62d3afe67c771d8
This commit is contained in:
Greg Kaiser
2020-03-23 09:03:39 -07:00
parent e39a7b6a80
commit f0f1d83624
2 changed files with 2 additions and 2 deletions

View File

@@ -41,7 +41,7 @@ void ShellSubscriber::startNewSubscription(int in, int out, int timeoutSec) {
// critical-section
std::unique_lock<std::mutex> lock(mMutex);
if (myToken < mToken) {
if (myToken != mToken) {
// Some other subscription has already come in. Stop.
return;
}

View File

@@ -108,7 +108,7 @@ private:
std::shared_ptr<SubscriptionInfo> mSubscriptionInfo = nullptr;
int mToken;
int mToken = 0;
};
} // namespace statsd