From f0f1d83624a8aafe402d00e14a83078b2f2c2471 Mon Sep 17 00:00:00 2001 From: Greg Kaiser Date: Mon, 23 Mar 2020 09:03:39 -0700 Subject: [PATCH] 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 --- cmds/statsd/src/shell/ShellSubscriber.cpp | 2 +- cmds/statsd/src/shell/ShellSubscriber.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmds/statsd/src/shell/ShellSubscriber.cpp b/cmds/statsd/src/shell/ShellSubscriber.cpp index 6fa165475029c..c677222f31eb4 100644 --- a/cmds/statsd/src/shell/ShellSubscriber.cpp +++ b/cmds/statsd/src/shell/ShellSubscriber.cpp @@ -41,7 +41,7 @@ void ShellSubscriber::startNewSubscription(int in, int out, int timeoutSec) { // critical-section std::unique_lock lock(mMutex); - if (myToken < mToken) { + if (myToken != mToken) { // Some other subscription has already come in. Stop. return; } diff --git a/cmds/statsd/src/shell/ShellSubscriber.h b/cmds/statsd/src/shell/ShellSubscriber.h index 7fd625e472b40..2f9b61a257a8b 100644 --- a/cmds/statsd/src/shell/ShellSubscriber.h +++ b/cmds/statsd/src/shell/ShellSubscriber.h @@ -108,7 +108,7 @@ private: std::shared_ptr mSubscriptionInfo = nullptr; - int mToken; + int mToken = 0; }; } // namespace statsd