Message ID | 20200515201536.979293-1-alex.hung@canonical.com |
---|---|
State | Accepted |
Headers | show |
Series | [1/2] fwts_acpi_object_eval: add a function to check buffer size | expand |
On 15/05/2020 21:15, Alex Hung wrote: > Signed-off-by: Alex Hung <alex.hung@canonical.com> > --- > src/lib/include/fwts_acpi_object_eval.h | 1 + > src/lib/src/fwts_acpi_object_eval.c | 23 ++++++++++++++++++++++- > 2 files changed, 23 insertions(+), 1 deletion(-) > > diff --git a/src/lib/include/fwts_acpi_object_eval.h b/src/lib/include/fwts_acpi_object_eval.h > index b13b5239..a8acec78 100644 > --- a/src/lib/include/fwts_acpi_object_eval.h > +++ b/src/lib/include/fwts_acpi_object_eval.h > @@ -115,6 +115,7 @@ void fwts_method_passed_sane(fwts_framework *fw, const char *name, const char *t > void fwts_method_passed_sane_uint64(fwts_framework *fw, const char *name, const uint64_t value); > void fwts_method_failed_null_object(fwts_framework *fw, const char *name, const char *type); > bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2); > +int fwts_method_buffer_size(fwts_framework *fw, const char *name, ACPI_OBJECT *obj, size_t buf_size); > int fwts_method_package_count_min(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t min); > int fwts_method_package_count_equal(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t count); > int fwts_method_package_elements_all_type(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const ACPI_OBJECT_TYPE type); > diff --git a/src/lib/src/fwts_acpi_object_eval.c b/src/lib/src/fwts_acpi_object_eval.c > index 12165b53..7f41fa52 100644 > --- a/src/lib/src/fwts_acpi_object_eval.c > +++ b/src/lib/src/fwts_acpi_object_eval.c > @@ -575,7 +575,28 @@ bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2) > } > > /* > - * method_package_count_min() > + * fwts_method_buffer_size() > + * check whether buffer size is matched > + */ > +int fwts_method_buffer_size( > + fwts_framework *fw, > + const char *name, > + ACPI_OBJECT *obj, > + size_t buf_size) > +{ > + if (obj->Buffer.Length != buf_size) { > + fwts_failed(fw, LOG_LEVEL_CRITICAL, > + "MethodBadBufferSize", > + "%s should return a buffer of %" PRIu64 " bytes, " > + "but instead returned %" PRIu32 " bytes.", > + name, buf_size, obj->Buffer.Length); > + return FWTS_ERROR; > + } > + return FWTS_OK; > +} > + > +/* > + * fwts_method_package_count_min() > * check that an ACPI package has at least 'min' elements > */ > int fwts_method_package_count_min( > Acked-by: Colin Ian King <colin.king@canonical.com>
On 5/16/20 4:15 AM, Alex Hung wrote: > Signed-off-by: Alex Hung <alex.hung@canonical.com> > --- > src/lib/include/fwts_acpi_object_eval.h | 1 + > src/lib/src/fwts_acpi_object_eval.c | 23 ++++++++++++++++++++++- > 2 files changed, 23 insertions(+), 1 deletion(-) > > diff --git a/src/lib/include/fwts_acpi_object_eval.h b/src/lib/include/fwts_acpi_object_eval.h > index b13b5239..a8acec78 100644 > --- a/src/lib/include/fwts_acpi_object_eval.h > +++ b/src/lib/include/fwts_acpi_object_eval.h > @@ -115,6 +115,7 @@ void fwts_method_passed_sane(fwts_framework *fw, const char *name, const char *t > void fwts_method_passed_sane_uint64(fwts_framework *fw, const char *name, const uint64_t value); > void fwts_method_failed_null_object(fwts_framework *fw, const char *name, const char *type); > bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2); > +int fwts_method_buffer_size(fwts_framework *fw, const char *name, ACPI_OBJECT *obj, size_t buf_size); > int fwts_method_package_count_min(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t min); > int fwts_method_package_count_equal(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t count); > int fwts_method_package_elements_all_type(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const ACPI_OBJECT_TYPE type); > diff --git a/src/lib/src/fwts_acpi_object_eval.c b/src/lib/src/fwts_acpi_object_eval.c > index 12165b53..7f41fa52 100644 > --- a/src/lib/src/fwts_acpi_object_eval.c > +++ b/src/lib/src/fwts_acpi_object_eval.c > @@ -575,7 +575,28 @@ bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2) > } > > /* > - * method_package_count_min() > + * fwts_method_buffer_size() > + * check whether buffer size is matched > + */ > +int fwts_method_buffer_size( > + fwts_framework *fw, > + const char *name, > + ACPI_OBJECT *obj, > + size_t buf_size) > +{ > + if (obj->Buffer.Length != buf_size) { > + fwts_failed(fw, LOG_LEVEL_CRITICAL, > + "MethodBadBufferSize", > + "%s should return a buffer of %" PRIu64 " bytes, " > + "but instead returned %" PRIu32 " bytes.", > + name, buf_size, obj->Buffer.Length); > + return FWTS_ERROR; > + } > + return FWTS_OK; > +} > + > +/* > + * fwts_method_package_count_min() > * check that an ACPI package has at least 'min' elements > */ > int fwts_method_package_count_min( > Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff --git a/src/lib/include/fwts_acpi_object_eval.h b/src/lib/include/fwts_acpi_object_eval.h index b13b5239..a8acec78 100644 --- a/src/lib/include/fwts_acpi_object_eval.h +++ b/src/lib/include/fwts_acpi_object_eval.h @@ -115,6 +115,7 @@ void fwts_method_passed_sane(fwts_framework *fw, const char *name, const char *t void fwts_method_passed_sane_uint64(fwts_framework *fw, const char *name, const uint64_t value); void fwts_method_failed_null_object(fwts_framework *fw, const char *name, const char *type); bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2); +int fwts_method_buffer_size(fwts_framework *fw, const char *name, ACPI_OBJECT *obj, size_t buf_size); int fwts_method_package_count_min(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t min); int fwts_method_package_count_equal(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t count); int fwts_method_package_elements_all_type(fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const ACPI_OBJECT_TYPE type); diff --git a/src/lib/src/fwts_acpi_object_eval.c b/src/lib/src/fwts_acpi_object_eval.c index 12165b53..7f41fa52 100644 --- a/src/lib/src/fwts_acpi_object_eval.c +++ b/src/lib/src/fwts_acpi_object_eval.c @@ -575,7 +575,28 @@ bool fwts_method_type_matches(ACPI_OBJECT_TYPE t1, ACPI_OBJECT_TYPE t2) } /* - * method_package_count_min() + * fwts_method_buffer_size() + * check whether buffer size is matched + */ +int fwts_method_buffer_size( + fwts_framework *fw, + const char *name, + ACPI_OBJECT *obj, + size_t buf_size) +{ + if (obj->Buffer.Length != buf_size) { + fwts_failed(fw, LOG_LEVEL_CRITICAL, + "MethodBadBufferSize", + "%s should return a buffer of %" PRIu64 " bytes, " + "but instead returned %" PRIu32 " bytes.", + name, buf_size, obj->Buffer.Length); + return FWTS_ERROR; + } + return FWTS_OK; +} + +/* + * fwts_method_package_count_min() * check that an ACPI package has at least 'min' elements */ int fwts_method_package_count_min(
Signed-off-by: Alex Hung <alex.hung@canonical.com> --- src/lib/include/fwts_acpi_object_eval.h | 1 + src/lib/src/fwts_acpi_object_eval.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-)