// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.
// Releases memory allocated for IPC arguments, if needed. void ReleaseArgs(const IPCParams* ipc_params, void* args[kMaxIpcParams]) { for (size_t i = 0; i < kMaxIpcParams; i++) { switch (ipc_params->args[i]) { case WCHAR_TYPE: { deletereinterpret_cast<std::wstring*>(args[i]);
args[i] = nullptr; break;
} case INPTR_TYPE: case INOUTPTR_TYPE: { deletereinterpret_cast<CountedBuffer*>(args[i]);
args[i] = nullptr; break;
} default: break;
}
}
}
// Fills up the list of arguments (args and ipc_params) for an IPC call. bool GetArgs(CrossCallParamsEx* params,
IPCParams* ipc_params, void* args[kMaxIpcParams]) { if (kMaxIpcParams < params->GetParamsCount()) returnfalse;
for (uint32_t i = 0; i < params->GetParamsCount(); i++) {
uint32_t size;
ArgType type;
args[i] = params->GetRawParameter(i, &size, &type); if (args[i]) {
ipc_params->args[i] = type; switch (type) { case WCHAR_TYPE: {
std::unique_ptr<std::wstring> data(new std::wstring); if (!params->GetParameterStr(i, data.get())) {
args[i] = 0;
ReleaseArgs(ipc_params, args); returnfalse;
}
args[i] = data.release(); break;
} case UINT32_TYPE: {
uint32_t data; if (!params->GetParameter32(i, &data)) {
ReleaseArgs(ipc_params, args); returnfalse;
}
IPCInt ipc_int(data);
args[i] = ipc_int.AsVoidPtr(); break;
} case VOIDPTR_TYPE: { void* data; if (!params->GetParameterVoidPtr(i, &data)) {
ReleaseArgs(ipc_params, args); returnfalse;
}
args[i] = data; break;
} case INPTR_TYPE: case INOUTPTR_TYPE: { if (!args[i]) {
ReleaseArgs(ipc_params, args); returnfalse;
}
CountedBuffer* buffer = new CountedBuffer(args[i], size);
args[i] = buffer; break;
} default: break;
}
}
} returntrue;
}
} // namespace sandbox
Messung V0.5
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.