summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-07-22 13:59:19 +0000
committerJeremy Allison <jra@samba.org>1998-07-22 13:59:19 +0000
commitf5866fd4ba8da9acde87c7f9da8f1a242540e287 (patch)
treec7e80a6b7321319b683e4d730b0de7e6f5ed2ff9 /source3/smbd
parent781c9e50820e3bc2b11e15bbff2f16b6ad74f26a (diff)
downloadsamba-f5866fd4ba8da9acde87c7f9da8f1a242540e287.tar.gz
samba-f5866fd4ba8da9acde87c7f9da8f1a242540e287.tar.bz2
samba-f5866fd4ba8da9acde87c7f9da8f1a242540e287.zip
Fixed bug found by Richard Sharpe. After increasing files_struct size by
MAX_OPEN_DIRECTORIES for nttrans I forgot to update the code that enumerates the array. Created new MAX_FNUMS in local.h, changed all code that iterates through the files_struct array to use this. (sorry Richard). Jeremy. (This used to be commit 339b10222269d71c7a493cc08b7b1bfd35fd55fc)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/ipc.c2
-rw-r--r--source3/smbd/reply.c4
-rw-r--r--source3/smbd/server.c18
3 files changed, 12 insertions, 12 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index cbacca3b83..8b06fc91a3 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -1983,7 +1983,7 @@ static BOOL api_PrintJobInfo(int cnum,uint16 vuid,char *param,char *data,
become_root(True);
- for (i=0;i<MAX_OPEN_FILES;i++)
+ for (i=0;i<MAX_FNUMS;i++)
if (Files[i].open && Files[i].print_file)
{
pstring wd;
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index a0d1775b21..f6fd2ccd90 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1490,7 +1490,7 @@ int reply_ulogoffX(char *inbuf,char *outbuf,int length,int bufsize)
open by this user */
if ((vuser != 0) && (lp_security() != SEC_SHARE)) {
int i;
- for (i=0;i<MAX_OPEN_FILES;i++) {
+ for (i=0;i<MAX_FNUMS;i++) {
files_struct *fsp = &Files[i];
if ((fsp->vuid == vuid) && fsp->open) {
if(!fsp->is_directory)
@@ -2396,7 +2396,7 @@ int reply_flush(char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
if (fnum == 0xFFFF)
{
int i;
- for (i=0;i<MAX_OPEN_FILES;i++)
+ for (i=0;i<MAX_FNUMS;i++)
if (OPEN_FNUM(i))
sync_file(i);
}
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 98f65ce6e9..9df2ed37bb 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -67,7 +67,7 @@ extern int dcelogin_atmost_once;
extern DOM_SID global_machine_sid;
connection_struct Connections[MAX_CONNECTIONS];
-files_struct Files[MAX_OPEN_FILES+MAX_OPEN_DIRECTORIES];
+files_struct Files[MAX_FNUMS];
/*
* Indirection for file fd's. Needed as POSIX locking
@@ -3145,7 +3145,7 @@ global_oplocks_open = %d\n", timestring(), dev, inode, global_oplocks_open));
/* We need to search the file open table for the
entry containing this dev and inode, and ensure
we have an oplock on it. */
- for( fnum = 0; fnum < MAX_OPEN_FILES; fnum++)
+ for( fnum = 0; fnum < MAX_FNUMS; fnum++)
{
if(OPEN_FNUM(fnum))
{
@@ -4002,14 +4002,14 @@ int find_free_file(void )
increases the chance that the errant client will get an error rather
than causing corruption */
if (first_file == 0) {
- first_file = (getpid() ^ (int)time(NULL)) % MAX_OPEN_FILES;
+ first_file = (getpid() ^ (int)time(NULL)) % MAX_FNUMS;
if (first_file == 0) first_file = 1;
}
- if (first_file >= MAX_OPEN_FILES)
+ if (first_file >= MAX_FNUMS)
first_file = 1;
- for (i=first_file;i<MAX_OPEN_FILES;i++)
+ for (i=first_file;i<MAX_FNUMS;i++)
if (!Files[i].open && !Files[i].reserved) {
memset(&Files[i], 0, sizeof(Files[i]));
first_file = i+1;
@@ -4035,7 +4035,7 @@ int find_free_file(void )
* files batch oplocked for quite a long time
* after they have finished with them.
*/
- for (i=first_file;i<MAX_OPEN_FILES;i++) {
+ for (i=first_file;i<MAX_FNUMS;i++) {
if(attempt_close_oplocked_file( &Files[i])) {
memset(&Files[i], 0, sizeof(Files[i]));
first_file = i+1;
@@ -4044,7 +4044,7 @@ int find_free_file(void )
}
}
- for (i=1;i<MAX_OPEN_FILES;i++) {
+ for (i=1;i<MAX_FNUMS;i++) {
if(attempt_close_oplocked_file( &Files[i])) {
memset(&Files[i], 0, sizeof(Files[i]));
first_file = i+1;
@@ -4487,7 +4487,7 @@ close all open files for a connection
static void close_open_files(int cnum)
{
int i;
- for (i=0;i<MAX_OPEN_FILES;i++)
+ for (i=0;i<MAX_FNUMS;i++)
if( Files[i].cnum == cnum && Files[i].open) {
if(Files[i].is_directory)
close_directory(i);
@@ -5367,7 +5367,7 @@ static void init_structs(void )
string_init(&Connections[i].origpath,"");
}
- for (i=0;i<MAX_OPEN_FILES;i++)
+ for (i=0;i<MAX_FNUMS;i++)
{
Files[i].open = False;
string_init(&Files[i].name,"");