diff options
author | Shehjar Tikoo <shehjart@gluster.com> | 2009-06-03 01:05:34 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2009-06-08 06:31:55 -0700 |
commit | 4c0b91a5a045e3f03a049320d26542ab9fec4745 (patch) | |
tree | fc99963edbcf4da8d3b07f1915f39cf6754fb385 /libglusterfs/src/call-stub.c | |
parent | 08d46effee3b5e07b89a3a04251714383cf02eec (diff) |
libglusterfs: Add empty and NULL dirents list checks
These checks are needed in case a higher layer intends to
delink the dirent list and passes a NULL pointer to
fop_readdir_cbk_stub for the entries parameter.
Consequently, the gf_dirent_free must guard against an empty list
because the stub that is passed to it mgiht have an empty
dirent list.
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
Diffstat (limited to 'libglusterfs/src/call-stub.c')
-rw-r--r-- | libglusterfs/src/call-stub.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libglusterfs/src/call-stub.c b/libglusterfs/src/call-stub.c index d58a2c7f963..0fd0b3d5a47 100644 --- a/libglusterfs/src/call-stub.c +++ b/libglusterfs/src/call-stub.c @@ -1992,6 +1992,12 @@ fop_readdir_cbk_stub (call_frame_t *frame, stub->args.readdir_cbk.op_errno = op_errno; INIT_LIST_HEAD (&stub->args.readdir_cbk.entries.list); + /* This check must come after the init of head above + * so we're sure the list is empty for list_empty. + */ + if (!entries) + goto out; + if (op_ret > 0) { list_for_each_entry (entry, &entries->list, list) { stub_entry = gf_dirent_for_name (entry->d_name); |