Fix checks after _open() calls to make sure to use the
filehandle only if open returns '0'.
Fix for:
CID
1128395 (#1 of 1): Use after close (USE_AFTER_FREE)
pass_closed_arg: Passing closed handle this->fd as an argument
to pwrite.
CID
1128396 (#1 of 2): Use after close (USE_AFTER_FREE)
pass_closed_arg: Passing closed handle this->fd as an argument
to read_header.
CID
1128397 (#1 of 1): Use after close (USE_AFTER_FREE)
pass_closed_arg: Passing closed handle this->fd as an argument
to read_header.
CID
1128398 (#1 of 1): Use after close (USE_AFTER_FREE)
pass_closed_arg: Passing closed handle this->fd as an argument
to read_header.
CID
1128400 (#1 of 1): Use after close (USE_AFTER_FREE)
pass_closed_arg: Passing closed handle this->fd as an argument
to read_header.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
int ret;
ret = _open(false, false);
- if (ret < 0)
+ if (ret)
goto done;
ret = read_header();
dout(2) << "create " << fn << " fsid " << fsid << dendl;
ret = _open(true, true);
- if (ret < 0)
+ if (ret)
goto done;
// write empty header
int FileJournal::peek_fsid(uuid_d& fsid)
{
int r = _open(false, false);
- if (r < 0)
+ if (r)
return r;
r = read_header();
if (r < 0)
uint64_t next_seq = fs_op_seq + 1;
int err = _open(false);
- if (err < 0)
+ if (err)
return err;
// assume writeable, unless...
int FileJournal::dump(ostream& out)
{
+ int err = 0;
+
dout(10) << "dump" << dendl;
- _open(false, false);
+ err = _open(false, false);
+ if (err)
+ return err;
- int err = read_header();
+ err = read_header();
if (err < 0)
return err;