[PATCH v2] lib: sbi: Refine the way to construct platform features

Anup Patel anup at brainfault.org
Thu Sep 2 23:44:10 PDT 2021


On Wed, Sep 1, 2021 at 8:37 AM Dong Du <Dd_nirvana at sjtu.edu.cn> wrote:
>
> sbi_platform_get_features_str() uses sbi_snprintf() to construct the
> features_str. However, it passes the wrong length value (i.e., the nfstr),
> which should be (nfstr-offset) as the starting point of str (i.e., features_str + offset)
> changes.
> This commit also checks the return value of snprintf, and handles the corner case
> that the string buffer is full.
>
> Signed-off-by: Dong Du <Dd_nirvana at sjtu.edu.cn>

Please insert here Reviewed-by obtained in previous patch revisions.

> ---
>  lib/sbi/sbi_platform.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/lib/sbi/sbi_platform.c b/lib/sbi/sbi_platform.c
> index 99bd8f5..7f0ed23 100644
> --- a/lib/sbi/sbi_platform.c
> +++ b/lib/sbi/sbi_platform.c
> @@ -48,9 +48,17 @@ void sbi_platform_get_features_str(const struct sbi_platform *plat,
>                 if (features & feat) {
>                         temp = sbi_platform_feature_id2string(feat);
>                         if (temp) {
> -                               sbi_snprintf(features_str + offset, nfstr,
> +                               int len = sbi_snprintf(features_str + offset, nfstr - offset,

This line is over 80 characters.

>                                              "%s,", temp);
> -                               offset = offset + sbi_strlen(temp) + 1;
> +                               if (len < 0)
> +                                       break;
> +
> +                               if (offset + len >= nfstr) {
> +                                       /* No more space for features */
> +                                       offset = nfstr;
> +                                       break;
> +                               } else
> +                                       offset = offset + len;
>                         }
>                 }
>                 feat = feat << 1;
> --
> 2.31.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi

Only one minor comment above, which I have taken care of while
merging this patch.

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup



More information about the opensbi mailing list