diff options
author | Jeremy Allison <jra@samba.org> | 1998-11-18 19:06:51 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1998-11-18 19:06:51 +0000 |
commit | c154b1601f5891d664fc538ec8874fa8ef2061e6 (patch) | |
tree | c429c9a3d926f4fea98dc7c81a12128977b09c35 /source/smbd/files.c | |
parent | 05f2d78c8ee1dc0516d9e1076e0954ee2c2cd4b2 (diff) | |
download | samba-c154b1601f5891d664fc538ec8874fa8ef2061e6.tar.gz samba-c154b1601f5891d664fc538ec8874fa8ef2061e6.tar.xz samba-c154b1601f5891d664fc538ec8874fa8ef2061e6.zip |
Fixed crash bug which was assuming that fd_ptr was always non-null
(which is not the case with open directories).
Jeremy.
Diffstat (limited to 'source/smbd/files.c')
-rw-r--r-- | source/smbd/files.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source/smbd/files.c b/source/smbd/files.c index e58c3834a00..3a41c837669 100644 --- a/source/smbd/files.c +++ b/source/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); } |