diff options
author | Armin Weatherwax | 2011-04-08 14:34:17 +0200 |
---|---|---|
committer | McCabe Maxsted | 2011-04-11 16:28:07 -0700 |
commit | 074a765cb0ff07a0b89b9d3e75aa1572e88920a1 (patch) | |
tree | f39c89b311eaf3c28e21fb6a4564c90eefc668cb /linden | |
parent | fix bug #853 crash caused by antistrings (diff) | |
download | meta-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.cpp | 62 | ||||
-rw-r--r-- | linden/indra/newview/lluserauth.h | 7 |
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 | ||
70 | LLUserAuth::LLUserAuth() : | 72 | LLUserAuth::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: | |||
143 | private: | 148 | private: |
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 |