[PATCH 19/20] fwts_clog.c: add fwts_clog_available

Colin Ian King colin.king at canonical.com
Thu Jun 21 15:36:43 UTC 2018


On 20/06/18 13:14, Marcello Sylvester Bauer wrote:
> Add a function to test the accessibility of coreboot logs.
> If this is not the case, the clog test will be skipped.
> 
> Signed-off-by: Marcello Sylvester Bauer <info at marcellobauer.com>
> ---
>  src/coreboot/clog/clog.c    |  5 +++++
>  src/lib/include/fwts_clog.h |  1 +
>  src/lib/src/fwts_clog.c     | 15 +++++++++++++++
>  3 files changed, 21 insertions(+)
> 
> diff --git a/src/coreboot/clog/clog.c b/src/coreboot/clog/clog.c
> index caf0fecf..5feca313 100644
> --- a/src/coreboot/clog/clog.c
> +++ b/src/coreboot/clog/clog.c
> @@ -29,6 +29,11 @@ static fwts_list *clog;
>  
>  static int clog_init(fwts_framework *fw)
>  {
> +	if (!fwts_clog_available(fw)) {
> +		fwts_log_info(fw, "coreboot log not available, skipping test");
> +		return FWTS_SKIP;
> +	}
> +
>  	clog = fwts_clog_read(fw);
>  
>  	if (clog == NULL) {
> diff --git a/src/lib/include/fwts_clog.h b/src/lib/include/fwts_clog.h
> index 6f3bab6c..0981717e 100644
> --- a/src/lib/include/fwts_clog.h
> +++ b/src/lib/include/fwts_clog.h
> @@ -27,6 +27,7 @@ typedef void (*fwts_clog_progress_func)(fwts_framework *fw, int percent);
>  typedef void (*fwts_clog_scan_func)(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors);
>  
>  void       fwts_clog_free(fwts_list *list);
> +bool       fwts_clog_available(fwts_framework *fw);
>  fwts_list *fwts_clog_read(fwts_framework *fw);
>  int        fwts_clog_scan(fwts_framework *fw, fwts_list *clog, fwts_clog_scan_func callback, fwts_clog_progress_func progress, void *private, int *errors);
>  void       fwts_clog_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors);
> diff --git a/src/lib/src/fwts_clog.c b/src/lib/src/fwts_clog.c
> index 80576bd6..32c21b61 100644
> --- a/src/lib/src/fwts_clog.c
> +++ b/src/lib/src/fwts_clog.c
> @@ -36,6 +36,11 @@
>  */
>  #define UNIQUE_CLOG_LABEL       "Clog"
>  
> +/*
> + *  coreboot dmi entry
> + */
> +#define COREBOOT_BIOS_VENDOR	"coreboot"
> +
>  /*
>   *  free coreboot log list
>   */
> @@ -44,6 +49,16 @@ void fwts_clog_free(fwts_list *clog)
>          fwts_log_free(clog);
>  }
>  
> +bool fwts_clog_available(fwts_framework *fw)
> +{
> +    char *vendor = fwts_get("/sys/class/dmi/id/bios_vendor");

A C string is returned from fwts_get...  and should be null checked for
a failed allocation.

> +
> +    if (fw->clog || (vendor && strstr(vendor, COREBOOT_BIOS_VENDOR)))
> +        return true;

..and leaked here, a free(vendor) is required

> +
> +   return false

..and also leaked here too.

> +}
> +
>  /*
>   *  read coreboot log and return as list of lines
>   *  TODO: find coreboot log in /dev/mem
> 




More information about the fwts-devel mailing list