| OLD | NEW |
| (Empty) |
| 1 {# TODO(vardhan): Fill out the remaining validation error strings. #} | |
| 2 {%- macro validate_not_null_ptr(field_expr, field, object_name, err_string) %} | |
| 3 if (!{{field_expr}}->offset) { | |
| 4 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) | |
| 5 << "null field '{{field.name}}' in '{{object_name}}'"; | |
| 6 return mojo::internal::ValidationError::UNEXPECTED_NULL_POINTER; | |
| 7 } | |
| 8 {%- endmacro %} | |
| 9 | |
| 10 {%- macro validate_encoded_ptr(field_expr, err_string) %} | |
| 11 if (!mojo::internal::ValidateEncodedPointer(&{{field_expr}}->offset)) { | |
| 12 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) << ""; | |
| 13 return mojo::internal::ValidationError::ILLEGAL_POINTER; | |
| 14 } | |
| 15 {%- endmacro %} | |
| 16 | |
| 17 {%- macro validate_array_or_string(field_expr, field, err_string) -%} | |
| 18 const mojo::internal::ArrayValidateParams {{field.name}}_validate_params( | |
| 19 {{field.kind|get_array_validate_params_ctor_args|indent(4)}}); | |
| 20 auto validate_retval = {{field.kind|cpp_wrapper_type}}::Data_::Validate( | |
| 21 mojo::internal::DecodePointerRaw(&{{field_expr}}->offset), | |
| 22 bounds_checker, &{{field.name}}_validate_params, | |
| 23 {{err_string}}); | |
| 24 if (validate_retval != mojo::internal::ValidationError::NONE) { | |
| 25 return validate_retval; | |
| 26 } | |
| 27 {%- endmacro %} | |
| 28 | |
| 29 {%- macro validate_handle(field_expr, field, object_name, err_string) -%} | |
| 30 const mojo::Handle {{field.name}}_handle(object->data.f_{{field.name}}); | |
| 31 | |
| 32 {%- if not field.kind|is_nullable_kind %} | |
| 33 if ({{field.name}}_handle.value() == mojo::internal::kEncodedInvalidHandleValu
e) { | |
| 34 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) | |
| 35 << "invalid {{field.name}} field in {{object_name}}"; | |
| 36 return mojo::internal::ValidationError::UNEXPECTED_INVALID_HANDLE; | |
| 37 } | |
| 38 {%- endif %} | |
| 39 if (!bounds_checker->ClaimHandle({{field.name}}_handle)) { | |
| 40 MOJO_INTERNAL_DEBUG_SET_ERROR_MSG({{err_string}}) << ""; | |
| 41 return mojo::internal::ValidationError::ILLEGAL_HANDLE; | |
| 42 } | |
| 43 {%- endmacro -%} | |
| 44 | |
| 45 {%- macro validate_union_field(field, union, err_string) %} | |
| 46 {%- set field_expr = "(reinterpret_cast<const " | |
| 47 ~ field.kind|cpp_union_field_type | |
| 48 ~ "*>(&object->data.f_" | |
| 49 ~ field.name | |
| 50 ~ "))" -%} | |
| 51 {%- if field.kind|is_object_kind -%} | |
| 52 {%- if not field.kind|is_nullable_kind -%} | |
| 53 {{ validate_not_null_ptr(field_expr, field, union.name, err_string) }} | |
| 54 {%- endif %} | |
| 55 {{ validate_encoded_ptr(field_expr, err_string) }} | |
| 56 {%- endif %} | |
| 57 | |
| 58 {%- if field.kind|is_array_kind or field.kind|is_string_kind -%} | |
| 59 {{ validate_array_or_string(field_expr, field, err_string) }} | |
| 60 {%- endif %} | |
| 61 | |
| 62 {%- if field.kind|is_any_handle_kind -%} | |
| 63 {{ validate_handle(field_expr, field, union.name, err_string) }} | |
| 64 {%- endif %} | |
| 65 return mojo::internal::ValidationError::NONE; | |
| 66 {%- endmacro %} | |
| OLD | NEW |