From: Dong Du Date: Wed, 1 Sep 2021 03:06:24 +0000 (+0800) Subject: lib: sbi: Refine the way to construct platform features X-Git-Tag: v1.3~447 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bd355213bfbb209c047e8cc0df56936f6705477f;p=platform%2Fkernel%2Fopensbi-spacemit.git lib: sbi: Refine the way to construct platform features 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 Reviewed-by: Atish Patra --- diff --git a/lib/sbi/sbi_platform.c b/lib/sbi/sbi_platform.c index 99bd8f5..445a8c1 100644 --- a/lib/sbi/sbi_platform.c +++ b/lib/sbi/sbi_platform.c @@ -48,9 +48,18 @@ 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, - "%s,", temp); - offset = offset + sbi_strlen(temp) + 1; + int len = sbi_snprintf(features_str + offset, + nfstr - offset, + "%s,", temp); + if (len < 0) + break; + + if (offset + len >= nfstr) { + /* No more space for features */ + offset = nfstr; + break; + } else + offset = offset + len; } } feat = feat << 1;