From 5b34da78d33c2fca7dc3d2c49ae6d395d90c48c1 Mon Sep 17 00:00:00 2001 From: David Teigland 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