mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
Makefile.in: Fixed bug with continuation line causing proto to fail.
Added $(PROGS) $(SPROGS) as targets for make clean. acconfig.h: Added HAVE_IRIX_SPECIFIC_CAPABILITIES. configure.in: Added sys/capability.h header check. Added function checks for srandom random srand rand. Added HAVE_IRIX_SPECIFIC_CAPABILITIES test. includes.h: Added #include <sys/capability.h>. ntdomain.h: Moved struct acct_info into here from smb.h smb.h: Added KERNEL_OPLOCK_CAPABILITY define. Moved enum action_type into rpcclient.h Moved struct cli_state into client.h Moved struct nt_client_info, struct tar_client_info, struct client_info into rpcclient.h lib/genrand.c: Changed to use sys_random() & friends. lib/smbrun.c: Lose capabilities after fork. lib/system.c: Added set_process_capability(), set_inherited_process_capability() sys_random(), sys_srandom(). lib/util.c: Added Ander's EFBIG lock check to fcntl_lock for 64 bit access to an 32 bit mounted NFS filesystem. nmbd/nmbd.c: Changed to use sys_random() & friends. nmbd/nmbd_browsesync.c: Changed to use sys_random() & friends. passdb/ldap.c: Missed one pdb_encode_acct_ctrl call. passdb/passdb.c: Changed to Ander's code for ' ' characters. passdb/smbpass.c: Added Ander's code to reset ACB_PWNOTREQ. script/mkproto.awk: Added 'long' to prototypes. smbd/chgpasswd.c: Lose capabilities after fork. smbd/open.c: Do the mmap *after* the kernel oplock. smbd/oplock.c: Removed stub code from kernel oplock path. Added set_process_capability(), set_inherited_process_capability() calls. smbd/reply.c: Initialize count = 0, offset = 0. smbd/server.c: Added set_process_capability(), set_inherited_process_capability() calls. tests/summary.c: Ensure we have RANDOM or RAND. utils/smbpasswd.c: Added Ander's code to reset ACB_PWNOTREQ. utils/torture.c: Changed to use sys_random() & friends. Jeremy.
This commit is contained in:
@ -533,3 +533,104 @@ struct hostent *sys_gethostbyname(char *name)
|
||||
return(gethostbyname(name));
|
||||
#endif /* REDUCE_ROOT_DNS_LOOKUPS */
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
Try and abstract process capabilities (for systems that have them).
|
||||
****************************************************************************/
|
||||
|
||||
BOOL set_process_capability( uint32 cap_flag, BOOL enable )
|
||||
{
|
||||
#if defined(HAVE_IRIX_SPECIFIC_CAPABILITIES)
|
||||
if(cap_flag == KERNEL_OPLOCK_CAPABILITY)
|
||||
{
|
||||
cap_t cap = cap_get_proc();
|
||||
|
||||
if (cap == NULL) {
|
||||
DEBUG(0,("set_process_capability: cap_get_proc failed. Error was %s\n",
|
||||
strerror(errno)));
|
||||
return False;
|
||||
}
|
||||
|
||||
if(enable)
|
||||
cap->cap_effective |= CAP_NETWORK_MGT;
|
||||
else
|
||||
cap->cap_effective &= ~CAP_NETWORK_MGT;
|
||||
|
||||
if (cap_set_proc(cap) == -1) {
|
||||
DEBUG(0,("set_process_capability: cap_set_proc failed. Error was %s\n",
|
||||
strerror(errno)));
|
||||
return False;
|
||||
}
|
||||
|
||||
DEBUG(10,("set_process_capability: Set KERNEL_OPLOCK_CAPABILITY.\n"));
|
||||
}
|
||||
#endif
|
||||
return True;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Try and abstract inherited process capabilities (for systems that have them).
|
||||
****************************************************************************/
|
||||
|
||||
BOOL set_inherited_process_capability( uint32 cap_flag, BOOL enable )
|
||||
{
|
||||
#if defined(HAVE_IRIX_SPECIFIC_CAPABILITIES)
|
||||
if(cap_flag == KERNEL_OPLOCK_CAPABILITY)
|
||||
{
|
||||
cap_t cap = cap_get_proc();
|
||||
|
||||
if (cap == NULL) {
|
||||
DEBUG(0,("set_inherited_process_capability: cap_get_proc failed. Error was %s\n",
|
||||
strerror(errno)));
|
||||
return False;
|
||||
}
|
||||
|
||||
if(enable)
|
||||
cap->cap_inheritable |= CAP_NETWORK_MGT;
|
||||
else
|
||||
cap->cap_inheritable &= ~CAP_NETWORK_MGT;
|
||||
|
||||
if (cap_set_proc(cap) == -1) {
|
||||
DEBUG(0,("set_inherited_process_capability: cap_set_proc failed. Error was %s\n",
|
||||
strerror(errno)));
|
||||
return False;
|
||||
}
|
||||
|
||||
DEBUG(10,("set_inherited_process_capability: Set KERNEL_OPLOCK_CAPABILITY.\n"));
|
||||
}
|
||||
#endif
|
||||
return True;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Wrapper for random().
|
||||
****************************************************************************/
|
||||
|
||||
long sys_random(void)
|
||||
{
|
||||
#if defined(HAVE_RANDOM)
|
||||
return (long)random();
|
||||
#elif defined(HAVE_RAND)
|
||||
return (long)rand();
|
||||
#else
|
||||
DEBUG(0,("Error - no random function available !\n"));
|
||||
exit(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
Wrapper for srandom().
|
||||
****************************************************************************/
|
||||
|
||||
void sys_srandom(unsigned int seed)
|
||||
{
|
||||
#if defined(HAVE_SRANDOM)
|
||||
srandom(seed);
|
||||
#elif defined(HAVE_SRAND)
|
||||
srand(seed);
|
||||
#else
|
||||
DEBUG(0,("Error - no srandom function available !\n"));
|
||||
exit(1);
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user