sled

Једноставни уређивач текста
git clone https://git.sr.ht/~strahinja/sled
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 7c142b66ae813aad538e7e1503c6a05d7b7dcb5a
родитељ ec1bad7227f1befb577ef97b1d3ea3be1a34e039
Аутор: Страхиња Радић <sr@strahinja.org>
Датум:   Thu,  8 Aug 2024 09:38:02 +0200

sled.c(main): Avoid potential SEGV when the result of memccpy is NULL

Diffstat:
Msled.c | 12++++++++----
измењених датотека: 1, додавања: 8(+), брисања: 4(-)

diff --git a/sled.c b/sled.c @@ -3054,6 +3054,8 @@ main(int argc, char** argv) } else /* rfn is relative */ { + size_t rfn_dir_len; + state.orig_real_filename = strndup(rfn, state.rfn_len); if (!state.orig_real_filename) @@ -3069,11 +3071,13 @@ main(int argc, char** argv) print_error(1, "Pathname too long"); goto main_cleanup; } - *(temp - 1) = '/'; + *(temp - 1) = '/'; /* overwrite NUL */ + rfn_dir_len = temp - state.real_filename - 1; MEMCCPY_EXT(temp, state.real_filename, rfn, - limits[L_PATH_MAX] - state.rfn_len - 1, - temp); - state.rfn_len = temp - state.real_filename - 1; + limits[L_PATH_MAX] - rfn_dir_len, temp); + if (temp) + state.rfn_len = temp + - state.real_filename - 1; } free(rfn); rfn = NULL;