summaryrefslogtreecommitdiffstats
path: root/debian/patches/upstream/findmnt-always-zero-terminate-SOURCES-data.patch
blob: b173277971e5b53c6952bf2991a678624fea3a77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= <thomas@t-8ch.de>
Date: Sun, 21 Apr 2024 20:00:31 +0200
Subject: findmnt: always zero-terminate SOURCES data
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

libsmartcols expects it's data fields to be zero terminated.
See the call to strlen() in scols_column_greatest_wrap().
ul_buffer however does not guarantee that termination,
ul_buffer_append_strings() discard the zero-termination.

Always zero-terminate in get_data_col_sources() and drop the now
unnecessary variable "i".

Closes: https://github.com/util-linux/util-linux/issues/2980
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
(cherry picked from commit 6594679e9af805075c282da35b1b2a8d767e403b)
---
 misc-utils/findmnt.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c
index 2e4d59e..f40b137 100644
--- a/misc-utils/findmnt.c
+++ b/misc-utils/findmnt.c
@@ -552,7 +552,6 @@ static char *get_vfs_attr(struct libmnt_fs *fs, int sizetype)
 static char *get_data_col_sources(struct libmnt_fs *fs, int evaluate, size_t *datasiz)
 {
 	const char *tag = NULL, *p = NULL;
-	int i = 0;
 	const char *device = NULL;
 	char *val = NULL;
 	blkid_dev_iterate iter;
@@ -602,10 +601,8 @@ static char *get_data_col_sources(struct libmnt_fs *fs, int evaluate, size_t *da
 		dev = blkid_verify(blk_cache, dev);
 		if (!dev)
 			continue;
-		if (i != 0)
-			ul_buffer_append_data(&buf, "\0", 1);
 		ul_buffer_append_string(&buf, blkid_dev_devname(dev));
-		i++;
+		ul_buffer_append_data(&buf, "\0", 1);
 	}
 	blkid_dev_iterate_end(iter);
 	free(val);