diff options
Diffstat (limited to 'user/xfsprogs/scrub.patch')
-rw-r--r-- | user/xfsprogs/scrub.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/user/xfsprogs/scrub.patch b/user/xfsprogs/scrub.patch new file mode 100644 index 000000000..a466aab34 --- /dev/null +++ b/user/xfsprogs/scrub.patch @@ -0,0 +1,49 @@ +From da3ad6ffc9ecf75ebb734bbb863c1412d11b9beb Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Sat, 10 Aug 2024 21:26:57 -0500 +Subject: [PATCH] xfs_scrub: Use POSIX-conformant strerror_r + +When building xfsprogs with musl libc, strerror_r returns int as +specified in POSIX. This differs from the glibc extension that returns +char*. Successful calls will return 0, which will be dereferenced as a +NULL pointer by (v)fprintf. + +Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com> +--- + scrub/common.c | 3 ++- + scrub/inodes.c | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/scrub/common.c b/scrub/common.c +index 283ac84e..bd8bde35 100644 +--- a/scrub/common.c ++++ b/scrub/common.c +@@ -122,7 +122,8 @@ __str_out( + fprintf(stream, "%s%s: %s: ", stream_start(stream), + _(err_levels[level].string), descr); + if (error) { +- fprintf(stream, _("%s."), strerror_r(error, buf, DESCR_BUFSZ)); ++ strerror_r(error, buf, DESCR_BUFSZ); ++ fprintf(stream, _("%s."), buf); + } else { + va_start(args, format); + vfprintf(stream, format, args); +diff --git a/scrub/inodes.c b/scrub/inodes.c +index 16c79cf4..f0e7289c 100644 +--- a/scrub/inodes.c ++++ b/scrub/inodes.c +@@ -65,9 +65,9 @@ bulkstat_for_inumbers( + error = -xfrog_bulkstat(&ctx->mnt, breq); + if (error) { + char errbuf[DESCR_BUFSZ]; ++ strerror_r(error, errbuf, DESCR_BUFSZ); + +- str_info(ctx, descr_render(dsc), "%s", +- strerror_r(error, errbuf, DESCR_BUFSZ)); ++ str_info(ctx, descr_render(dsc), "%s", errbuf); + } + + /* +-- +2.40.0 + |