From: Max Khon Date: Fri, 31 Mar 2023 21:03:27 +0000 (+0700) Subject: fr_sbuff_out_bstrncpy_until(): call fr_sbuff_extend_lowat() with proper sbuff (#4873) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=305065ca68df419a239118c3c22072901d43c78e;p=thirdparty%2Ffreeradius-server.git fr_sbuff_out_bstrncpy_until(): call fr_sbuff_extend_lowat() with proper sbuff (#4873) --- diff --git a/src/lib/util/sbuff.c b/src/lib/util/sbuff.c index b2c23a20f65..2770b3525f3 100644 --- a/src/lib/util/sbuff.c +++ b/src/lib/util/sbuff.c @@ -846,7 +846,7 @@ size_t fr_sbuff_out_bstrncpy_until(fr_sbuff_t *out, fr_sbuff_t *in, size_t len, char *p; char *end; - if (fr_sbuff_extend_lowat(NULL, in, needle_len) == 0) break; + if (fr_sbuff_extend_lowat(NULL, &our_in, needle_len) == 0) break; p = fr_sbuff_current(&our_in); end = CONSTRAINED_END(&our_in, len, fr_sbuff_used_total(&our_in)); diff --git a/src/lib/util/sbuff_tests.c b/src/lib/util/sbuff_tests.c index 18878fa1545..b636ca1494b 100644 --- a/src/lib/util/sbuff_tests.c +++ b/src/lib/util/sbuff_tests.c @@ -1052,7 +1052,7 @@ static void test_file_extend(void) fr_sbuff_uctx_file_t fctx; FILE *fp; char buff[5]; - char out[16 + 1]; + char out[24]; char fbuff[24]; const char PATTERN[] = "xyzzy"; #define PATTERN_LEN (sizeof(PATTERN) - 1) @@ -1096,6 +1096,16 @@ static void test_file_extend(void) TEST_CHECK_SLEN(slen, 0); fclose(fp); + + TEST_CASE("Verify fr_sbuff_out_bstrncpy_until() extends from file properly"); + fp = fmemopen(fbuff, sizeof(fbuff), "r"); + TEST_CHECK(fp != NULL); + TEST_CHECK(fr_sbuff_init_file(&sbuff, &fctx, buff, sizeof(buff), fp, 128) == &sbuff); + our_sbuff = FR_SBUFF_BIND_CURRENT(&sbuff); + slen = fr_sbuff_out_bstrncpy_until(&FR_SBUFF_OUT(out, sizeof(out)), &our_sbuff, SIZE_MAX, &FR_SBUFF_TERM("x"), NULL); + TEST_CHECK_SLEN(slen, sizeof(fbuff) - PATTERN_LEN); + + fclose(fp); } static void test_file_extend_max(void)