diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-04-15 13:26:25 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2022-04-15 13:38:28 +0100 |
commit | 480296911f442e16d3f81be8d1adf2902e07d734 (patch) | |
tree | c63ed207b86ac2f0113324e688e516eb9fccec93 /netfs/fuse | |
parent | Fix whitespace (diff) | |
download | netfs-480296911f442e16d3f81be8d1adf2902e07d734.tar.bz2 netfs-480296911f442e16d3f81be8d1adf2902e07d734.tar.xz netfs-480296911f442e16d3f81be8d1adf2902e07d734.zip |
Safe numeric conversions
Diffstat (limited to 'netfs/fuse')
-rw-r--r-- | netfs/fuse/fuseApp.cpp | 5 | ||||
-rw-r--r-- | netfs/fuse/fuseApp.h | 4 | ||||
-rw-r--r-- | netfs/fuse/fuseDirs.cpp | 3 | ||||
-rw-r--r-- | netfs/fuse/fuseFiles.cpp | 17 | ||||
-rw-r--r-- | netfs/fuse/fuseFiles.h | 2 | ||||
-rw-r--r-- | netfs/fuse/fuseMisc.cpp | 9 |
6 files changed, 22 insertions, 18 deletions
diff --git a/netfs/fuse/fuseApp.cpp b/netfs/fuse/fuseApp.cpp index b6d59b1..cfd9689 100644 --- a/netfs/fuse/fuseApp.cpp +++ b/netfs/fuse/fuseApp.cpp @@ -10,6 +10,7 @@ #include <cstring> #include <defaultMapper.h> #include <entCache.h> +#include <numeric.h> #include <safeMapFind.h> #include <slicer/slicer.h> #include <uriParse.h> @@ -19,7 +20,7 @@ namespace AdHoc { template class CallCacheable<struct stat, std::string>; } -NetFS::FuseApp::FuseApp(Ice::StringSeq && a) : iceArgs(std::move(a)), sessionOpened(false), openHandleId(0) { } +NetFS::FuseApp::FuseApp(Ice::StringSeq && a) : iceArgs(std::move(a)) { } NetFS::FuseApp::~FuseApp() { @@ -296,6 +297,6 @@ NetFS::ReqEnv NetFS::FuseApp::reqEnv() { struct fuse_context * c = fuse_get_context(); - const auto t = converter.mapper->mapFileSystem(c->uid, c->gid); + const auto t = converter.mapper->mapFileSystem(safe {c->uid}, safe {c->gid}); return {t.username, t.groupname}; } diff --git a/netfs/fuse/fuseApp.h b/netfs/fuse/fuseApp.h index 9eafb7f..187e2ba 100644 --- a/netfs/fuse/fuseApp.h +++ b/netfs/fuse/fuseApp.h @@ -103,13 +103,13 @@ namespace NetFS { NetFS::VolumePrxPtr volume; NetFS::ServicePrxPtr service; Glacier2::SessionPrxPtr session; - bool sessionOpened; + bool sessionOpened {false}; std::string mountPoint; OpenDirs openDirs; OpenFiles openFiles; - int openHandleId; + int openHandleId {0}; EntryTypeConverter converter; diff --git a/netfs/fuse/fuseDirs.cpp b/netfs/fuse/fuseDirs.cpp index b03282e..bc13cd1 100644 --- a/netfs/fuse/fuseDirs.cpp +++ b/netfs/fuse/fuseDirs.cpp @@ -1,6 +1,7 @@ #include "fuseDirs.h" #include <entCache.h> #include <lockHelpers.h> +#include <numeric.h> namespace NetFS { FuseApp::OpenDir::OpenDir(DirectoryPrxPtr r, std::string p) : remote(std::move(r)), path(std::move(p)) { } @@ -75,7 +76,7 @@ namespace NetFS { FuseApp::mkdir(const char * p, mode_t m) { try { - volume->mkdir(reqEnv(), p, m); + volume->mkdir(reqEnv(), p, safe {m}); return 0; } catch (SystemError & e) { diff --git a/netfs/fuse/fuseFiles.cpp b/netfs/fuse/fuseFiles.cpp index 8014732..3d23338 100644 --- a/netfs/fuse/fuseFiles.cpp +++ b/netfs/fuse/fuseFiles.cpp @@ -4,6 +4,7 @@ #include <cstring> #include <entCache.h> #include <mutex> +#include <numeric.h> namespace NetFS { FuseApp::OpenFile::WriteState::WriteState() : future(promise.get_future().share()) { } @@ -67,7 +68,7 @@ namespace NetFS { FuseApp::create(const char * p, mode_t m, struct fuse_file_info * fi) { try { - auto remote = volume->create(reqEnv(), p, fi->flags, m); + auto remote = volume->create(reqEnv(), p, fi->flags, safe {m}); setProxy<OpenFilePtr>(fi->fh, remote, p, fi->flags); return 0; } @@ -143,20 +144,20 @@ namespace NetFS { FuseApp::read(const char *, char * buf, size_t s, off_t o, struct fuse_file_info * fi) { try { - auto cpy = [buf](const auto && data) { + auto cpy = [buf](const auto && data) -> int { memcpy(buf, &data.front(), data.size()); - return data.size(); + return safe {data.size()}; }; auto of = getProxy<OpenFilePtr>(fi->fh); auto remote = of->remote; if (fcr->Async) { auto p = waitOnWriteRangeAndThen<std::future<Buffer>>(s, o, of, [o, s, &remote](const auto &) { - return remote->readAsync(o, s); + return remote->readAsync(o, safe {s}); }); return cpy(p.get()); } else { - return cpy(remote->read(o, s)); + return cpy(remote->read(o, safe {s})); } } catch (SystemError & e) { @@ -191,9 +192,9 @@ namespace NetFS { }); } else { - remote->write(o, s, Buffer(buf, buf + s)); + remote->write(o, safe {s}, Buffer(buf, buf + s)); } - return s; + return safe {s}; } catch (SystemError & e) { return -e.syserrno; @@ -211,7 +212,7 @@ namespace NetFS { auto remote_out = of_out->remote; of_in->wait(); of_out->wait(); - return remote_in->copyrange(remote_out, offset_in, offset_out, size, flags); + return remote_in->copyrange(remote_out, offset_in, offset_out, safe {size}, flags); } catch (SystemError & e) { return -e.syserrno; diff --git a/netfs/fuse/fuseFiles.h b/netfs/fuse/fuseFiles.h index 9143836..16ded5e 100644 --- a/netfs/fuse/fuseFiles.h +++ b/netfs/fuse/fuseFiles.h @@ -22,7 +22,7 @@ namespace NetFS { std::promise<void> promise; std::shared_future<void> future; }; - using BGs = boost::icl::interval_map<Ice::Long, std::shared_ptr<WriteState>>; + using BGs = boost::icl::interval_map<size_t, std::shared_ptr<WriteState>>; static BGs::interval_type range(off_t, size_t); BGs bg; mutable std::shared_mutex _lock; diff --git a/netfs/fuse/fuseMisc.cpp b/netfs/fuse/fuseMisc.cpp index 36a695b..8069234 100644 --- a/netfs/fuse/fuseMisc.cpp +++ b/netfs/fuse/fuseMisc.cpp @@ -1,6 +1,7 @@ #include "fuseApp.h" #include <cstring> #include <entCache.h> +#include <numeric.h> int NetFS::FuseApp::access(const char * p, int a) @@ -12,7 +13,7 @@ int NetFS::FuseApp::chmod(const char * p, mode_t m, fuse_file_info *) { try { - volume->chmod(reqEnv(), p, m); + volume->chmod(reqEnv(), p, safe {m}); return 0; } catch (NetFS::SystemError & e) { @@ -24,7 +25,7 @@ int NetFS::FuseApp::chown(const char * p, uid_t u, gid_t g, fuse_file_info *) { try { - volume->chown(reqEnv(), p, u, g); + volume->chown(reqEnv(), p, safe {u}, safe {g}); return 0; } catch (NetFS::SystemError & e) { @@ -48,7 +49,7 @@ int NetFS::FuseApp::mknod(const char * p, mode_t mode, dev_t dev) { try { - volume->mknod(reqEnv(), p, mode, dev); + volume->mknod(reqEnv(), p, safe {mode}, safe {dev}); return 0; } catch (NetFS::SystemError & e) { @@ -86,7 +87,7 @@ int NetFS::FuseApp::rename(const char * p1, const char * p2, unsigned int flags) { try { - volume->rename(reqEnv(), p1, p2, flags); + volume->rename(reqEnv(), p1, p2, safe {flags}); return 0; } catch (NetFS::SystemError & e) { |