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

Unified Diff: mojo/edk/system/wait_set_dispatcher.cc

Issue 2066093002: Add options validation code in WaitSetDispatcher::WaitSetAddImpl(). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/edk/system/wait_set_dispatcher.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/edk/system/wait_set_dispatcher.cc
diff --git a/mojo/edk/system/wait_set_dispatcher.cc b/mojo/edk/system/wait_set_dispatcher.cc
index 1626f2ff24f5b2106aa7a1d1a022dff2d7b24fbe..68090641c8f4d180ba9fa14db04dc8497f960de7 100644
--- a/mojo/edk/system/wait_set_dispatcher.cc
+++ b/mojo/edk/system/wait_set_dispatcher.cc
@@ -49,6 +49,37 @@ MojoResult WaitSetDispatcher::ValidateCreateOptions(
return MOJO_RESULT_OK;
}
+// static
+MojoResult WaitSetDispatcher::ValidateWaitSetAddOptions(
+ UserPointer<const MojoWaitSetAddOptions> in_options,
+ MojoWaitSetAddOptions* out_options) {
+ const MojoWaitSetAddOptionsFlags kKnownFlags =
+ MOJO_WAIT_SET_ADD_OPTIONS_FLAG_NONE;
+ static const MojoWaitSetAddOptions kDefaultOptions = {
+ static_cast<uint32_t>(sizeof(MojoWaitSetAddOptions)),
+ MOJO_WAIT_SET_ADD_OPTIONS_FLAG_NONE};
+
+ *out_options = kDefaultOptions;
+ if (in_options.IsNull())
+ return MOJO_RESULT_OK;
+
+ UserOptionsReader<MojoWaitSetAddOptions> reader(in_options);
+ if (!reader.is_valid())
+ return MOJO_RESULT_INVALID_ARGUMENT;
+
+ if (!OPTIONS_STRUCT_HAS_MEMBER(MojoWaitSetAddOptions, flags, reader))
+ return MOJO_RESULT_OK;
+ if ((reader.options().flags & ~kKnownFlags))
+ return MOJO_RESULT_UNIMPLEMENTED;
+ out_options->flags = reader.options().flags;
+
+ // Checks for fields beyond |flags|:
+
+ // (Nothing here yet.)
+
+ return MOJO_RESULT_OK;
+}
+
Dispatcher::Type WaitSetDispatcher::GetType() const {
return Type::WAIT_SET;
}
@@ -80,6 +111,10 @@ MojoResult WaitSetDispatcher::WaitSetAddImpl(
MutexLocker locker(&mutex());
if (is_closed_no_lock())
return MOJO_RESULT_INVALID_ARGUMENT;
+ MojoWaitSetAddOptions validated_options;
+ MojoResult result = ValidateWaitSetAddOptions(options, &validated_options);
+ if (result != MOJO_RESULT_OK)
+ return result;
// TODO(vtl)
NOTIMPLEMENTED();
« no previous file with comments | « mojo/edk/system/wait_set_dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698