1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

Makefile: Added AIX targets from Ole Holm Nielsen <Ole.H.Nielsen@uni-c.dk>

chgpasswd.c:	Added Samba/GPL notice (for obvious reasons).
clitar.c:		Updated Copyright date to include 1997 (for obvious reasons).
getsmbpass.c:	Updated Copyright date to include 1997 (for obvious reasons).
includes.h:		Added stropts for solaris.
loadparm.c:		Changed comment for hide files option.
nameconf.c:		Updated Copyright date to include 1997 (for obvious reasons).
nmbd.c:			Updated Copyright date to include 1997 (for obvious reasons).
pcap.c:			Updated Copyright date to include 1997 (for obvious reasons).
proto.h:		Re-added accidentaly deleted smb_shm_ calls.
quotas.c:		Added AIX quota patch from Ole Holm Nielsen <ohnielse@fysik.dtu.dk>
server.c:		Optimization on calling is_hidden_path. Updated Copyrights.
smb.h:			Changed DEFAULT_FILES_TO_HIDE from  "*/.*" to ".*".
smbpass.c:		Updated Copyright date to include 1997 (for obvious reasons).
ufc.c:			Updated Copyright date to include 1997 (for obvious reasons).
util.c:			Added last component code to is_in_path().
Jeremy (jallison@whistle.com)
This commit is contained in:
Samba Release Account
-
parent b45fc6388f
commit 9385ae1005
15 changed files with 91 additions and 46 deletions

View File

@ -2,7 +2,7 @@
Unix SMB/Netbios implementation.
Version 1.9.
Tar Extensions
Copyright (C) Ricky Poulten 1995
Copyright (C) Ricky Poulten 1995-1997
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -291,6 +291,7 @@ typedef unsigned short mode_t;
#include <arpa/inet.h>
#include <rpcsvc/ypclnt.h>
#include <termios.h>
#include <sys/stropts.h>
#ifndef USE_LIBDES
#include <crypt.h>
#endif /* USE_LIBDES */

View File

@ -736,6 +736,9 @@ BOOL smb_shm_unlock_hash_entry( unsigned int entry );
BOOL smb_shm_get_usage(int *bytes_free,
int *bytes_used,
int *bytes_overhead);
smb_shm_offset_t smb_shm_alloc(int size);
smb_shm_offset_t smb_shm_addr2offset(void *addr);
smb_shm_offset_t smb_shm_get_userdef_off(void);
/*The following definitions come from smbencrypt.c */
@ -951,7 +954,6 @@ void ajt_panic(void);
char *readdirname(void *p);
BOOL is_hidden_path(int snum, char *name);
BOOL is_vetoed_name(int snum, char *name);
BOOL is_in_path(char *name, char *namelist);
BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type);
int file_lock(char *name,int timeout);
void file_unlock(int fd);

View File

@ -916,6 +916,6 @@ enum case_handling {CASE_LOWER,CASE_UPPER};
#define COPYBUF_SIZE (8*1024)
/* service-based parameter - files are not visible, but are accessible */
#define DEFAULT_FILES_TO_HIDE "*/.*"
#define DEFAULT_FILES_TO_HIDE ".*"
/* _SMB_H */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
/* Copyright (C) 1992-1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or

View File

@ -21,7 +21,7 @@
/*
* UFC-crypt: ultra fast crypt(3) implementation
*
* Copyright (C) 1991, 1992, Free Software Foundation, Inc.
* Copyright (C) 1991-1997, Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public

View File

@ -3432,32 +3432,33 @@ char *readdirname(void *p)
return(dname);
}
/*
* Utility function used by is_hidden_path() and is_vetoed_name()
* to decide if the last component of a path matches a (possibly
* wildcarded) entry in a namelist.
*/
BOOL is_hidden_path(int snum, char *name)
static BOOL is_in_path(char *name, char *namelist)
{
return is_in_path(name, lp_hide_files(snum));
}
BOOL is_vetoed_name(int snum, char *name)
{
return is_in_path(name, lp_veto_files(snum));
}
BOOL is_in_path(char *name, char *namelist)
{
pstring last_component;
char *p;
char *nameptr = namelist;
char *name_end;
DEBUG(5, ("is_in_path: %s list: %s\n", name, namelist));
/* if we have no list it's obviously not in the path */
if((nameptr == NULL ) || (*nameptr == '\0'))
if((nameptr == NULL ) || ((nameptr != NULL) && (*nameptr == '\0')))
{
DEBUG(5,("is_in_path: no name list. return False\n"));
return False;
}
/* Get the last component of the unix name. */
p = strrchr(name, '/');
strncpy(last_component, p ? p : name, sizeof(last_component)-1);
last_component[sizeof(last_component)-1] = '\0';
/* now, we need to find the names one by one and check them
they can contain spaces and all sorts of stuff so we
separate them with of all things '\' which can never be in a filename
@ -3470,9 +3471,6 @@ BOOL is_in_path(char *name, char *namelist)
that unix_convert is called before check_path and dos_mode.
unix_convert changes, in the path, all dos '\'s to unix '/'s.
therefore, users might want to match against '/'s in the path,
and therefore '\' must be used as the separator.
the alternatives are:
1) move all check_path and dos_mode calls to before the
@ -3502,7 +3500,7 @@ BOOL is_in_path(char *name, char *namelist)
}
/* look for a match. */
if (mask_match(name, nameptr, case_sensitive, False))
if (mask_match(last_component, nameptr, case_sensitive, False))
{
DEBUG(5,("is_in_path: mask match succeeded\n"));
return True;
@ -3524,6 +3522,16 @@ BOOL is_in_path(char *name, char *namelist)
return False;
}
BOOL is_hidden_path(int snum, char *name)
{
return is_in_path(name, lp_hide_files(snum));
}
BOOL is_vetoed_name(int snum, char *name)
{
return is_in_path(name, lp_veto_files(snum));
}
/****************************************************************************
routine to do file locking
****************************************************************************/

View File

@ -2,7 +2,7 @@
Unix SMB/Netbios implementation.
Version 1.9.
NBT netbios routines and daemon - version 2
Copyright (C) David Chappell 1996
Copyright (C) David Chappell 1996-1997
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -491,7 +491,7 @@ static void usage(char *pname)
}
DEBUG(1,("%s netbios nameserver version %s started\n",timestring(),VERSION));
DEBUG(1,("Copyright Andrew Tridgell 1994\n"));
DEBUG(1,("Copyright Andrew Tridgell 1994-1997\n"));
get_myname(myhostname,NULL);

View File

@ -293,7 +293,7 @@ static service sDefault =
NULL, /* szMagicOutput */
NULL, /* szMangledMap */
NULL, /* szVetoFiles */
DEFAULT_FILES_TO_HIDE, /* szVetoFiles */
DEFAULT_FILES_TO_HIDE, /* szHideFiles */
NULL, /* comment */
NULL, /* force user */
NULL, /* force group */

View File

@ -1,7 +1,7 @@
#ifdef SMB_PASSWD
/*
* Unix SMB/Netbios implementation. Version 1.9. SMB parameters and setup
* Copyright (C) Andrew Tridgell 1992-1995 Modified by Jeremy Allison 1995.
* Copyright (C) Andrew Tridgell 1992-1997 Modified by Jeremy Allison 1995.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free

View File

@ -2,7 +2,7 @@
Unix SMB/Netbios implementation.
Version 1.9.
printcap parsing
Copyright (C) Karl Auer 1993,1994
Copyright (C) Karl Auer 1993-1997
Re-working by Martin Kiff, 1994

View File

@ -1,3 +1,24 @@
/*
Unix SMB/Netbios implementation.
Version 1.9.
Samba utility functions
Copyright (C) Andrew Tridgell 1992-1997
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* fork a child process to exec passwd and write to its
* tty to change a users password. This is running as the
* user who is attempting to change the password.
@ -38,22 +59,22 @@ extern int DEBUGLEVEL;
static int findpty(char **slave)
{
int master;
#ifdef SVR4
#if defined(SVR4) || defined(SUNOS5)
extern char *ptsname();
#else
#else /* defined(SVR4) || defined(SUNOS5) */
static char line[12];
void *dirp;
char *dpname;
#endif
#endif /* defined(SVR4) || defined(SUNOS5) */
#ifdef SVR4
#if defined(SVR4) || defined(SUNOS5)
if ((master = open("/dev/ptmx", O_RDWR)) >= 1) {
grantpt(master);
unlockpt(master);
*slave = ptsname(master);
return (master);
}
#else
#else /* defined(SVR4) || defined(SUNOS5) */
strcpy( line, "/dev/ptyXX" );
dirp = OpenDir(-1, "/dev", True);
@ -73,7 +94,7 @@ static int findpty(char **slave)
}
}
CloseDir(dirp);
#endif
#endif /* defined(SVR4) || defined(SUNOS5) */
return (-1);
}
@ -87,9 +108,9 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram)
#ifdef USE_SETRES
setresuid(0,0,0);
#else
#else /* USE_SETRES */
setuid(0);
#endif
#endif /* USE_SETRES */
/* Start new session - gets rid of controlling terminal. */
if (setsid() < 0) {
@ -103,15 +124,15 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram)
slavedev));
return(False);
}
#ifdef SVR4
#if defined(SVR4) || defined(SUNOS5)
ioctl(slave, I_PUSH, "ptem");
ioctl(slave, I_PUSH, "ldterm");
#else
#else /* defined(SVR4) || defined(SUNOS5) */
if (ioctl(slave,TIOCSCTTY,0) <0) {
DEBUG(3,("Error in ioctl call for slave pty\n"));
/* return(False); */
}
#endif
#endif /* defined(SVR4) || defined(SUNOS5) */
/* Close master. */
close(master);

View File

@ -367,7 +367,14 @@ DEBUG(5,("disk_quotas for path \"%s\" returning bsize %d, dfree %d, dsize %d\n"
#ifdef __FreeBSD__
#include <ufs/ufs/quota.h>
#else
#elif AIX
/* AIX quota patch from Ole Holm Nielsen <ohnielse@fysik.dtu.dk> */
#include <jfs/quota.h>
/* AIX 4.X: Rename members of the dqblk structure (ohnielse@fysik.dtu.dk) */
#define dqb_curfiles dqb_curinodes
#define dqb_fhardlimit dqb_ihardlimit
#define dqb_fsoftlimit dqb_isoftlimit
#else /* !__FreeBSD__ && !AIX */
#include <sys/quota.h>
#include <devnm.h>
#endif
@ -380,7 +387,7 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
uid_t euser_id;
int r;
struct dqblk D;
#ifndef __FreeBSD__
#if !defined(__FreeBSD__) && !defined(AIX)
char dev_disk[256];
struct stat S;
/* find the block device file */
@ -401,13 +408,17 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
if (setresuid(user_id,-1,-1))
DEBUG(5,("Unable to reset uid to %d\n", user_id));
}
#else
#else /* USE_SETRES */
#if defined(__FreeBSD__)
r= quotactl(path,Q_GETQUOTA,euser_id,(char *) &D);
#else
#elif defined(AIX)
/* AIX has both USER and GROUP quotas:
Get the USER quota (ohnielse@fysik.dtu.dk) */
r= quotactl(path,QCMD(Q_GETQUOTA,USRQUOTA),euser_id,(char *) &D);
#else /* !__FreeBSD__ && !AIX */
r=quotactl(Q_GETQUOTA, dev_disk, euser_id, &D);
#endif
#endif
#endif /* !__FreeBSD__ && !AIX */
#endif /* USE_SETRES */
/* Use softlimit to determine disk space, except when it has been exceeded */
*bsize = 1024;

View File

@ -224,7 +224,9 @@ int dos_mode(int cnum,char *path,struct stat *sbuf)
result |= aHIDDEN;
}
if (is_hidden_path(SNUM(cnum), path))
/* Optimization : Only call is_hidden_path if it's not already
hidden. */
if (!(result & aHIDDEN) && is_hidden_path(SNUM(cnum), path))
{
result |= aHIDDEN;
}
@ -4189,7 +4191,7 @@ static void usage(char *pname)
reopen_logs();
DEBUG(2,("%s smbd version %s started\n",timestring(),VERSION));
DEBUG(2,("Copyright Andrew Tridgell 1992-1995\n"));
DEBUG(2,("Copyright Andrew Tridgell 1992-1997\n"));
#ifndef NO_GETRLIMIT
#ifdef RLIMIT_NOFILE