Commit edccab35 authored by Marc Vef's avatar Marc Vef
Browse files

Merge branch 'fixes' into 'master'

Code analysis fixes

See merge request !1
parents a47dd48f 8748d57c
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -16,9 +16,15 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
# required packages
find_package(FUSE3 REQUIRED)
# boost dependencies, system is required for filesystem #TODO VERSION UNTESTED. I USE 1.62
find_package(Boost 1.56.0 COMPONENTS system filesystem serialization)
find_package(Boost 1.62 REQUIRED COMPONENTS system filesystem serialization)

include_directories(${FUSE3_INCLUDE_DIR} include/)
set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h)
set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp
    src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h
    src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp
    src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp
    src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp
    src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp
    src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h)
add_executable(adafs ${SOURCE_FILES} src/main.cpp)
target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization -pg)
+3 −3
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ int chk_access(const Metadata& md, int mask) {
    //check user leftmost 3 bits for rwx in md->mode
    if (md.uid() == fuse_get_context()->uid) {
        // Because mode comes only with the first 3 bits used, the user bits have to be shifted to the right to compare
        if ((mask & md.mode() >> 6) == (unsigned int) mask)
        if ((mask & md.mode() >> 6) == static_cast<unsigned int>(mask))
            return 0;
        else
            return -EACCES;
@@ -31,7 +31,7 @@ int chk_access(const Metadata& md, int mask) {

    //check group middle 3 bits for rwx in md->mode
    if (md.gid() == fuse_get_context()->gid) {
        if ((mask & md.mode() >> 3) == (unsigned int) mask)
        if ((mask & md.mode() >> 3) == static_cast<unsigned int>(mask))
            return 0;
        else
            return -EACCES;
@@ -39,7 +39,7 @@ int chk_access(const Metadata& md, int mask) {

    //check other rightmost 3 bits for rwx in md->mode.
    // Because they are the rightmost bits they don't need to be shifted
    if ((mask & md.mode()) == (unsigned int) mask) {
    if ((mask & md.mode()) == static_cast<unsigned int>(mask)) {
        return 0;
    }

+5 −6
Original line number Diff line number Diff line
@@ -64,12 +64,11 @@ int read_dentries(vector<string>& dir, const unsigned long hash) {
    // shortcut if path is empty = no files in directory
    if (bfs::is_empty(path)) return 0;

    // Below can be simplified with a C++11 range based loop? But how? :( XXX
    bfs::directory_iterator end_dir_it;
    for (bfs::directory_iterator dir_it(path); dir_it != end_dir_it; ++dir_it) {
        const bfs::path cp = (*dir_it);
        dir.push_back(cp.filename().string());
    auto dir_it = bfs::directory_iterator(path);
    for (const auto& it : dir_it) {
        dir.push_back(it.path().filename().string());
    }

    return 0;
}

+3 −3
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ int init_chunk_space(const unsigned long hash) {
    chnk_path /= "data"s;
    bfs::ofstream ofs{chnk_path};

    return bfs::exists(chnk_path);
    return static_cast<int>(bfs::exists(chnk_path));
}
/**
 * Remove the directory in the chunk dir of a file.
@@ -39,5 +39,5 @@ int destroy_chunk_space(const unsigned long hash) {
    // create chunk dir
    bfs::remove_all(chnk_path);

    return !bfs::exists(chnk_path);
    return static_cast<int>(!bfs::exists(chnk_path));
}
+5 −5
Original line number Diff line number Diff line
@@ -41,11 +41,11 @@ int adafs_chmod(const char* p, mode_t mode, struct fuse_file_info* fi) {
    auto md = make_shared<Metadata>();
    auto err = get_metadata(*md, path);

    if (err) return err;
    if (err != 0) return err;

    // for change_access only the uid matters AFAIK
    err = chk_uid(*md);
    if (err) return err;
    if (err != 0) return err;

    return change_access(*md, mode, path);
}
@@ -64,11 +64,11 @@ int adafs_chown(const char* p, uid_t uid, gid_t gid, struct fuse_file_info* fi)
    auto md = make_shared<Metadata>();
    auto err = get_metadata(*md, path);

    if (err) return err;
    if (err != 0) return err;

    // any ownership change requires the user of the object
    err = chk_uid(*md);
    if (err) return err;
    if (err != 0) return err;

    return change_permissions(*md, uid, gid, path);
}
Loading