From 2bf3f8c5882961fe1ba27279d07b81c17fa82362 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 30 Sep 2012 20:50:16 -0700 Subject: [PATCH] filestore: check lseek64 return value CID 716862: Other violation (CHECKED_RETURN) At (3): Calling function "lseek64(to, dstoff, 0)" without checking return value. This library function may fail and return an error code. Signed-off-by: Sage Weil --- src/os/FileStore.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 25fb984e4643e..87b21c4ef38c4 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -3429,8 +3429,20 @@ int FileStore::_do_copy_range(int from, int to, uint64_t srcoff, uint64_t len, u { dout(20) << "_do_copy_range " << srcoff << "~" << len << " to " << dstoff << dendl; int r = 0; - ::lseek64(from, srcoff, SEEK_SET); - ::lseek64(to, dstoff, SEEK_SET); + int64_t actual; + + actual = ::lseek64(from, srcoff, SEEK_SET); + if (actual != (int64_t)srcoff) { + r = errno; + derr << "lseek64 to " << srcoff << " got " << cpp_strerror(r) << dendl; + return r; + } + actual = ::lseek64(to, dstoff, SEEK_SET); + if (actual != (int64_t)srcoff) { + r = errno; + derr << "lseek64 to " << dstoff << " got " << cpp_strerror(r) << dendl; + return r; + } loff_t pos = srcoff; loff_t end = srcoff + len; -- 2.39.5