summaryrefslogtreecommitdiff
path: root/source3/smbd/files.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-11-18 19:06:51 +0000
committerJeremy Allison <jra@samba.org>1998-11-18 19:06:51 +0000
commitbb9622bfa6bbbe74a6e4c032cf81501bcbff999d (patch)
tree05f0a983cee1fdeeb979d4d82b052b7cc4d7c90b /source3/smbd/files.c
parent8b1e3580bd5b3e0846389fc0480bd3c6e0606c36 (diff)
downloadsamba-bb9622bfa6bbbe74a6e4c032cf81501bcbff999d.tar.gz
samba-bb9622bfa6bbbe74a6e4c032cf81501bcbff999d.tar.bz2
samba-bb9622bfa6bbbe74a6e4c032cf81501bcbff999d.zip
Fixed crash bug which was assuming that fd_ptr was always non-null
(which is not the case with open directories). Jeremy. (This used to be commit c154b1601f5891d664fc538ec8874fa8ef2061e6)
Diffstat (limited to 'source3/smbd/files.c')
-rw-r--r--source3/smbd/files.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/source3/smbd/files.c b/source3/smbd/files.c
index e58c3834a0..3a41c83766 100644
--- a/source3/smbd/files.c
+++ b/source3/smbd/files.c
@@ -263,6 +263,7 @@ files_struct *file_find_dit(SMB_DEV_T dev, SMB_INO_T inode, struct timeval *tval
for (fsp=Files;fsp;fsp=fsp->next,count++) {
if (fsp->open &&
+ fsp->fd_ptr != NULL &&
fsp->fd_ptr->dev == dev &&
fsp->fd_ptr->inode == inode &&
(tval ? (fsp->open_time.tv_sec == tval->tv_sec) : True ) &&
@@ -287,6 +288,7 @@ files_struct *file_find_di_first(SMB_DEV_T dev, SMB_INO_T inode)
for (fsp=Files;fsp;fsp=fsp->next) {
if (fsp->open &&
+ fsp->fd_ptr != NULL &&
fsp->fd_ptr->dev == dev &&
fsp->fd_ptr->inode == inode )
return fsp;
@@ -305,6 +307,7 @@ files_struct *file_find_di_next(files_struct *start_fsp)
for (fsp = start_fsp->next;fsp;fsp=fsp->next) {
if (fsp->open &&
+ fsp->fd_ptr != NULL &&
fsp->fd_ptr->dev == start_fsp->fd_ptr->dev &&
fsp->fd_ptr->inode == start_fsp->fd_ptr->inode )
return fsp;
@@ -337,7 +340,7 @@ void file_sync_all(connection_struct *conn)
for (fsp=Files;fsp;fsp=next) {
next=fsp->next;
- if (fsp->open && conn == fsp->conn) {
+ if (fsp->open && (conn == fsp->conn) && (fsp->fd_ptr != NULL)) {
sync_file(conn,fsp);
}
}
@@ -371,7 +374,7 @@ void file_free(files_struct *fsp)
string_free(&fsp->fsp_name);
- if (fsp->fd_ptr && fsp->fd_ptr->ref_count == 0) {
+ if ((fsp->fd_ptr != NULL) && fsp->fd_ptr->ref_count == 0) {
fd_ptr_free(fsp->fd_ptr);
}