[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