slstatus

status monitor
git clone git://git.suckless.org/slstatus
Log | Files | Refs | README | LICENSE

commit 7a8545952ef647e6862c5b184aee0b13a48e741d
parent 614c275b42064c5433fbb086e7d9639a19f1f127
Author: drkhsh <me@drkhsh.at>
Date:   Tue, 23 Jun 2026 18:42:19 +0200

openbsd swap: advance iterator, fix leaks

the swap entry loop read the first entry repeatedly instead of
iterating with sep[i]. also free the allocation on error paths
and fix "SWAP_STATA" typo in the warning message.

Diffstat:
Mcomponents/swap.c | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/components/swap.c b/components/swap.c @@ -112,7 +112,7 @@ int rnswap, nswap, i; if ((nswap = swapctl(SWAP_NSWAP, 0, 0)) < 1) { - warn("swaptctl 'SWAP_NSWAP':"); + warn("swapctl 'SWAP_NSWAP':"); return 1; } if (!(fsep = sep = calloc(nswap, sizeof(*sep)))) { @@ -120,11 +120,13 @@ return 1; } if ((rnswap = swapctl(SWAP_STATS, (void *)sep, nswap)) < 0) { - warn("swapctl 'SWAP_STATA':"); + warn("swapctl 'SWAP_STATS':"); + free(fsep); return 1; } if (nswap != rnswap) { warn("getstats: SWAP_STATS != SWAP_NSWAP"); + free(fsep); return 1; } @@ -132,8 +134,8 @@ *used = 0; for (i = 0; i < rnswap; i++) { - *total += sep->se_nblks >> 1; - *used += sep->se_inuse >> 1; + *total += sep[i].se_nblks >> 1; + *used += sep[i].se_inuse >> 1; } free(fsep);