51 lines
1.8 KiB
Diff
51 lines
1.8 KiB
Diff
|
From 5b34da78d33c2fca7dc3d2c49ae6d395d90c48c1 Mon Sep 17 00:00:00 2001
|
||
|
From: David Teigland <teigland@redhat.com>
|
||
|
Date: Wed, 14 Aug 2024 11:51:17 -0500
|
||
|
Subject: [PATCH] sanlock: fix invalid strcpy in direct dump
|
||
|
|
||
|
If a lockspace or resource name is the full 48 characters
|
||
|
in length, then the ondisk name field does not contain a
|
||
|
terminating null character and strcpy fails.
|
||
|
---
|
||
|
src/direct.c | 10 +++++-----
|
||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/src/direct.c b/src/direct.c
|
||
|
index f70dc19d5ef2..3bc7659e905c 100644
|
||
|
--- a/src/direct.c
|
||
|
+++ b/src/direct.c
|
||
|
@@ -730,8 +730,8 @@ int direct_dump(struct task *task, char *dump_path, int force_mode)
|
||
|
if (!lr->owner_id && !lr->owner_generation)
|
||
|
continue;
|
||
|
|
||
|
- strcpy(sname, lr->space_name);
|
||
|
- strcpy(rname, lr->resource_name);
|
||
|
+ memcpy(sname, lr->space_name, NAME_ID_SIZE);
|
||
|
+ memcpy(rname, lr->resource_name, NAME_ID_SIZE);
|
||
|
|
||
|
printf("%08llu %36s %48s %010llu %04llu %04llu",
|
||
|
(unsigned long long)(start_offset + ((sector_nr + i) * sector_size)),
|
||
|
@@ -754,8 +754,8 @@ int direct_dump(struct task *task, char *dump_path, int force_mode)
|
||
|
leader_record_in(lr_end, &lr_in);
|
||
|
lr = &lr_in;
|
||
|
|
||
|
- strcpy(sname, lr->space_name);
|
||
|
- strcpy(rname, lr->resource_name);
|
||
|
+ memcpy(sname, lr->space_name, NAME_ID_SIZE);
|
||
|
+ memcpy(rname, lr->resource_name, NAME_ID_SIZE);
|
||
|
|
||
|
printf("%08llu %36s %48s %010llu %04llu %04llu %llu",
|
||
|
(unsigned long long)(start_offset + (sector_nr * sector_size)),
|
||
|
@@ -806,7 +806,7 @@ int direct_dump(struct task *task, char *dump_path, int force_mode)
|
||
|
rindex_header_in(rh_end, &rh_in);
|
||
|
rh = &rh_in;
|
||
|
|
||
|
- strcpy(sname, rh->lockspace_name);
|
||
|
+ memcpy(sname, rh->lockspace_name, NAME_ID_SIZE);
|
||
|
|
||
|
printf("%08llu %36s rindex_header 0x%x %d %u %llu\n",
|
||
|
(unsigned long long)(start_offset + (sector_nr * sector_size)),
|
||
|
--
|
||
|
2.46.0
|
||
|
|