pw-top: use spa_strbuf to create status bar

There is nothing wrong with the use of strcat here but security tools
keep complaining about it and creating bad patches for it so fix it
with a strbuf.
This commit is contained in:
Wim Taymans 2026-04-23 16:29:16 +02:00
parent 135620ab64
commit b414d2af19

View file

@ -581,24 +581,27 @@ static void do_refresh(struct data *d, bool force_refresh)
return; return;
if (!d->batch_mode) { if (!d->batch_mode) {
char statusbar[255] = { 0 }; char statusbar[255];
struct spa_strbuf buf;
spa_strbuf_init(&buf, statusbar, sizeof(statusbar));
if (!((filter->state == PW_NODE_STATE_ERROR) && if (!((filter->state == PW_NODE_STATE_ERROR) &&
(filter->followers == PW_NODE_STATE_ERROR))) { (filter->followers == PW_NODE_STATE_ERROR))) {
strcpy(statusbar, "FILTER: "); spa_strbuf_append(&buf, "FILTER: ");
if (filter->state == PW_NODE_STATE_ERROR) if (filter->state == PW_NODE_STATE_ERROR)
strcat(statusbar, "ALL"); spa_strbuf_append(&buf, "ALL");
else for (enum pw_node_state showstate = PW_NODE_STATE_RUNNING; showstate >= PW_NODE_STATE_ERROR; showstate--) { else for (enum pw_node_state showstate = PW_NODE_STATE_RUNNING; showstate >= PW_NODE_STATE_ERROR; showstate--) {
if (showstate >= filter->state) if (showstate >= filter->state)
strcat(statusbar, state_as_string(showstate, SPA_IO_POSITION_STATE_STOPPED)); spa_strbuf_append(&buf, "%s", state_as_string(showstate, SPA_IO_POSITION_STATE_STOPPED));
} }
strcat(statusbar, "+"); spa_strbuf_append(&buf, "+");
if (filter->followers == PW_NODE_STATE_ERROR) if (filter->followers == PW_NODE_STATE_ERROR)
strcat(statusbar, "ALL"); spa_strbuf_append(&buf, "ALL");
else for (enum pw_node_state showstate = PW_NODE_STATE_RUNNING; showstate >= PW_NODE_STATE_ERROR; showstate--) { else for (enum pw_node_state showstate = PW_NODE_STATE_RUNNING; showstate >= PW_NODE_STATE_ERROR; showstate--) {
if (showstate >= filter->followers) if (showstate >= filter->followers)
strcat(statusbar, state_as_string(showstate, SPA_IO_POSITION_STATE_STOPPED)); spa_strbuf_append(&buf, "%s", state_as_string(showstate, SPA_IO_POSITION_STATE_STOPPED));
} }
} }