diff options
author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-06-27 18:44:29 +0300 |
---|---|---|
committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-06-27 18:44:29 +0300 |
commit | 03f81254055c487623211aeae330d02980781f67 (patch) | |
tree | 07521d45f3bf6af0cda33123628431993665e856 | |
parent | fe7232fd2e0da54ebfe1381e8e615aa94a35a1df (diff) |
Backed out changeset: 920a0dbf290a Machine id is needed after singletons die
-rw-r--r-- | indra/newview/llappviewer.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llhasheduniqueid.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llmachineid.cpp | 24 | ||||
-rw-r--r-- | indra/newview/llmachineid.h | 17 | ||||
-rw-r--r-- | indra/newview/llmainlooprepeater.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llsechandler_basic.cpp | 6 |
6 files changed, 26 insertions, 27 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a574588b1a..151039acce 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -826,7 +826,7 @@ bool LLAppViewer::init() LL_INFOS("InitInfo") << "LLCore::Http initialized." << LL_ENDL ; - LLMachineID::getInstance(); //needs to be initialized before threads + LLMachineID::init(); { if (gSavedSettings.getBOOL("QAModeMetrics")) diff --git a/indra/newview/llhasheduniqueid.cpp b/indra/newview/llhasheduniqueid.cpp index eca8d0935c..03192d3e61 100644 --- a/indra/newview/llhasheduniqueid.cpp +++ b/indra/newview/llhasheduniqueid.cpp @@ -36,7 +36,7 @@ bool llHashedUniqueID(unsigned char id[MD5HEX_STR_SIZE]) LLMD5 hashed_unique_id; unsigned char unique_id[MAC_ADDRESS_BYTES]; if ( LLUUID::getNodeID(unique_id) - || LLMachineID::getInstance()->getUniqueID(unique_id, sizeof(unique_id)) + || LLMachineID::getUniqueID(unique_id, sizeof(unique_id)) ) { hashed_unique_id.update(unique_id, MAC_ADDRESS_BYTES); diff --git a/indra/newview/llmachineid.cpp b/indra/newview/llmachineid.cpp index 1420161008..b0ee8e7fcb 100644 --- a/indra/newview/llmachineid.cpp +++ b/indra/newview/llmachineid.cpp @@ -34,6 +34,8 @@ using namespace std; #include <comdef.h> #include <Wbemidl.h> #endif +unsigned char static_unique_id[] = {0,0,0,0,0,0}; +bool static has_static_unique_id = false; #if LL_WINDOWS @@ -58,22 +60,16 @@ public: #endif //LL_WINDOWS // get an unique machine id. -// NOT THREAD SAFE - do first call before setting up threads. +// NOT THREAD SAFE - do before setting up threads. // MAC Address doesn't work for Windows 7 since the first returned hardware MAC address changes with each reboot, Go figure?? -LLMachineID::LLMachineID() : -mHasStaticUniqueId(false) -{ - // will set mStaticUniqueId to 0 - requestUniqueID(); -} -S32 LLMachineID::requestUniqueID() +S32 LLMachineID::init() { - memset(mStaticUniqueId, 0, sizeof(mStaticUniqueId)); + memset(static_unique_id,0,sizeof(static_unique_id)); S32 ret_code = 0; #if LL_WINDOWS # pragma comment(lib, "wbemuuid.lib") - size_t len = sizeof(mStaticUniqueId); + size_t len = sizeof(static_unique_id); // algorithm to detect BIOS serial number found at: // http://msdn.microsoft.com/en-us/library/aa394077%28VS.85%29.aspx @@ -232,7 +228,7 @@ S32 LLMachineID::requestUniqueID() if (vtProp.bstrVal[j] == 0) break; - mStaticUniqueId[i] = (unsigned int)(mStaticUniqueId[i] + serialNumber[j]); + static_unique_id[i] = (unsigned int)(static_unique_id[i] + serialNumber[j]); j++; } } @@ -257,16 +253,16 @@ S32 LLMachineID::requestUniqueID() unsigned char * staticPtr = (unsigned char *)(&static_unique_id[0]); ret_code = LLUUID::getNodeID(staticPtr); #endif - mHasStaticUniqueId = true; + has_static_unique_id = true; return ret_code; } S32 LLMachineID::getUniqueID(unsigned char *unique_id, size_t len) { - if (mHasStaticUniqueId) + if (has_static_unique_id) { - memcpy(unique_id, &mStaticUniqueId, len); + memcpy ( unique_id, &static_unique_id, len); LL_INFOS_ONCE("AppInit") << "UniqueID: 0x"; // Code between here and LL_ENDL is not executed unless the LL_DEBUGS // actually produces output diff --git a/indra/newview/llmachineid.h b/indra/newview/llmachineid.h index b485910eb8..6ef8c36fdb 100644 --- a/indra/newview/llmachineid.h +++ b/indra/newview/llmachineid.h @@ -28,20 +28,23 @@ #define LL_LLMACHINEID_H -class LLMachineID : public LLSingleton<LLMachineID> +class LLMachineID { - LLSINGLETON(LLMachineID); public: - S32 getUniqueID(unsigned char *unique_id, size_t len); + LLMachineID(); + virtual ~LLMachineID(); + static S32 getUniqueID(unsigned char *unique_id, size_t len); + static S32 init(); -private: - S32 requestUniqueID(); +protected: private: - bool mHasStaticUniqueId; - unsigned char mStaticUniqueId[6]; + }; + + + #endif // LL_LLMACHINEID_H diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp index 972b1d838f..6736e9a950 100644 --- a/indra/newview/llmainlooprepeater.cpp +++ b/indra/newview/llmainlooprepeater.cpp @@ -1,5 +1,5 @@ /** - * @file llmainlooprepeater.cpp + * @file llmachineid.cpp * @brief retrieves unique machine ids * * $LicenseInfo:firstyear=2009&license=viewerlgpl$ diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index 63471ab865..9ab9e4a1a2 100644 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp @@ -1310,7 +1310,7 @@ void LLSecAPIBasicHandler::_readProtectedData() U8 decrypted_buffer[BUFFER_READ_SIZE]; int decrypted_length; unsigned char unique_id[MAC_ADDRESS_BYTES]; - LLMachineID::getInstance()->getUniqueID(unique_id, sizeof(unique_id)); + LLMachineID::getUniqueID(unique_id, sizeof(unique_id)); LLXORCipher cipher(unique_id, sizeof(unique_id)); // read in the salt and key @@ -1395,7 +1395,7 @@ void LLSecAPIBasicHandler::_writeProtectedData() EVP_CIPHER_CTX_init(&ctx); EVP_EncryptInit(&ctx, EVP_rc4(), salt, NULL); unsigned char unique_id[MAC_ADDRESS_BYTES]; - LLMachineID::getInstance()->getUniqueID(unique_id, sizeof(unique_id)); + LLMachineID::getUniqueID(unique_id, sizeof(unique_id)); LLXORCipher cipher(unique_id, sizeof(unique_id)); cipher.encrypt(salt, STORE_SALT_SIZE); protected_data_stream.write((const char *)salt, STORE_SALT_SIZE); @@ -1639,7 +1639,7 @@ std::string LLSecAPIBasicHandler::_legacyLoadPassword() // Decipher with MAC address unsigned char unique_id[MAC_ADDRESS_BYTES]; - LLMachineID::getInstance()->getUniqueID(unique_id, sizeof(unique_id)); + LLMachineID::getUniqueID(unique_id, sizeof(unique_id)); LLXORCipher cipher(unique_id, sizeof(unique_id)); cipher.decrypt(&buffer[0], buffer.size()); |