On 2/11/25 8:40 PM, alison.schofi...@intel.com wrote:
> From: Alison Schofield <alison.schofi...@intel.com>
>
> The ndctl cli interface is built around an imported perf cli
> infrastructure which was originally from git. [1]
>
> A recent static analysis scan exposed an integer overflow issue in
> sysbuf_read() and although that is fixable, the function is not used
> in ndctl. Further examination revealed additional unused functionality
> in the string buffer handling import and a subset of that has already
> been obsoleted from the perf cli.
>
> In the interest of not maintaining unused code, remove the unused code
> in util/strbuf.h,c. Ndctl, including cxl-cli and daxctl, are mature
> cli's so it seems ok to let this functionality go after 14 years.
>
> In the interest of not touching what is not causing an issue, the
> entirety of the original import was not reviewed at this time.
>
> [1] 91677390f9e6 ("ndctl: import cli infrastructure from perf")
>
> Signed-off-by: Alison Schofield <alison.schofi...@intel.com>
Reviewed-by: Dave Jiang <dave.ji...@intel.com>
> ---
> util/strbuf.c | 51 ---------------------------------------------------
> util/strbuf.h | 7 -------
> 2 files changed, 58 deletions(-)
>
> diff --git a/util/strbuf.c b/util/strbuf.c
> index 6c8752562720..16fc847dd1c7 100644
> --- a/util/strbuf.c
> +++ b/util/strbuf.c
> @@ -60,30 +60,6 @@ void strbuf_grow(struct strbuf *sb, size_t extra)
> ALLOC_GROW(sb->buf, sb->len + extra + 1, sb->alloc);
> }
>
> -static void strbuf_splice(struct strbuf *sb, size_t pos, size_t len,
> - const void *data, size_t dlen)
> -{
> - if (pos + len < pos)
> - die("you want to use way too much memory");
> - if (pos > sb->len)
> - die("`pos' is too far after the end of the buffer");
> - if (pos + len > sb->len)
> - die("`pos + len' is too far after the end of the buffer");
> -
> - if (dlen >= len)
> - strbuf_grow(sb, dlen - len);
> - memmove(sb->buf + pos + dlen,
> - sb->buf + pos + len,
> - sb->len - pos - len);
> - memcpy(sb->buf + pos, data, dlen);
> - strbuf_setlen(sb, sb->len + dlen - len);
> -}
> -
> -void strbuf_remove(struct strbuf *sb, size_t pos, size_t len)
> -{
> - strbuf_splice(sb, pos, len, NULL, 0);
> -}
> -
> void strbuf_add(struct strbuf *sb, const void *data, size_t len)
> {
> strbuf_grow(sb, len);
> @@ -114,30 +90,3 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...)
> }
> strbuf_setlen(sb, sb->len + len);
> }
> -
> -ssize_t strbuf_read(struct strbuf *sb, int fd, ssize_t hint)
> -{
> - size_t oldlen = sb->len;
> - size_t oldalloc = sb->alloc;
> -
> - strbuf_grow(sb, hint ? hint : 8192);
> - for (;;) {
> - ssize_t cnt;
> -
> - cnt = read(fd, sb->buf + sb->len, sb->alloc - sb->len - 1);
> - if (cnt < 0) {
> - if (oldalloc == 0)
> - strbuf_release(sb);
> - else
> - strbuf_setlen(sb, oldlen);
> - return -1;
> - }
> - if (!cnt)
> - break;
> - sb->len += cnt;
> - strbuf_grow(sb, 8192);
> - }
> -
> - sb->buf[sb->len] = '\0';
> - return sb->len - oldlen;
> -}
> diff --git a/util/strbuf.h b/util/strbuf.h
> index c9b7d2ef5cf8..3f810a5de8d7 100644
> --- a/util/strbuf.h
> +++ b/util/strbuf.h
> @@ -56,7 +56,6 @@ struct strbuf {
> #define STRBUF_INIT { 0, 0, strbuf_slopbuf }
>
> /*----- strbuf life cycle -----*/
> -extern void strbuf_init(struct strbuf *buf, ssize_t hint);
> extern void strbuf_release(struct strbuf *);
> extern char *strbuf_detach(struct strbuf *, size_t *);
>
> @@ -81,9 +80,6 @@ static inline void strbuf_addch(struct strbuf *sb, int c) {
> sb->buf[sb->len++] = c;
> sb->buf[sb->len] = '\0';
> }
> -
> -extern void strbuf_remove(struct strbuf *, size_t pos, size_t len);
> -
> extern void strbuf_add(struct strbuf *, const void *, size_t);
> static inline void strbuf_addstr(struct strbuf *sb, const char *s) {
> strbuf_add(sb, s, strlen(s));
> @@ -92,7 +88,4 @@ static inline void strbuf_addstr(struct strbuf *sb, const
> char *s) {
> __attribute__((format(printf,2,3)))
> extern void strbuf_addf(struct strbuf *sb, const char *fmt, ...);
>
> -/* XXX: if read fails, any partial read is undone */
> -extern ssize_t strbuf_read(struct strbuf *, int fd, ssize_t hint);
> -
> #endif /* __NDCTL_STRBUF_H */
>
> base-commit: a3d56f0ca5679b7c78090c1a8b0b9f1f9901e5e0