Skip to content

Commit 57d875d

Browse files
committed
FST: Fix undefinied behaviour due to order of evaluation of the method
parameters which was leading to files not having the checksum value set.
1 parent bdac7b9 commit 57d875d

2 files changed

Lines changed: 5 additions & 4 deletions

File tree

fst/XrdFstOfsFile.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3442,8 +3442,9 @@ XrdFstOfsFile::VerifyChecksum()
34423442
"fxid=%08llx errno=%d", mFileId, errno);
34433443
}
34443444

3445-
if (io->attrSet("user.eos.checksum", mCheckSum->GetBinChecksum(checksumlen),
3446-
checksumlen)) {
3445+
const char* ptr = mCheckSum->GetBinChecksum(checksumlen);
3446+
3447+
if (io->attrSet("user.eos.checksum", ptr, checksumlen)) {
34473448
eos_err("msg=\"unable to set extended attr <eos.checksum> \" "
34483449
"fxid=%08llx errno=%d", mFileId, errno);
34493450
}

fst/storage/Verify.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,8 @@ Storage::Verify()
241241

242242
// Update the extended attributes
243243
if (io) {
244-
(void)io->attrSet("user.eos.checksum", checksummer->GetBinChecksum(checksumlen),
245-
checksumlen);
244+
const char* ptr = checksummer->GetBinChecksum(checksumlen);
245+
(void)io->attrSet("user.eos.checksum", ptr, checksumlen);
246246
(void)io->attrSet("user.eos.checksumtype", checksummer->GetName(),
247247
strlen(checksummer->GetName()));
248248
(void)io->attrSet("user.eos.filecxerror", "0", 1);

0 commit comments

Comments
 (0)