summaryrefslogtreecommitdiffstats
path: root/xlators/storage
diff options
context:
space:
mode:
authorSunny Kumar <sunkumar@redhat.com>2018-10-30 20:22:41 +0530
committerAmar Tumballi <amarts@redhat.com>2018-11-03 05:30:41 +0000
commit91cb12be96fb543ee9c0b47bfa8792786286aff7 (patch)
treec07fb2d35a62538fb986852d95d8e6d9e893ccc0 /xlators/storage
parenta665120d77072cfc8daca88d717055132a178be1 (diff)
posix : fix coverity issues in posix-entry-ops.c
This patch fixes CID: 1. 1389762 : Explicit null dereferenced 2. 1390462 : Argument cannot be negative 3. 1124552 : Explicit null dereferenced 4. 1356522 : Argument cannot be negative updates: bz#789278 Change-Id: I1262f3b4b61a6e65bb34884f46df9a24b8dd03f1 Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
Diffstat (limited to 'xlators/storage')
-rw-r--r--xlators/storage/posix/src/posix-entry-ops.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/xlators/storage/posix/src/posix-entry-ops.c b/xlators/storage/posix/src/posix-entry-ops.c
index 1888de7db9b..ca5b8b1d4bf 100644
--- a/xlators/storage/posix/src/posix-entry-ops.c
+++ b/xlators/storage/posix/src/posix-entry-ops.c
@@ -211,7 +211,11 @@ posix_lookup(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)
MAKE_INODE_HANDLE(real_path, this, loc, &buf);
} else {
MAKE_ENTRY_HANDLE(real_path, par_path, this, loc, &buf);
-
+ if (!real_path || !par_path) {
+ op_ret = -1;
+ op_errno = ESTALE;
+ goto out;
+ }
if (gf_uuid_is_null(loc->inode->gfid)) {
op_ret = posix_gfid_heal(this, real_path, loc, xdata);
if (op_ret < 0) {
@@ -787,6 +791,8 @@ posix_mkdir(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
}
op_errno = dict_set_int8(xdata_rsp, GF_PREOP_CHECK_FAILED, 1);
+ if (op_errno < 0)
+ op_errno = errno;
goto out;
}
@@ -1223,7 +1229,7 @@ posix_unlink(call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag,
unwind_dict = dict_new();
if (!unwind_dict) {
- op_errno = -ENOMEM;
+ op_errno = ENOMEM;
op_ret = -1;
goto out;
}
@@ -2255,6 +2261,12 @@ posix_put(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
MAKE_ENTRY_HANDLE(real_path, par_path, this, loc, &stbuf);
+ if (!real_path || !par_path) {
+ op_ret = -1;
+ op_errno = ESTALE;
+ goto out;
+ }
+
op_ret = posix_pstat(this, loc->parent, loc->pargfid, par_path, &preparent,
_gf_false);
if (op_ret < 0) {