1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-25 00:23:52 +03:00

*lots of small merges form HEAD

*sync up configure.in
*don't build torture tools in make all
*make sure to remove torture tools as part of make clean
This commit is contained in:
Gerald Carter
-
parent 787830782c
commit 0fb724b321
25 changed files with 8751 additions and 18796 deletions

View File

@@ -543,7 +543,7 @@ TDBBACKUP_OBJ = tdb/tdbbackup.o $(TDBBASE_OBJ)
# now the rules... # now the rules...
###################################################################### ######################################################################
all : SHOWFLAGS proto_exists $(SBIN_PROGS) $(BIN_PROGS) $(SHLIBS) \ all : SHOWFLAGS proto_exists $(SBIN_PROGS) $(BIN_PROGS) $(SHLIBS) \
$(TORTURE_PROGS) @EXTRA_ALL_TARGETS@ @EXTRA_ALL_TARGETS@
pam_smbpass : SHOWFLAGS bin/pam_smbpass.@SHLIBEXT@ pam_smbpass : SHOWFLAGS bin/pam_smbpass.@SHLIBEXT@
@@ -1014,7 +1014,7 @@ TOPFILES=dynconfig.o dynconfig.po
clean: delheaders python_clean clean: delheaders python_clean
-rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \ -rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \
$(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(VFS_MODULES) $(PDB_MODULES) .headers.stamp $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(VFS_MODULES) $(PDB_MODULES) $(TORTURE_PROGS) .headers.stamp
# Making this target will just make sure that the prototype files # Making this target will just make sure that the prototype files
# exist, not necessarily that they are up to date. Since they're # exist, not necessarily that they are up to date. Since they're

View File

@@ -78,8 +78,12 @@ static void daemonize(void)
} }
break; break;
} }
/* If we get here - the child exited with some error status */ /* If we get here - the child exited with some error status */
exit(status); if (WIFSIGNALLED(status))
exit(128 + WTERMSIG(status));
else
exit(WEXITSTATUS(status));
} }
signal( SIGTERM, SIG_DFL ); signal( SIGTERM, SIG_DFL );

27217
source/configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -509,11 +509,7 @@ fi
############################################ ############################################
# we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
AC_CHECK_FUNCS(dlopen) AC_SEARCH_LIBS(dlopen, [dl])
if test x"$ac_cv_func_dlopen" = x"no"; then
AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
AC_DEFINE(HAVE_DLOPEN,1,[Whether we have dlopen()])])
fi
# dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
############################################ ############################################
@@ -616,12 +612,8 @@ AC_FUNC_MEMCMP
############################################### ###############################################
# test for where we get crypt() from # test for where we get crypt() from
AC_CHECK_FUNCS(crypt) AC_SEARCH_LIBS(crypt, [crypt], [AUTHLIBS="$AUTHLIBS -lcrypt";
if test x"$ac_cv_func_crypt" = x"no"; then
AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])]) AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
fi
############################################### ###############################################
# Readline included by default unless explicitly asked not to # Readline included by default unless explicitly asked not to
@@ -729,12 +721,9 @@ if test x"$ac_cv_func_connect" = x"no"; then
fi fi
############################################### ###############################################
# test for where we get get_yp_default_domain() from # test for where we get yp_get_default_domain() from
AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
AC_CHECK_FUNCS(yp_get_default_domain) AC_CHECK_FUNCS(yp_get_default_domain)
if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN,1,[Whether the system has yp_get_default_domain()])])
fi
# Check if we have execl, if not we need to compile smbrun. # Check if we have execl, if not we need to compile smbrun.
AC_CHECK_FUNCS(execl) AC_CHECK_FUNCS(execl)
@@ -2827,20 +2816,21 @@ samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)]
AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[ AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
AC_TRY_LINK([\ AC_TRY_LINK([\
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/uio.h>], #include <sys/uio.h>],
[\ [\
int fromfd, tofd; int fromfd, tofd, ret, total=0;
off_t offset, nwritten; off_t offset, nwritten;
struct sf_hdtr hdr; struct sf_hdtr hdr;
struct iovec hdtrl; struct iovec hdtrl;
hdr->headers = &hdtrl; hdr.headers = &hdtrl;
hdr->hdr_cnt = 1; hdr.hdr_cnt = 1;
hdr->trailers = NULL; hdr.trailers = NULL;
hdr->trl_cnt = 0; hdr.trl_cnt = 0;
hdtrl.iov_base = NULL; hdtrl.iov_base = NULL;
hdtrl.iov_len = 0; hdtrl.iov_len = 0;
int ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0); ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
], ],
samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])

View File

@@ -754,6 +754,8 @@ extern int errno;
#include "md5.h" #include "md5.h"
#include "hmacmd5.h" #include "hmacmd5.h"
#include "ntlmssp.h"
#include "auth.h" #include "auth.h"
#include "passdb.h" #include "passdb.h"

View File

@@ -46,38 +46,6 @@ enum RPC_PKT_TYPE
#define RPC_FLG_LAST 0x02 #define RPC_FLG_LAST 0x02
#define RPC_FLG_NOCALL 0x20 #define RPC_FLG_NOCALL 0x20
/* NTLMSSP message types */
enum NTLM_MESSAGE_TYPE
{
NTLMSSP_NEGOTIATE = 1,
NTLMSSP_CHALLENGE = 2,
NTLMSSP_AUTH = 3,
NTLMSSP_UNKNOWN = 4
};
/* NTLMSSP negotiation flags */
#define NTLMSSP_NEGOTIATE_UNICODE 0x00000001
#define NTLMSSP_NEGOTIATE_OEM 0x00000002
#define NTLMSSP_REQUEST_TARGET 0x00000004
#define NTLMSSP_NEGOTIATE_SIGN 0x00000010 /* Message integrity */
#define NTLMSSP_NEGOTIATE_SEAL 0x00000020 /* Message confidentiality */
#define NTLMSSP_NEGOTIATE_DATAGRAM_STYLE 0x00000040
#define NTLMSSP_NEGOTIATE_LM_KEY 0x00000080
#define NTLMSSP_NEGOTIATE_NETWARE 0x00000100
#define NTLMSSP_NEGOTIATE_NTLM 0x00000200
#define NTLMSSP_NEGOTIATE_DOMAIN_SUPPLIED 0x00001000
#define NTLMSSP_NEGOTIATE_WORKSTATION_SUPPLIED 0x00002000
#define NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL 0x00004000
#define NTLMSSP_NEGOTIATE_ALWAYS_SIGN 0x00008000
#define NTLMSSP_CHAL_INIT_RESPONSE 0x00010000
#define NTLMSSP_CHAL_ACCEPT_RESPONSE 0x00020000
#define NTLMSSP_CHAL_NON_NT_SESSION_KEY 0x00040000
#define NTLMSSP_NEGOTIATE_NTLM2 0x00080000
#define NTLMSSP_CHAL_TARGET_INFO 0x00800000
#define NTLMSSP_NEGOTIATE_128 0x20000000 /* 128-bit encryption */
#define NTLMSSP_NEGOTIATE_KEY_EXCH 0x40000000
#define NTLMSSP_NEGOTIATE_080000000 0x80000000
#define SMBD_NTLMSSP_NEG_FLAGS 0x000082b1 /* ALWAYS_SIGN|NEG_NTLM|NEG_LM|NEG_SEAL|NEG_SIGN|NEG_UNICODE */ #define SMBD_NTLMSSP_NEG_FLAGS 0x000082b1 /* ALWAYS_SIGN|NEG_NTLM|NEG_LM|NEG_SEAL|NEG_SIGN|NEG_UNICODE */
/* NTLMSSP signature version */ /* NTLMSSP signature version */

View File

@@ -100,8 +100,6 @@
/* access various service details */ /* access various service details */
#define SERVICE(snum) (lp_servicename(snum)) #define SERVICE(snum) (lp_servicename(snum))
#define PRINTCAP (lp_printcapname())
#define PRINTCOMMAND(snum) (lp_printcommand(snum))
#define PRINTERNAME(snum) (lp_printername(snum)) #define PRINTERNAME(snum) (lp_printername(snum))
#define CAN_WRITE(conn) (!conn->read_only) #define CAN_WRITE(conn) (!conn->read_only)
#define VALID_SNUM(snum) (lp_snum_ok(snum)) #define VALID_SNUM(snum) (lp_snum_ok(snum))

View File

@@ -186,30 +186,6 @@ ssize_t read_udp_socket(int fd,char *buf,size_t len)
return(ret); return(ret);
} }
/*******************************************************************
checks if read data is outstanding.
********************************************************************/
static int read_data_outstanding(int fd, unsigned int time_out)
{
int selrtn;
fd_set fds;
struct timeval timeout;
FD_ZERO(&fds);
FD_SET(fd, &fds);
timeout.tv_sec = (time_t) (time_out / 1000);
timeout.tv_usec = (long)(1000 * (time_out % 1000));
selrtn = sys_select_intr(fd + 1, &fds, NULL, NULL, &timeout);
if (selrtn <= 0)
{
return selrtn;
}
return FD_ISSET(fd, &fds) ? 1 : 0;
}
/**************************************************************************** /****************************************************************************
Read data from a socket with a timout in msec. Read data from a socket with a timout in msec.
mincount = if timeout, minimum to read before returning mincount = if timeout, minimum to read before returning
@@ -217,7 +193,7 @@ static int read_data_outstanding(int fd, unsigned int time_out)
time_out = timeout in milliseconds time_out = timeout in milliseconds
****************************************************************************/ ****************************************************************************/
static ssize_t read_socket_with_timeout(int fd,char *buf,size_t mincnt,size_t maxcnt,unsigned int time_out) ssize_t read_socket_with_timeout(int fd,char *buf,size_t mincnt,size_t maxcnt,unsigned int time_out)
{ {
fd_set fds; fd_set fds;
int selrtn; int selrtn;
@@ -308,62 +284,6 @@ static ssize_t read_socket_with_timeout(int fd,char *buf,size_t mincnt,size_t ma
return (ssize_t)nread; return (ssize_t)nread;
} }
/****************************************************************************
Read data from a fd with a timout in msec.
mincount = if timeout, minimum to read before returning
maxcount = number to be read.
time_out = timeout in milliseconds
****************************************************************************/
ssize_t read_with_timeout(int fd, char *buf, size_t mincnt, size_t maxcnt,
unsigned int time_out)
{
ssize_t readret;
size_t nread = 0;
/* just checking .... */
if (maxcnt <= 0)
return(0);
/* Blocking read */
if (time_out <= 0) {
if (mincnt == 0) mincnt = maxcnt;
while (nread < mincnt) {
readret = sys_read(fd, buf + nread, maxcnt - nread);
if (readret <= 0)
return readret;
nread += readret;
}
return((ssize_t)nread);
}
/* Most difficult - timeout read */
/* If this is ever called on a disk file and
mincnt is greater then the filesize then
system performance will suffer severely as
select always returns true on disk files */
for (nread=0; nread < mincnt; ) {
int selrtn = read_data_outstanding(fd, time_out);
if(selrtn <= 0)
return selrtn;
readret = sys_read(fd, buf+nread, maxcnt-nread);
if (readret <= 0)
return readret;
nread += readret;
}
/* Return the number we got */
return((ssize_t)nread);
}
/**************************************************************************** /****************************************************************************
read data from the client, reading exactly N bytes. read data from the client, reading exactly N bytes.
****************************************************************************/ ****************************************************************************/

View File

@@ -308,8 +308,22 @@ char *skip_string(char *buf,size_t n)
size_t str_charnum(const char *s) size_t str_charnum(const char *s)
{ {
push_ucs2(NULL, tmpbuf,s, sizeof(tmpbuf), STR_TERMINATE); uint16 tmpbuf2[sizeof(pstring)];
return strlen_w(tmpbuf); push_ucs2(NULL, tmpbuf2,s, sizeof(tmpbuf2), STR_TERMINATE);
return strlen_w(tmpbuf2);
}
/*******************************************************************
Count the number of characters in a string. Normally this will
be the same as the number of bytes in a string for single byte strings,
but will be different for multibyte.
********************************************************************/
size_t str_ascii_charnum(const char *s)
{
pstring tmpbuf2;
push_ascii(tmpbuf2, s, sizeof(tmpbuf2), STR_TERMINATE);
return strlen(tmpbuf2);
} }
/******************************************************************* /*******************************************************************
@@ -655,13 +669,11 @@ static BOOL string_init(char **dest,const char *src)
} }
*dest = null_string; *dest = null_string;
} else { } else {
(*dest) = (char *)malloc(l+1); (*dest) = strdup(src);
if ((*dest) == NULL) { if ((*dest) == NULL) {
DEBUG(0,("Out of memory in string_init\n")); DEBUG(0,("Out of memory in string_init\n"));
return False; return False;
} }
pstrcpy(*dest,src);
} }
return(True); return(True);
} }

View File

@@ -328,7 +328,7 @@ static int interpret_short_filename(struct cli_state *cli, char *p,file_info *fi
strncpy(finfo->short_name,finfo->name, sizeof(finfo->short_name)-1); strncpy(finfo->short_name,finfo->name, sizeof(finfo->short_name)-1);
finfo->short_name[sizeof(finfo->short_name)-1] = '\0'; finfo->short_name[sizeof(finfo->short_name)-1] = '\0';
} }
return(DIR_STRUCT_SIZE); return(DIR_STRUCT_SIZE);
} }

View File

@@ -285,10 +285,13 @@ static BOOL cli_issue_write(struct cli_state *cli, int fnum, off_t offset,
SIVAL(cli->outbuf,smb_vwv5,0); SIVAL(cli->outbuf,smb_vwv5,0);
SSVAL(cli->outbuf,smb_vwv7,mode); SSVAL(cli->outbuf,smb_vwv7,mode);
/*
* THe following is still wrong ...
*/
SSVAL(cli->outbuf,smb_vwv8,(mode & 0x0008) ? size : 0); SSVAL(cli->outbuf,smb_vwv8,(mode & 0x0008) ? size : 0);
/*
* According to CIFS-TR-1p00, this following field should only
* be set if CAP_LARGE_WRITEX is set. We should check this
* locally. However, this check might already have been
* done by our callers.
*/
SSVAL(cli->outbuf,smb_vwv9,((size>>16)&1)); SSVAL(cli->outbuf,smb_vwv9,((size>>16)&1));
SSVAL(cli->outbuf,smb_vwv10,size); SSVAL(cli->outbuf,smb_vwv10,size);
SSVAL(cli->outbuf,smb_vwv11, SSVAL(cli->outbuf,smb_vwv11,

View File

@@ -563,7 +563,7 @@ in workgroup %s on subnet %s\n",
userdata->copy_fn = NULL; userdata->copy_fn = NULL;
userdata->free_fn = NULL; userdata->free_fn = NULL;
userdata->userdata_len = strlen(work->work_group)+1; userdata->userdata_len = strlen(work->work_group)+1;
pstrcpy(userdata->data, work->work_group); fstrcpy(userdata->data, work->work_group);
/* Register the special browser group name. */ /* Register the special browser group name. */
register_name(subrec, MSBROWSE, 0x01, samba_nb_type|NB_GROUP, register_name(subrec, MSBROWSE, 0x01, samba_nb_type|NB_GROUP,

View File

@@ -333,7 +333,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
userdata->copy_fn = NULL; userdata->copy_fn = NULL;
userdata->free_fn = NULL; userdata->free_fn = NULL;
userdata->userdata_len = strlen(work->work_group)+1; userdata->userdata_len = strlen(work->work_group)+1;
pstrcpy(userdata->data, work->work_group); fstrcpy(userdata->data, work->work_group);
node_status( subrec, &nmbname, answer_ip, node_status( subrec, &nmbname, answer_ip,
domain_master_node_status_success, domain_master_node_status_success,

View File

@@ -121,7 +121,8 @@ static int pam_winbind_request(enum winbindd_cmd req_type,
/* Copy reply data from socket */ /* Copy reply data from socket */
if (response->result != WINBINDD_OK) { if (response->result != WINBINDD_OK) {
if (response->data.auth.pam_error != PAM_SUCCESS) { if (response->data.auth.pam_error != PAM_SUCCESS) {
_pam_log(LOG_ERR, "request failed, PAM error was %d, NT error was %s", _pam_log(LOG_ERR, "request failed: %s, PAM error was %d, NT error was %s",
response->data.auth.error_string,
response->data.auth.pam_error, response->data.auth.pam_error,
response->data.auth.nt_status_string); response->data.auth.nt_status_string);
return response->data.auth.pam_error; return response->data.auth.pam_error;

View File

@@ -2738,9 +2738,14 @@ BOOL is_printer_published(int snum, GUID *guid)
SPOOL_DSSPOOLER_KEY)) < 0) SPOOL_DSSPOOLER_KEY)) < 0)
return False; return False;
ctr = &printer->info_2->data.keys[i].values; if (!(ctr = &printer->info_2->data.keys[i].values)) {
return False;
}
if (!(guid_val = regval_ctr_getvalue(ctr, "objectGUID"))) {
return False;
}
guid_val = regval_ctr_getvalue(ctr, "objectGUID");
if (regval_size(guid_val) == sizeof(GUID)) if (regval_size(guid_val) == sizeof(GUID))
memcpy(guid, regval_data_p(guid_val), sizeof(GUID)); memcpy(guid, regval_data_p(guid_val), sizeof(GUID));

View File

@@ -54,15 +54,13 @@ struct printif cups_printif =
* 'cups_passwd_cb()' - The CUPS password callback... * 'cups_passwd_cb()' - The CUPS password callback...
*/ */
const char * /* O - Password or NULL */ static const char * /* O - Password or NULL */
cups_passwd_cb(const char *prompt) /* I - Prompt */ cups_passwd_cb(const char *prompt) /* I - Prompt */
{ {
/* /*
* Always return NULL to indicate that no password is available... * Always return NULL to indicate that no password is available...
*/ */
(void)prompt;
return (NULL); return (NULL);
} }
@@ -209,10 +207,10 @@ void cups_printer_fn(void (*fn)(char *, char *))
/* /*
* 'cups_printername_ok()' - Provide the equivalent of pcap_printername_ok() * 'cups_printername_ok()' - Provide the equivalent of pcap_printername_ok()
* for CUPS. * for CUPS.
* O - 1 if printer name OK
* I - Name of printer
*/ */
int cups_printername_ok(const char *name)
int /* O - 1 if printer name OK */
cups_printername_ok(char *name) /* I - Name of printer */
{ {
http_t *http; /* HTTP connection to server */ http_t *http; /* HTTP connection to server */
ipp_t *request, /* IPP Request */ ipp_t *request, /* IPP Request */

View File

@@ -342,6 +342,7 @@ BOOL get_domain_user_groups(TALLOC_CTX *ctx, int *numgroups, DOM_GID **pgids, SA
DEBUG(0,("get_domain_user_groups: primary gid of user [%s] is not a Domain group !\n", user_name)); DEBUG(0,("get_domain_user_groups: primary gid of user [%s] is not a Domain group !\n", user_name));
DEBUGADD(0,("get_domain_user_groups: You should fix it, NT doesn't like that\n")); DEBUGADD(0,("get_domain_user_groups: You should fix it, NT doesn't like that\n"));
done: done:
*pgids=gids; *pgids=gids;
*numgroups=cur_gid; *numgroups=cur_gid;

View File

@@ -411,7 +411,7 @@ static NTSTATUS cmd_lsa_enum_privsaccounts(struct cli_state *cli,
POLICY_HND user_pol; POLICY_HND user_pol;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL; NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
uint32 access_desired = 0x000f000f; uint32 access_desired = 0x000f000f;
DOM_SID sid; DOM_SID sid;
uint32 count=0; uint32 count=0;
LUID_ATTR *set; LUID_ATTR *set;

View File

@@ -5,7 +5,7 @@
# run as root to get correct info from WIN95 clients. # run as root to get correct info from WIN95 clients.
# #
# syntax: # syntax:
# findsmb [subnet broadcast address] # findsmb [-d|-D] [-r] [subnet broadcast address]
# #
# with no agrument it will list machines on the current subnet # with no agrument it will list machines on the current subnet
# #
@@ -13,21 +13,28 @@
# local master browsers for that workgroup. There will be an "*" in front # local master browsers for that workgroup. There will be an "*" in front
# of the workgroup name for machines that are the domain master browser for # of the workgroup name for machines that are the domain master browser for
# that workgroup. # that workgroup.
#
# Options:
#
# -d|-D enable debug
# -r add -r option to nmblookup when finding netbios name
# #
$SAMBABIN = "@prefix@/bin"; $SAMBABIN = "@prefix@/bin";
for ($i = 0; $i < 2; $i++) { # test for -d option and broadcast address for ($i = 0; $i < 2; $i++) { # test for -d and -r options
$_ = shift; $_ = shift;
if (m/-d|-D/) { if (m/-d|-D/) {
$DEBUG = 1; $DEBUG = 1;
} else { } else (m/-r/) {
if ($_) { $R_OPTION = "-r";
$BCAST = "-B $_";
}
} }
} }
if ($_) { # set broadcast address if it was specified
$BCAST = "-B $_";
}
sub ipsort # do numeric sort on last field of IP address sub ipsort # do numeric sort on last field of IP address
{ {
@t1 = split(/\./,$a); @t1 = split(/\./,$a);
@@ -56,7 +63,7 @@ foreach $ip (@ipaddrs) # loop through each IP address found
# find the netbios names registered by each machine # find the netbios names registered by each machine
open(NMBLOOKUP,"$SAMBABIN/nmblookup -r -A $ip|") || open(NMBLOOKUP,"$SAMBABIN/nmblookup $R_OPTION -A $ip|") ||
die("Can't get nmb name list.\n"); die("Can't get nmb name list.\n");
@nmblookup = <NMBLOOKUP>; @nmblookup = <NMBLOOKUP>;
close NMBLOOKUP; close NMBLOOKUP;

View File

@@ -7,6 +7,16 @@ shift
shift shift
shift shift
for d in $BASEDIR $LIBDIR; do
if [ ! -d $d ]; then
mkdir $d
if [ ! -d $d ]; then
echo Failed to make directory $d
exit 1
fi
fi
done
for p in $*; do for p in $*; do
p2=`basename $p` p2=`basename $p`
echo Installing $p as $LIBDIR/$p2 echo Installing $p as $LIBDIR/$p2

View File

@@ -249,9 +249,9 @@ static int expect(int master, char *issue, char *expected)
nread = 0; nread = 0;
buffer[nread] = 0; buffer[nread] = 0;
while ((len = read_with_timeout(master, buffer + nread, 1, while ((len = read_socket_with_timeout(master, buffer + nread, 1,
sizeof(buffer) - nread - 1, sizeof(buffer) - nread - 1,
timeout)) > 0) { timeout)) > 0) {
nread += len; nread += len;
buffer[nread] = 0; buffer[nread] = 0;
@@ -862,6 +862,10 @@ static NTSTATUS check_oem_password(const char *user,
*/ */
new_pw_len = IVAL(lmdata, 512); new_pw_len = IVAL(lmdata, 512);
DEBUG(0, ("** new_pw_len = %d, new_passwd_size = %d\n",
new_pw_len, new_passwd_size));
if (new_pw_len < 0 || new_pw_len > new_passwd_size - 1) { if (new_pw_len < 0 || new_pw_len > new_passwd_size - 1) {
DEBUG(0,("check_oem_password: incorrect password length (%d).\n", new_pw_len)); DEBUG(0,("check_oem_password: incorrect password length (%d).\n", new_pw_len));
pdb_free_sam(&sampass); pdb_free_sam(&sampass);

View File

@@ -155,7 +155,7 @@ int find_service(fstring service)
char *pszTemp; char *pszTemp;
DEBUG(3,("checking whether %s is a valid printer name...\n", service)); DEBUG(3,("checking whether %s is a valid printer name...\n", service));
pszTemp = PRINTCAP; pszTemp = lp_printcapname();
if ((pszTemp != NULL) && pcap_printername_ok(service, pszTemp)) if ((pszTemp != NULL) && pcap_printername_ok(service, pszTemp))
{ {
DEBUG(3,("%s is a valid printer name\n", service)); DEBUG(3,("%s is a valid printer name\n", service));
@@ -751,7 +751,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
{ {
uid_t euid; uid_t euid;
user_struct *vuser = NULL; user_struct *vuser = NULL;
pstring service; fstring service;
int snum = -1; int snum = -1;
/* This must ONLY BE CALLED AS ROOT. As it exits this function as root. */ /* This must ONLY BE CALLED AS ROOT. As it exits this function as root. */
@@ -814,7 +814,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
dev, status); dev, status);
} }
pstrcpy(service, service_in); fstrcpy(service, service_in);
strlower(service); strlower(service);

View File

@@ -74,6 +74,10 @@ static int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key, unsigned
if (gotalarm) { if (gotalarm) {
DEBUG(0,("tdb_chainlock_with_timeout: alarm (%u) timed out for key %s in tdb %s\n", DEBUG(0,("tdb_chainlock_with_timeout: alarm (%u) timed out for key %s in tdb %s\n",
timeout, key.dptr, tdb->name )); timeout, key.dptr, tdb->name ));
/* TODO: If we time out waiting for a lock, it might
* be nice to use F_GETLK to get the pid of the
* process currently holding the lock and print that
* as part of the debugging message. -- mbp */
return -1; return -1;
} }
} }
@@ -99,7 +103,7 @@ int tdb_lock_bystring(TDB_CONTEXT *tdb, const char *keyval, unsigned int timeout
void tdb_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval) void tdb_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
{ {
TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1); TDB_DATA key = make_tdb_data(keyval, strlen(keyval)+1);
tdb_chainunlock(tdb, key); tdb_chainunlock(tdb, key);
} }
@@ -256,8 +260,8 @@ BOOL tdb_store_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 value)
int tdb_store_by_string(TDB_CONTEXT *tdb, const char *keystr, TDB_DATA data, int flags) int tdb_store_by_string(TDB_CONTEXT *tdb, const char *keystr, TDB_DATA data, int flags)
{ {
TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1); TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
return tdb_store(tdb, key, data, flags); return tdb_store(tdb, key, data, flags);
} }
/**************************************************************************** /****************************************************************************
@@ -269,7 +273,7 @@ TDB_DATA tdb_fetch_by_string(TDB_CONTEXT *tdb, const char *keystr)
{ {
TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1); TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
return tdb_fetch(tdb, key); return tdb_fetch(tdb, key);
} }
/**************************************************************************** /****************************************************************************
@@ -280,7 +284,7 @@ int tdb_delete_by_string(TDB_CONTEXT *tdb, const char *keystr)
{ {
TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1); TDB_DATA key = make_tdb_data(keystr, strlen(keystr)+1);
return tdb_delete(tdb, key); return tdb_delete(tdb, key);
} }
/**************************************************************************** /****************************************************************************

View File

@@ -42,6 +42,8 @@ int net_ads_usage(int argc, const char **argv)
"\n\tshows some info on the server\n"\ "\n\tshows some info on the server\n"\
"\nnet ads status"\ "\nnet ads status"\
"\n\tdump the machine account details to stdout\n" "\n\tdump the machine account details to stdout\n"
"\nnet ads lookup"\
"\n\tperform a CLDAP search on the server\n"
"\nnet ads password <username@realm> -Uadmin_username@realm%%admin_pass"\ "\nnet ads password <username@realm> -Uadmin_username@realm%%admin_pass"\
"\n\tchange a user's password using an admin account"\ "\n\tchange a user's password using an admin account"\
"\n\t(note: use realm in UPPERCASE)\n"\ "\n\t(note: use realm in UPPERCASE)\n"\

View File

@@ -46,43 +46,6 @@ static char *C_user;
static BOOL inetd_server; static BOOL inetd_server;
static BOOL got_request; static BOOL got_request;
static void unescape(char *buf)
{
char *p=buf;
while ((p=strchr_m(p,'+')))
*p = ' ';
p = buf;
while (p && *p && (p=strchr_m(p,'%'))) {
int c1 = p[1];
int c2 = p[2];
if (c1 >= '0' && c1 <= '9')
c1 = c1 - '0';
else if (c1 >= 'A' && c1 <= 'F')
c1 = 10 + c1 - 'A';
else if (c1 >= 'a' && c1 <= 'f')
c1 = 10 + c1 - 'a';
else {p++; continue;}
if (c2 >= '0' && c2 <= '9')
c2 = c2 - '0';
else if (c2 >= 'A' && c2 <= 'F')
c2 = 10 + c2 - 'A';
else if (c2 >= 'a' && c2 <= 'f')
c2 = 10 + c2 - 'a';
else {p++; continue;}
*p = (c1<<4) | c2;
memmove(p+1, p+3, strlen(p+3)+1);
p++;
}
}
static char *grab_line(FILE *f, int *cl) static char *grab_line(FILE *f, int *cl)
{ {
char *ret = NULL; char *ret = NULL;
@@ -167,8 +130,8 @@ void cgi_load_variables(void)
!variables[num_variables].value) !variables[num_variables].value)
continue; continue;
unescape(variables[num_variables].value); rfc1738_unescape(variables[num_variables].value);
unescape(variables[num_variables].name); rfc1738_unescape(variables[num_variables].name);
#ifdef DEBUG_COMMENTS #ifdef DEBUG_COMMENTS
printf("<!== POST var %s has value \"%s\" ==>\n", printf("<!== POST var %s has value \"%s\" ==>\n",
@@ -198,8 +161,8 @@ void cgi_load_variables(void)
!variables[num_variables].value) !variables[num_variables].value)
continue; continue;
unescape(variables[num_variables].value); rfc1738_unescape(variables[num_variables].value);
unescape(variables[num_variables].name); rfc1738_unescape(variables[num_variables].name);
#ifdef DEBUG_COMMENTS #ifdef DEBUG_COMMENTS
printf("<!== Commandline var %s has value \"%s\" ==>\n", printf("<!== Commandline var %s has value \"%s\" ==>\n",