Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/shared/ppapi_proxy/object_serialize.cc

Issue 3391010: Update the PPAPI DEPS revision. This change included parameter profile chang... (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/shared/ppapi_proxy/object_proxy.cc ('k') | src/shared/ppapi_proxy/plugin_globals.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2010 The Native Client Authors. All rights reserved. 2 * Copyright 2010 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can 3 * Use of this source code is governed by a BSD-style license that can
4 * be found in the LICENSE file. 4 * be found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/shared/ppapi_proxy/object_serialize.h" 7 #include "native_client/src/shared/ppapi_proxy/object_serialize.h"
8 8
9 #include <string.h> 9 #include <string.h>
10 #include <limits> 10 #include <limits>
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 default: 205 default:
206 return false; 206 return false;
207 } 207 }
208 offset += element_size; 208 offset += element_size;
209 } 209 }
210 return true; 210 return true;
211 } 211 }
212 212
213 bool DeserializeString(char* p, 213 bool DeserializeString(char* p,
214 PP_Var* var, 214 PP_Var* var,
215 uint32_t* element_size) { 215 uint32_t* element_size,
216 NaClSrpcChannel* channel) {
216 SerializedString* ss = reinterpret_cast<SerializedString*>(p); 217 SerializedString* ss = reinterpret_cast<SerializedString*>(p);
217 uint32_t string_length = ss->fixed.u.string_length; 218 uint32_t string_length = ss->fixed.u.string_length;
218 if (AddWouldOverflow(string_length, kStringRoundBase - 1)) { 219 if (AddWouldOverflow(string_length, kStringRoundBase - 1)) {
219 // Rounding to the next 8 would overflow. 220 // Rounding to the next 8 would overflow.
220 return false; 221 return false;
221 } 222 }
222 uint32_t rounded_length = RoundedStringBytes(string_length); 223 uint32_t rounded_length = RoundedStringBytes(string_length);
223 if (0 == string_length) { 224 if (0 == string_length) {
224 // Zero-length string. Rely on what the PPB_Var does. 225 // Zero-length string. Rely on what the PPB_Var does.
225 *var = VarInterface()->VarFromUtf8(ss->string_bytes, 0); 226 *var = VarInterface()->VarFromUtf8(LookupModuleIdForSrpcChannel(channel),
227 ss->string_bytes,
228 0);
226 } else { 229 } else {
227 // We need to copy the string payload using memory allocated by 230 // We need to copy the string payload using memory allocated by
228 // NPN_MemAlloc. 231 // NPN_MemAlloc.
229 void* copy = CoreInterface()->MemAlloc(string_length + 1); 232 void* copy = CoreInterface()->MemAlloc(string_length + 1);
230 if (NULL == copy) { 233 if (NULL == copy) {
231 // Memory allocation failed. 234 // Memory allocation failed.
232 return false; 235 return false;
233 } else { 236 } else {
234 memmove(copy, ss->string_bytes, string_length); 237 memmove(copy, ss->string_bytes, string_length);
235 } 238 }
236 *var = VarInterface()->VarFromUtf8(reinterpret_cast<const char*>(copy), 239 *var = VarInterface()->VarFromUtf8(LookupModuleIdForSrpcChannel(channel),
240 reinterpret_cast<const char*>(copy),
237 string_length); 241 string_length);
238 } 242 }
239 // Compute the "element_size", or offset in the serialized form from 243 // Compute the "element_size", or offset in the serialized form from
240 // the serialized string that we just read. 244 // the serialized string that we just read.
241 if (AddWouldOverflow(rounded_length, sizeof(SerializedFixed))) { 245 if (AddWouldOverflow(rounded_length, sizeof(SerializedFixed))) {
242 return false; 246 return false;
243 } 247 }
244 *element_size = sizeof(SerializedFixed) + rounded_length; 248 *element_size = sizeof(SerializedFixed) + rounded_length;
245 return true; 249 return true;
246 } 250 }
(...skipping 27 matching lines...) Expand all
274 vars[i].value.as_int = s->u.int32_value; 278 vars[i].value.as_int = s->u.int32_value;
275 element_size = sizeof(SerializedFixed); 279 element_size = sizeof(SerializedFixed);
276 break; 280 break;
277 case PP_VARTYPE_DOUBLE: { 281 case PP_VARTYPE_DOUBLE: {
278 SerializedDouble* sd = reinterpret_cast<SerializedDouble*>(p); 282 SerializedDouble* sd = reinterpret_cast<SerializedDouble*>(p);
279 vars[i].value.as_double = sd->double_value; 283 vars[i].value.as_double = sd->double_value;
280 element_size = sizeof(SerializedDouble); 284 element_size = sizeof(SerializedDouble);
281 break; 285 break;
282 } 286 }
283 case PP_VARTYPE_STRING: 287 case PP_VARTYPE_STRING:
284 if (!DeserializeString(p, &vars[i], &element_size)) { 288 if (!DeserializeString(p, &vars[i], &element_size, channel)) {
285 return false; 289 return false;
286 } 290 }
287 break; 291 break;
288 case PP_VARTYPE_OBJECT: { 292 case PP_VARTYPE_OBJECT: {
289 SerializedObject* so = reinterpret_cast<SerializedObject*>(p); 293 SerializedObject* so = reinterpret_cast<SerializedObject*>(p);
290 ObjectCapability capability = so->capability; 294 ObjectCapability capability = so->capability;
291 vars[i] = ObjectProxy::New(capability, channel); 295 vars[i] = ObjectProxy::New(capability, channel);
292 element_size = sizeof(SerializedObject); 296 element_size = sizeof(SerializedObject);
293 break; 297 break;
294 } 298 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 return false; 375 return false;
372 } 376 }
373 // Read the serialized PP_Vars into the allocated memory. 377 // Read the serialized PP_Vars into the allocated memory.
374 if (!DeserializePpVar(channel, bytes, length, vars, argc)) { 378 if (!DeserializePpVar(channel, bytes, length, vars, argc)) {
375 return false; 379 return false;
376 } 380 }
377 return true; 381 return true;
378 } 382 }
379 383
380 } // namespace ppapi_proxy 384 } // namespace ppapi_proxy
OLDNEW
« no previous file with comments | « src/shared/ppapi_proxy/object_proxy.cc ('k') | src/shared/ppapi_proxy/plugin_globals.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698