diff --git a/libfuse/lib/buffer.c b/libfuse/lib/buffer.c index 17a595c2..40e426ec 100644 --- a/libfuse/lib/buffer.c +++ b/libfuse/lib/buffer.c @@ -19,7 +19,7 @@ size_t fuse_buf_size(const struct fuse_bufvec *bufv) { size_t i; - size_t size = 0; + size_t size = 0; for (i = 0; i < bufv->count; i++) { if (bufv->buf[i].size == SIZE_MAX) @@ -229,8 +229,8 @@ static ssize_t fuse_buf_copy_one(const struct fuse_buf *dst, size_t dst_off, int dst_is_fd = dst->flags & FUSE_BUF_IS_FD; if (!src_is_fd && !dst_is_fd) { - void *dstmem = dst->mem + dst_off; - void *srcmem = src->mem + src_off; + char *dstmem = dst->mem + dst_off; + char *srcmem = src->mem + src_off; if (dstmem != srcmem) { if (dstmem + len <= srcmem || srcmem + len <= dstmem) diff --git a/libfuse/lib/fuse.c b/libfuse/lib/fuse.c index 77e437a7..9a031450 100644 --- a/libfuse/lib/fuse.c +++ b/libfuse/lib/fuse.c @@ -2638,6 +2638,7 @@ static void fuse_lib_getattr(fuse_req_t req, fuse_ino_t ino, memset(&buf, 0, sizeof(buf)); + path = NULL; err = (((fi == NULL) || (f->fs->op.fgetattr == NULL)) ? get_path(f,ino,&path) : get_path_nullok(f,ino,&path)); @@ -2711,9 +2712,10 @@ static void fuse_lib_setattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, memset(&buf, 0, sizeof(buf)); + path = NULL; err = ((fi == NULL) ? get_path(f,ino,&path) : - get_path_nullok(f, ino, &path)); + get_path_nullok(f,ino,&path)); if (!err) { struct fuse_intr_data d; diff --git a/src/policy_cache.cpp b/src/policy_cache.cpp index beca4621..b9d20ab8 100644 --- a/src/policy_cache.cpp +++ b/src/policy_cache.cpp @@ -38,11 +38,15 @@ PolicyCache::Value::Value() PolicyCache::PolicyCache(void) : timeout(DEFAULT_TIMEOUT) { + pthread_mutex_init(&_lock,NULL); } void PolicyCache::erase(const char *fusepath_) { + if(timeout == 0) + return; + pthread_mutex_lock(&_lock); _cache.erase(fusepath_); @@ -56,6 +60,9 @@ PolicyCache::cleanup(const int prob_) uint64_t now; map::iterator i; + if(timeout == 0) + return; + if(rand() % prob_) return;