aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
authorArmin Weatherwax2011-04-08 14:34:17 +0200
committerMcCabe Maxsted2011-04-11 16:28:07 -0700
commit074a765cb0ff07a0b89b9d3e75aa1572e88920a1 (patch)
treef39c89b311eaf3c28e21fb6a4564c90eefc668cb /linden
parentfix bug #853 crash caused by antistrings (diff)
downloadmeta-impy-074a765cb0ff07a0b89b9d3e75aa1572e88920a1.zip
meta-impy-074a765cb0ff07a0b89b9d3e75aa1572e88920a1.tar.gz
meta-impy-074a765cb0ff07a0b89b9d3e75aa1572e88920a1.tar.bz2
meta-impy-074a765cb0ff07a0b89b9d3e75aa1572e88920a1.tar.xz
fix Bug #857: Imprudence lluserauth reports different mac address than other 1.23/SG1.x viewers
this just takes lluserauth from SG1.5
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/lluserauth.cpp62
-rw-r--r--linden/indra/newview/lluserauth.h7
2 files changed, 21 insertions, 48 deletions
diff --git a/linden/indra/newview/lluserauth.cpp b/linden/indra/newview/lluserauth.cpp
index d76ed72..86d35e2 100644
--- a/linden/indra/newview/lluserauth.cpp
+++ b/linden/indra/newview/lluserauth.cpp
@@ -38,10 +38,12 @@
38#include <iterator> 38#include <iterator>
39 39
40#include "lldir.h" 40#include "lldir.h"
41#include "llversionviewer.h"
41#include "llappviewer.h" 42#include "llappviewer.h"
43#include "llviewerbuild.h"
42#include "llviewercontrol.h" 44#include "llviewercontrol.h"
43#include "llxmlrpctransaction.h" 45#include "llxmlrpctransaction.h"
44#include "llmd5.h" 46#include "llsdutil.h"
45 47
46// NOTE: MUST include these after otherincludes since queue gets redefined!?!! 48// NOTE: MUST include these after otherincludes since queue gets redefined!?!!
47#include <curl/curl.h> 49#include <curl/curl.h>
@@ -69,7 +71,8 @@ static const char* PLATFORM_STRING = "Sol";
69 71
70LLUserAuth::LLUserAuth() : 72LLUserAuth::LLUserAuth() :
71 mTransaction(NULL), 73 mTransaction(NULL),
72 mLastTransferRateBPS(0) 74 mLastTransferRateBPS(0),
75 mResult(LLSD())
73{ 76{
74 mAuthResponse = E_NO_RESPONSE_YET; 77 mAuthResponse = E_NO_RESPONSE_YET;
75} 78}
@@ -85,6 +88,7 @@ void LLUserAuth::reset()
85 mTransaction = NULL; 88 mTransaction = NULL;
86 mResponses.clear(); 89 mResponses.clear();
87 mOptions.clear(); 90 mOptions.clear();
91 mResult.clear();
88} 92}
89 93
90 94
@@ -114,25 +118,8 @@ void LLUserAuth::authenticate(
114 LL_INFOS2("AppInit", "Authentication") << option_str.str() << LL_ENDL; 118 LL_INFOS2("AppInit", "Authentication") << option_str.str() << LL_ENDL;
115 119
116 mAuthResponse = E_NO_RESPONSE_YET; 120 mAuthResponse = E_NO_RESPONSE_YET;
117 //mDownloadTimer.reset(); 121 //mDownloadTimer.reset();
118 122
119 std::string strMac;
120 std::string strHDD;
121 char mac[MAX_STRING];
122 char hdd[MAX_STRING];
123
124 strMac.assign(web_login_key.asString());
125 strMac.append(hashed_mac.c_str());
126
127 strHDD.assign(web_login_key.asString());
128 strHDD.append(hashed_volume_serial.c_str());
129
130 LLMD5 md5Mac((const unsigned char *)strMac.c_str());
131 LLMD5 md5HDD((const unsigned char *)strHDD.c_str());
132
133 md5Mac.hex_digest(mac);
134 md5HDD.hex_digest(hdd);
135
136 // create the request 123 // create the request
137 XMLRPC_REQUEST request = XMLRPC_RequestNew(); 124 XMLRPC_REQUEST request = XMLRPC_RequestNew();
138 XMLRPC_RequestSetMethodName(request, method.c_str()); 125 XMLRPC_RequestSetMethodName(request, method.c_str());
@@ -147,9 +134,10 @@ void LLUserAuth::authenticate(
147 XMLRPC_VectorAppendString(params, "version", gCurrentVersion.c_str(), 0); // Includes channel name 134 XMLRPC_VectorAppendString(params, "version", gCurrentVersion.c_str(), 0); // Includes channel name
148 XMLRPC_VectorAppendString(params, "channel", gSavedSettings.getString("VersionChannelName").c_str(), 0); 135 XMLRPC_VectorAppendString(params, "channel", gSavedSettings.getString("VersionChannelName").c_str(), 0);
149 XMLRPC_VectorAppendString(params, "platform", PLATFORM_STRING, 0); 136 XMLRPC_VectorAppendString(params, "platform", PLATFORM_STRING, 0);
150 XMLRPC_VectorAppendString(params, "mac", mac, 0); 137 XMLRPC_VectorAppendString(params, "mac", hashed_mac.c_str(), 0);
151 // A bit of security through obscurity: id0 is volume_serial 138 // A bit of security through obscurity: id0 is volume_serial
152 XMLRPC_VectorAppendString(params, "id0", hdd, 0); 139 XMLRPC_VectorAppendString(params, "id0", hashed_volume_serial.c_str(), 0);
140
153 if (skip_optional) 141 if (skip_optional)
154 { 142 {
155 XMLRPC_VectorAppendString(params, "skipoptional", "true", 0); 143 XMLRPC_VectorAppendString(params, "skipoptional", "true", 0);
@@ -218,28 +206,7 @@ void LLUserAuth::authenticate(
218 206
219 mAuthResponse = E_NO_RESPONSE_YET; 207 mAuthResponse = E_NO_RESPONSE_YET;
220 //mDownloadTimer.reset(); 208 //mDownloadTimer.reset();
221 209
222 std::string strMac;
223 std::string strHDD;
224 char mac[MAX_STRING];
225 char hdd[MAX_STRING];
226
227 strMac.assign(firstname);
228 strMac.append(lastname);
229 strMac.append(dpasswd.c_str());
230 strMac.append(hashed_mac.c_str());
231
232 strHDD.assign(firstname);
233 strHDD.append(lastname);
234 strHDD.append(dpasswd.c_str());
235 strHDD.append(hashed_volume_serial.c_str());
236
237 LLMD5 md5Mac((const unsigned char *)strMac.c_str());
238 LLMD5 md5HDD((const unsigned char *)strHDD.c_str());
239
240 md5Mac.hex_digest(mac);
241 md5HDD.hex_digest(hdd);
242
243 // create the request 210 // create the request
244 XMLRPC_REQUEST request = XMLRPC_RequestNew(); 211 XMLRPC_REQUEST request = XMLRPC_RequestNew();
245 XMLRPC_RequestSetMethodName(request, method.c_str()); 212 XMLRPC_RequestSetMethodName(request, method.c_str());
@@ -254,9 +221,10 @@ void LLUserAuth::authenticate(
254 XMLRPC_VectorAppendString(params, "version", gCurrentVersion.c_str(), 0); // Includes channel name 221 XMLRPC_VectorAppendString(params, "version", gCurrentVersion.c_str(), 0); // Includes channel name
255 XMLRPC_VectorAppendString(params, "channel", gSavedSettings.getString("VersionChannelName").c_str(), 0); 222 XMLRPC_VectorAppendString(params, "channel", gSavedSettings.getString("VersionChannelName").c_str(), 0);
256 XMLRPC_VectorAppendString(params, "platform", PLATFORM_STRING, 0); 223 XMLRPC_VectorAppendString(params, "platform", PLATFORM_STRING, 0);
257 XMLRPC_VectorAppendString(params, "mac", mac, 0); 224 XMLRPC_VectorAppendString(params, "mac", hashed_mac.c_str(), 0);
258 // A bit of security through obscurity: id0 is volume_serial 225 // A bit of security through obscurity: id0 is volume_serial
259 XMLRPC_VectorAppendString(params, "id0", hdd, 0); 226 XMLRPC_VectorAppendString(params, "id0", hashed_volume_serial.c_str(), 0);
227
260 if (skip_optional) 228 if (skip_optional)
261 { 229 {
262 XMLRPC_VectorAppendString(params, "skipoptional", "true", 0); 230 XMLRPC_VectorAppendString(params, "skipoptional", "true", 0);
diff --git a/linden/indra/newview/lluserauth.h b/linden/indra/newview/lluserauth.h
index 0af8718..85cc180 100644
--- a/linden/indra/newview/lluserauth.h
+++ b/linden/indra/newview/lluserauth.h
@@ -127,6 +127,11 @@ public:
127 const std::string& hashed_volume_serial); 127 const std::string& hashed_volume_serial);
128 128
129 UserAuthcode authResponse(); 129 UserAuthcode authResponse();
130 // mResult contains the responses we get through the login process
131 //
132 LLSD mResult; // OGPX : *way* different access of auth result in OGP.
133 UserAuthcode mAuthResponse; // OGPX TODO: proper access functions
134
130 135
131 // clears out internal data cache. 136 // clears out internal data cache.
132 void reset(); 137 void reset();
@@ -143,7 +148,7 @@ public:
143private: 148private:
144 LLXMLRPCTransaction* mTransaction; 149 LLXMLRPCTransaction* mTransaction;
145 150
146 UserAuthcode mAuthResponse; 151
147 std::string mErrorMessage; 152 std::string mErrorMessage;
148 153
149 // dealing with the XML 154 // dealing with the XML