svn commit: samba r22770 - in branches/SAMBA_3_0_RELEASE/source: .
lib modules nsswitch rpc_client rpc_parse rpc_server smbd
jerry at samba.org
jerry at samba.org
Wed May 9 16:26:45 GMT 2007
Author: jerry
Date: 2007-05-09 16:26:43 +0000 (Wed, 09 May 2007)
New Revision: 22770
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=22770
Log:
sync with SAMBA_3_0_25 as of svn r22765
Modified:
branches/SAMBA_3_0_RELEASE/source/configure.in
branches/SAMBA_3_0_RELEASE/source/lib/charcnv.c
branches/SAMBA_3_0_RELEASE/source/modules/vfs_afsacl.c
branches/SAMBA_3_0_RELEASE/source/nsswitch/idmap.c
branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_async.c
branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_group.c
branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_svcctl.c
branches/SAMBA_3_0_RELEASE/source/rpc_parse/parse_misc.c
branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_lsa_nt.c
branches/SAMBA_3_0_RELEASE/source/smbd/notify.c
branches/SAMBA_3_0_RELEASE/source/smbd/reply.c
Changeset:
Modified: branches/SAMBA_3_0_RELEASE/source/configure.in
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/configure.in 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/configure.in 2007-05-09 16:26:43 UTC (rev 22770)
@@ -5764,10 +5764,6 @@
AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
AC_SUBST(NSSSONAMEVERSIONSUFFIX)
-if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
- NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
-fi
-
AC_SUBST(SMB_KRB5_LOCATOR)
# Check the setting of --with-winbind
@@ -5802,6 +5798,10 @@
WINBIND_WINS_NSS=""
fi
+if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
+ NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
+fi
+
if test x"$HAVE_WINBIND" = x"yes"; then
AC_MSG_RESULT(yes)
AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
Modified: branches/SAMBA_3_0_RELEASE/source/lib/charcnv.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/lib/charcnv.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/lib/charcnv.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -972,13 +972,18 @@
ret = convert_string(CH_DOS, CH_UNIX, src, src_len, dest, dest_len, True);
if (ret == (size_t)-1) {
+ ret = 0;
dest_len = 0;
}
- if (dest_len)
- dest[MIN(ret, dest_len-1)] = 0;
- else
+ if (dest_len && ret) {
+ /* Did we already process the terminating zero ? */
+ if (dest[MIN(ret-1, dest_len-1)] != 0) {
+ dest[MIN(ret, dest_len-1)] = 0;
+ }
+ } else {
dest[0] = 0;
+ }
return src_len;
}
@@ -1219,10 +1224,14 @@
if (src_len == (size_t)-1)
src_len = ret*2;
- if (dest_len)
- dest[MIN(ret, dest_len-1)] = 0;
- else
+ if (dest_len && ret) {
+ /* Did we already process the terminating zero ? */
+ if (dest[MIN(ret-1, dest_len-1)] != 0) {
+ dest[MIN(ret, dest_len-1)] = 0;
+ }
+ } else {
dest[0] = 0;
+ }
return src_len;
}
Modified: branches/SAMBA_3_0_RELEASE/source/modules/vfs_afsacl.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/modules/vfs_afsacl.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/modules/vfs_afsacl.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -616,7 +616,7 @@
uid_to_sid(&owner_sid, sbuf.st_uid);
gid_to_sid(&group_sid, sbuf.st_gid);
- if (num_aces) {
+ if (afs_acl->num_aces) {
nt_ace_list = TALLOC_ARRAY(mem_ctx, SEC_ACE, afs_acl->num_aces);
if (nt_ace_list == NULL)
Modified: branches/SAMBA_3_0_RELEASE/source/nsswitch/idmap.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/nsswitch/idmap.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/nsswitch/idmap.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -1025,17 +1025,16 @@
DEBUG(10, ("Query backends to map sids->ids\n"));
/* split list per domain */
-
- if (num_domains) {
- dom_ids = TALLOC_ZERO_ARRAY(ctx, struct id_map **, num_domains);
- IDMAP_CHECK_ALLOC(dom_ids);
- counters = TALLOC_ZERO_ARRAY(ctx, int, num_domains);
- IDMAP_CHECK_ALLOC(counters);
- } else {
- dom_ids = NULL;
- counters = NULL;
+ if (num_domains == 0) {
+ DEBUG(1, ("No domains available?\n"));
+ return NT_STATUS_UNSUCCESSFUL;
}
+ dom_ids = TALLOC_ZERO_ARRAY(ctx, struct id_map **, num_domains);
+ IDMAP_CHECK_ALLOC(dom_ids);
+ counters = TALLOC_ZERO_ARRAY(ctx, int, num_domains);
+ IDMAP_CHECK_ALLOC(counters);
+
/* partition the requests by domain */
for (i = 0; ids[i]; i++) {
Modified: branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_async.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_async.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_async.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -163,6 +163,7 @@
map.sid = &sid;
map.xid.id = state->request.data.dual_idmapset.id;
map.xid.type = state->request.data.dual_idmapset.type;
+ map.status = ID_MAPPED;
result = idmap_set_mapping(&map);
return NT_STATUS_IS_OK(result) ? WINBINDD_OK : WINBINDD_ERROR;
@@ -273,6 +274,11 @@
DEBUG(3, ("[%5lu]: sids to unix ids\n", (unsigned long)state->pid));
+ if (state->request.extra_len == 0) {
+ DEBUG(0, ("Invalid buffer size!\n"));
+ return WINBINDD_ERROR;
+ }
+
sids = (DOM_SID *)state->request.extra_data.data;
num = state->request.extra_len / sizeof(DOM_SID);
Modified: branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_group.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_group.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/nsswitch/winbindd_group.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -479,6 +479,9 @@
memset(name_group, 0, sizeof(fstring));
tmp = state->request.data.groupname;
+
+ name_domain[0] = '\0';
+ name_group[0] = '\0';
parse_domain_user(tmp, name_domain, name_group);
Modified: branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_svcctl.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_svcctl.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/rpc_client/cli_svcctl.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -209,8 +209,12 @@
return out.status;
/* pull out the data */
- if ( !(services = TALLOC_ARRAY( mem_ctx, ENUM_SERVICES_STATUS, out.returned )) )
- return WERR_NOMEM;
+ if (out.returned) {
+ if ( !(services = TALLOC_ARRAY( mem_ctx, ENUM_SERVICES_STATUS, out.returned )) )
+ return WERR_NOMEM;
+ } else {
+ services = NULL;
+ }
for ( i=0; i<out.returned; i++ ) {
svcctl_io_enum_services_status( "", &services[i], &out.buffer, 0 );
Modified: branches/SAMBA_3_0_RELEASE/source/rpc_parse/parse_misc.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/rpc_parse/parse_misc.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/rpc_parse/parse_misc.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -530,12 +530,17 @@
Allocate the RPC_DATA_BLOB memory.
********************************************************************/
-size_t create_rpc_blob(RPC_DATA_BLOB *str, size_t len)
+static void create_rpc_blob(RPC_DATA_BLOB *str, size_t len)
{
- str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(), len);
- if (str->buffer == NULL)
- smb_panic("create_rpc_blob: talloc fail\n");
- return len;
+ if (len) {
+ str->buffer = (uint8 *)TALLOC_ZERO(get_talloc_ctx(), len);
+ if (str->buffer == NULL)
+ smb_panic("create_rpc_blob: talloc fail\n");
+ str->buf_len = len;
+ } else {
+ str->buffer = NULL;
+ str->buf_len = 0;
+ }
}
/*******************************************************************
@@ -547,7 +552,7 @@
ZERO_STRUCTP(str);
/* set up string lengths. */
- str->buf_len = create_rpc_blob(str, sizeof(uint32));
+ create_rpc_blob(str, sizeof(uint32));
SIVAL(str->buffer, 0, val);
}
@@ -560,9 +565,10 @@
ZERO_STRUCTP(str);
/* set up string lengths. */
- str->buf_len = create_rpc_blob(str, len*2);
- rpcstr_push(str->buffer, buf, (size_t)str->buf_len, STR_TERMINATE);
-
+ if (len) {
+ create_rpc_blob(str, len*2);
+ rpcstr_push(str->buffer, buf, (size_t)str->buf_len, STR_TERMINATE);
+ }
}
/*******************************************************************
@@ -572,8 +578,10 @@
void init_rpc_blob_hex(RPC_DATA_BLOB *str, const char *buf)
{
ZERO_STRUCTP(str);
- str->buf_len = create_rpc_blob(str, strlen(buf));
- str->buf_len = strhex_to_str((char *)str->buffer, str->buf_len, buf);
+ if (buf && *buf) {
+ create_rpc_blob(str, strlen(buf));
+ str->buf_len = strhex_to_str((char *)str->buffer, str->buf_len, buf);
+ }
}
/*******************************************************************
@@ -585,8 +593,8 @@
ZERO_STRUCTP(str);
/* max buffer size (allocated size) */
- if (buf != NULL) {
- len = create_rpc_blob(str, len);
+ if (buf != NULL && len) {
+ create_rpc_blob(str, len);
memcpy(str->buffer, buf, len);
}
str->buf_len = len;
Modified: branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_lsa_nt.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_lsa_nt.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_lsa_nt.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -826,7 +826,11 @@
*pp_mapped_count = 0;
*pp_ref = NULL;
*pp_names = NULL;
-
+
+ if (num_sids == 0) {
+ return NT_STATUS_OK;
+ }
+
names = TALLOC_ZERO_P(p->mem_ctx, LSA_TRANS_NAME_ENUM2);
sids = TALLOC_ARRAY(p->mem_ctx, const DOM_SID *, num_sids);
ref = TALLOC_ZERO_P(p->mem_ctx, DOM_R_REF);
@@ -846,12 +850,10 @@
return status;
}
- if (num_sids > 0) {
- names->name = TALLOC_ARRAY(names, LSA_TRANS_NAME2, num_sids);
- names->uni_name = TALLOC_ARRAY(names, UNISTR2, num_sids);
- if ((names->name == NULL) || (names->uni_name == NULL)) {
- return NT_STATUS_NO_MEMORY;
- }
+ names->name = TALLOC_ARRAY(names, LSA_TRANS_NAME2, num_sids);
+ names->uni_name = TALLOC_ARRAY(names, UNISTR2, num_sids);
+ if ((names->name == NULL) || (names->uni_name == NULL)) {
+ return NT_STATUS_NO_MEMORY;
}
for (i=0; i<MAX_REF_DOMAINS; i++) {
Modified: branches/SAMBA_3_0_RELEASE/source/smbd/notify.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/smbd/notify.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/smbd/notify.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -336,7 +336,7 @@
static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
{
struct notify_change *change, *changes;
- char *name2;
+ pstring name2;
if (fsp->notify == NULL) {
/*
@@ -345,11 +345,7 @@
return;
}
- if (!(name2 = talloc_strdup(fsp->notify, name))) {
- DEBUG(0, ("talloc_strdup failed\n"));
- return;
- }
-
+ pstrcpy(name2, name);
string_replace(name2, '/', '\\');
/*
@@ -363,7 +359,6 @@
* guard against a DoS here.
*/
TALLOC_FREE(fsp->notify->changes);
- TALLOC_FREE(name2);
fsp->notify->num_changes = -1;
return;
}
@@ -376,7 +371,6 @@
fsp->notify, fsp->notify->changes,
struct notify_change, fsp->notify->num_changes+1))) {
DEBUG(0, ("talloc_realloc failed\n"));
- TALLOC_FREE(name2);
return;
}
@@ -384,7 +378,11 @@
change = &(fsp->notify->changes[fsp->notify->num_changes]);
- change->name = talloc_move(changes, &name2);
+ if (!(change->name = talloc_strdup(changes, name2))) {
+ DEBUG(0, ("talloc_strdup failed\n"));
+ return;
+ }
+
change->action = action;
fsp->notify->num_changes += 1;
@@ -400,7 +398,7 @@
* We have to send the two rename events in one reply. So hold
* the first part back.
*/
- return;
+ return;
}
/*
Modified: branches/SAMBA_3_0_RELEASE/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/smbd/reply.c 2007-05-09 11:51:39 UTC (rev 22769)
+++ branches/SAMBA_3_0_RELEASE/source/smbd/reply.c 2007-05-09 16:26:43 UTC (rev 22770)
@@ -2237,6 +2237,7 @@
exit_server_cleanly("send_file_readbraw sendfile failed");
}
+ return;
}
normal_readbraw:
More information about the samba-cvs
mailing list