[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Sun Feb 13 05:00:02 MST 2011
The branch, master has been updated
via 60df3c0 s3: Make "net sam list [users|workstations]" list only the right things
via 26051b8 s3: Use tlap_simple_recv in tldap_sasl_bind_recv
via f6df16d s3: Add error checking to asn1_read_OctetString_talloc
via f49ad6d s3: Remove an unneeded proto
via 80accd3 Fix typos
via 9331bc3 s3: Fix some nonempty blank lines
via fe551d6 s3: Convert tldap_entry_values args to "array, count"
via 84abb42 s3: Add an explicit counter to tldap_add_mod_[blobs|str]
via 158c1e3 s3: Convert tldap_make_mod_fmt args to "array, count"
via 6375e69 s3: Convert tldap_make_mod_blob args to "array, count"
via 67e6874 s3: Convert tldap_make_mod_blob_int args to "array, count"
via 3363bab s3: Convert tldap_add_blob_vals args to "array, count"
via 6b492a1 s3: Convert tldap_add_mod_blobs args to "array, count"
via 7852527 Fix some nonempty blank lines
via 30e72e0 s3: Align the args of pdb_ads_update_sam_account to tldap_modify
from a730155 pyldb: fix a bug in the unit test which prevented ldb.python to run all the tests in the testsuite
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 60df3c06790d2b4f6e3006123bd883fd842dfb41
Author: Volker Lendecke <vl at samba.org>
Date: Sun Feb 13 11:26:49 2011 +0100
s3: Make "net sam list [users|workstations]" list only the right things
Autobuild-User: Volker Lendecke <vlendec at samba.org>
Autobuild-Date: Sun Feb 13 12:59:14 CET 2011 on sn-devel-104
commit 26051b8aaaf1fd359997dbc71f617ea3e7b71d8a
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 23:49:26 2011 +0100
s3: Use tlap_simple_recv in tldap_sasl_bind_recv
commit f6df16d9d2913db5a0b20ac83cc512c336572877
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 23:41:48 2011 +0100
s3: Add error checking to asn1_read_OctetString_talloc
commit f49ad6d0738c34636f39df7ad0a62b9dc5b8cd4d
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 20:00:42 2011 +0100
s3: Remove an unneeded proto
commit 80accd3946f64108b23f39398f1f92a77e4c7335
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 19:54:26 2011 +0100
Fix typos
commit 9331bc378d609941a1bdbe793e1cf3f12e1a61da
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 19:52:05 2011 +0100
s3: Fix some nonempty blank lines
commit fe551d681586adde38d4a01230f494ce0dd87b2c
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 17:00:30 2011 +0100
s3: Convert tldap_entry_values args to "array, count"
commit 84abb428f640e4c48a7231ed78383b197ed715a9
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:58:10 2011 +0100
s3: Add an explicit counter to tldap_add_mod_[blobs|str]
commit 158c1e315b2b680dad56d1b14ccfd4679c04c8bc
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:51:08 2011 +0100
s3: Convert tldap_make_mod_fmt args to "array, count"
commit 6375e6993e38483fe2dfb3ce5d039b20b950b438
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:46:59 2011 +0100
s3: Convert tldap_make_mod_blob args to "array, count"
commit 67e6874651e1cf0d0015079309c15a68f4048913
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:42:37 2011 +0100
s3: Convert tldap_make_mod_blob_int args to "array, count"
commit 3363bab8754563f39c87de5bb91f77fcad3090f9
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:37:02 2011 +0100
s3: Convert tldap_add_blob_vals args to "array, count"
commit 6b492a1741b8bdcfc61e5fded36e818fa7795b76
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 16:33:26 2011 +0100
s3: Convert tldap_add_mod_blobs args to "array, count"
commit 78525270733a79a6e2def662d7340382cb648414
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 12:18:16 2011 +0100
Fix some nonempty blank lines
commit 30e72e0d0ad95f8b2dd138525670ca687900f4b8
Author: Volker Lendecke <vl at samba.org>
Date: Sat Feb 12 11:39:16 2011 +0100
s3: Align the args of pdb_ads_update_sam_account to tldap_modify
-----------------------------------------------------------------------
Summary of changes:
lib/socket_wrapper/socket_wrapper.c | 36 +++++-----
source3/include/tldap_util.h | 14 ++--
source3/lib/tldap.c | 28 +++++---
source3/lib/tldap_util.c | 49 ++++++++------
source3/passdb/pdb_ads.c | 84 ++++++++++++++---------
source3/passdb/pdb_compat.c | 12 ++--
source3/winbindd/idmap_passdb.c | 8 +-
source4/dsdb/samdb/ldb_modules/password_hash.c | 2 +-
8 files changed, 134 insertions(+), 99 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c
index 594b807..563c3a8 100644
--- a/lib/socket_wrapper/socket_wrapper.c
+++ b/lib/socket_wrapper/socket_wrapper.c
@@ -297,7 +297,7 @@ static int convert_un_in(const struct sockaddr_un *un, struct sockaddr *in, sock
case SOCKET_TYPE_CHAR_TCP:
case SOCKET_TYPE_CHAR_UDP: {
struct sockaddr_in *in2 = (struct sockaddr_in *)in;
-
+
if ((*len) < sizeof(*in2)) {
errno = EINVAL;
return -1;
@@ -315,7 +315,7 @@ static int convert_un_in(const struct sockaddr_un *un, struct sockaddr *in, sock
case SOCKET_TYPE_CHAR_TCP_V6:
case SOCKET_TYPE_CHAR_UDP_V6: {
struct sockaddr_in6 *in2 = (struct sockaddr_in6 *)in;
-
+
if ((*len) < sizeof(*in2)) {
errno = EINVAL;
return -1;
@@ -614,7 +614,7 @@ static int sockaddr_convert_to_un(struct socket_info *si, const struct sockaddr
default:
break;
}
-
+
errno = EAFNOSUPPORT;
return -1;
}
@@ -1669,7 +1669,7 @@ static int swrap_auto_bind(struct socket_info *si, int family)
"%s/"SOCKET_FORMAT, socket_wrapper_dir(),
type, socket_wrapper_default_iface(), port);
if (stat(un_addr.sun_path, &st) == 0) continue;
-
+
ret = real_bind(si->fd, (struct sockaddr *)&un_addr, sizeof(un_addr));
if (ret == -1) return ret;
@@ -1928,7 +1928,7 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
* which makes it easier to format PCAP capture files
* (as the caller will simply continue from here) */
len = MIN(len, 1500);
-
+
ret = real_send(s, buf, len, flags);
break;
case SOCK_DGRAM:
@@ -1936,29 +1936,29 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
ret = swrap_auto_bind(si, si->family);
if (ret == -1) return -1;
}
-
+
ret = sockaddr_convert_to_un(si, to, tolen, &un_addr, 0, &bcast);
if (ret == -1) return -1;
-
+
if (bcast) {
struct stat st;
unsigned int iface;
unsigned int prt = ntohs(((const struct sockaddr_in *)to)->sin_port);
char type;
-
+
type = SOCKET_TYPE_CHAR_UDP;
-
+
for(iface=0; iface <= MAX_WRAPPED_INTERFACES; iface++) {
snprintf(un_addr.sun_path, sizeof(un_addr.sun_path), "%s/"SOCKET_FORMAT,
socket_wrapper_dir(), type, iface, prt);
if (stat(un_addr.sun_path, &st) != 0) continue;
-
+
/* ignore the any errors in broadcast sends */
real_sendto(s, buf, len, flags, (struct sockaddr *)&un_addr, sizeof(un_addr));
}
-
+
swrap_dump_packet(si, to, SWRAP_SENDTO, buf, len);
-
+
return len;
}
@@ -1994,7 +1994,7 @@ _PUBLIC_ ssize_t swrap_sendto(int s, const void *buf, size_t len, int flags, con
errno = EHOSTUNREACH;
break;
}
-
+
/* to give better errors */
if (ret == -1 && errno == ENOENT) {
errno = EHOSTUNREACH;
@@ -2155,7 +2155,7 @@ _PUBLIC_ ssize_t swrap_sendmsg(int s, const struct msghdr *msg, int flags)
off_t ofs = 0;
size_t i;
size_t remain;
-
+
struct socket_info *si = find_socket_info(s);
if (!si) {
@@ -2191,7 +2191,7 @@ _PUBLIC_ ssize_t swrap_sendmsg(int s, const struct msghdr *msg, int flags)
ret = real_sendmsg(s, msg, flags);
remain = ret;
-
+
/* we capture it as one single packet */
buf = (uint8_t *)malloc(ret);
if (!buf) {
@@ -2199,7 +2199,7 @@ _PUBLIC_ ssize_t swrap_sendmsg(int s, const struct msghdr *msg, int flags)
errno = 0;
return ret;
}
-
+
for (i=0; i < msg->msg_iovlen; i++) {
size_t this_time = MIN(remain, msg->msg_iov[i].iov_len);
memcpy(buf + ofs,
@@ -2208,7 +2208,7 @@ _PUBLIC_ ssize_t swrap_sendmsg(int s, const struct msghdr *msg, int flags)
ofs += this_time;
remain -= this_time;
}
-
+
swrap_dump_packet(si, NULL, SWRAP_SEND, buf, ret);
free(buf);
if (ret == -1) {
@@ -2233,7 +2233,7 @@ int swrap_readv(int s, const struct iovec *vector, size_t count)
* which makes it easier to format PCAP capture files
* (as the caller will simply continue from here) */
size_t i, len = 0;
-
+
for (i=0; i < count; i++) {
size_t nlen;
nlen = len + vector[i].iov_len;
diff --git a/source3/include/tldap_util.h b/source3/include/tldap_util.h
index 2e0da85..53b0c7b 100644
--- a/source3/include/tldap_util.h
+++ b/source3/include/tldap_util.h
@@ -23,7 +23,7 @@
#include "includes.h"
bool tldap_entry_values(struct tldap_message *msg, const char *attribute,
- int *num_values, DATA_BLOB **values);
+ DATA_BLOB **values, int *num_values);
bool tldap_get_single_valueblob(struct tldap_message *msg,
const char *attribute, DATA_BLOB *blob);
char *tldap_talloc_single_attribute(struct tldap_message *msg,
@@ -33,16 +33,18 @@ bool tldap_pull_binsid(struct tldap_message *msg, const char *attribute,
struct dom_sid *sid);
bool tldap_pull_guid(struct tldap_message *msg, const char *attribute,
struct GUID *guid);
-bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
+bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx,
+ struct tldap_mod **pmods, int *pnum_mods,
int mod_op, const char *attrib,
- int num_values, DATA_BLOB *values);
-bool tldap_add_mod_str(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
+ DATA_BLOB *newvals, int num_newvals);
+bool tldap_add_mod_str(TALLOC_CTX *mem_ctx,
+ struct tldap_mod **pmods, int *pnum_mods,
int mod_op, const char *attrib, const char *str);
bool tldap_make_mod_blob(struct tldap_message *existing, TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
const char *attrib, DATA_BLOB newval);
bool tldap_make_mod_fmt(struct tldap_message *existing, TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
const char *attrib, const char *fmt, ...);
const char *tldap_errstr(TALLOC_CTX *mem_ctx, struct tldap_context *ld,
diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c
index 775d9ad..1dd380f 100644
--- a/source3/lib/tldap.c
+++ b/source3/lib/tldap.c
@@ -20,6 +20,8 @@
#include "includes.h"
#include "tldap.h"
+static int tldap_simple_recv(struct tevent_req *req);
+
bool tevent_req_is_ldap_error(struct tevent_req *req, int *perr)
{
enum tevent_req_state state;
@@ -506,7 +508,7 @@ static bool tldap_msg_set_pending(struct tevent_req *req)
}
/*
- * We're the first ones, add the read_ldap request that waits for the
+ * We're the first one, add the read_ldap request that waits for the
* answer from the server
*/
subreq = read_ldap_send(ld->pending, state->ev, ld->conn);
@@ -734,6 +736,11 @@ static void tldap_save_msg(struct tldap_context *ld, struct tevent_req *req)
static char *blob2string_talloc(TALLOC_CTX *mem_ctx, DATA_BLOB blob)
{
char *result = talloc_array(mem_ctx, char, blob.length+1);
+
+ if (result == NULL) {
+ return NULL;
+ }
+
memcpy(result, blob.data, blob.length);
result[blob.length] = '\0';
return result;
@@ -741,13 +748,21 @@ static char *blob2string_talloc(TALLOC_CTX *mem_ctx, DATA_BLOB blob)
static bool asn1_read_OctetString_talloc(TALLOC_CTX *mem_ctx,
struct asn1_data *data,
- char **result)
+ char **presult)
{
DATA_BLOB string;
+ char *result;
if (!asn1_read_OctetString(data, mem_ctx, &string))
return false;
- *result = blob2string_talloc(mem_ctx, string);
+
+ result = blob2string_talloc(mem_ctx, string);
+
data_blob_free(&string);
+
+ if (result == NULL) {
+ return false;
+ }
+ *presult = result;
return true;
}
@@ -869,12 +884,7 @@ static void tldap_sasl_bind_done(struct tevent_req *subreq)
int tldap_sasl_bind_recv(struct tevent_req *req)
{
- int err;
-
- if (tevent_req_is_ldap_error(req, &err)) {
- return err;
- }
- return TLDAP_SUCCESS;
+ return tldap_simple_recv(req);
}
int tldap_sasl_bind(struct tldap_context *ld,
diff --git a/source3/lib/tldap_util.c b/source3/lib/tldap_util.c
index 7f1e916..b83a1b7 100644
--- a/source3/lib/tldap_util.c
+++ b/source3/lib/tldap_util.c
@@ -23,7 +23,7 @@
#include "../libcli/security/security.h"
bool tldap_entry_values(struct tldap_message *msg, const char *attribute,
- int *num_values, DATA_BLOB **values)
+ DATA_BLOB **values, int *num_values)
{
struct tldap_attribute *attributes;
int i, num_attributes;
@@ -54,7 +54,7 @@ bool tldap_get_single_valueblob(struct tldap_message *msg,
if (attribute == NULL) {
return NULL;
}
- if (!tldap_entry_values(msg, attribute, &num_values, &values)) {
+ if (!tldap_entry_values(msg, attribute, &values, &num_values)) {
return NULL;
}
if (num_values != 1) {
@@ -106,7 +106,7 @@ bool tldap_pull_guid(struct tldap_message *msg, const char *attribute,
}
static bool tldap_add_blob_vals(TALLOC_CTX *mem_ctx, struct tldap_mod *mod,
- int num_newvals, DATA_BLOB *newvals)
+ DATA_BLOB *newvals, int num_newvals)
{
int num_values = talloc_array_length(mod->values);
int i;
@@ -131,9 +131,10 @@ static bool tldap_add_blob_vals(TALLOC_CTX *mem_ctx, struct tldap_mod *mod,
return true;
}
-bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
+bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx,
+ struct tldap_mod **pmods, int *pnum_mods,
int mod_op, const char *attrib,
- int num_newvals, DATA_BLOB *newvals)
+ DATA_BLOB *newvals, int num_newvals)
{
struct tldap_mod new_mod;
struct tldap_mod *mods = *pmods;
@@ -147,7 +148,7 @@ bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
return false;
}
- num_mods = talloc_array_length(mods);
+ num_mods = *pnum_mods;
for (i=0; i<num_mods; i++) {
if ((mods[i].mod_op == mod_op)
@@ -169,11 +170,11 @@ bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
}
if ((num_newvals != 0)
- && !tldap_add_blob_vals(mods, mod, num_newvals, newvals)) {
+ && !tldap_add_blob_vals(mods, mod, newvals, num_newvals)) {
return false;
}
- if (i == num_mods) {
+ if ((i == num_mods) && (talloc_array_length(mods) < num_mods + 1)) {
mods = talloc_realloc(talloc_tos(), mods, struct tldap_mod,
num_mods+1);
if (mods == NULL) {
@@ -183,10 +184,12 @@ bool tldap_add_mod_blobs(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
}
*pmods = mods;
+ *pnum_mods += 1;
return true;
}
-bool tldap_add_mod_str(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
+bool tldap_add_mod_str(TALLOC_CTX *mem_ctx,
+ struct tldap_mod **pmods, int *pnum_mods,
int mod_op, const char *attrib, const char *str)
{
DATA_BLOB utf8;
@@ -198,14 +201,15 @@ bool tldap_add_mod_str(TALLOC_CTX *mem_ctx, struct tldap_mod **pmods,
return false;
}
- ret = tldap_add_mod_blobs(mem_ctx, pmods, mod_op, attrib, 1, &utf8);
+ ret = tldap_add_mod_blobs(mem_ctx, pmods, pnum_mods, mod_op, attrib,
+ &utf8, 1);
TALLOC_FREE(utf8.data);
return ret;
}
static bool tldap_make_mod_blob_int(struct tldap_message *existing,
TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
const char *attrib, DATA_BLOB newval,
int (*comparison)(const DATA_BLOB *d1,
const DATA_BLOB *d2))
@@ -215,7 +219,7 @@ static bool tldap_make_mod_blob_int(struct tldap_message *existing,
DATA_BLOB oldval = data_blob_null;
if ((existing != NULL)
- && tldap_entry_values(existing, attrib, &num_values, &values)) {
+ && tldap_entry_values(existing, attrib, &values, &num_values)) {
if (num_values > 1) {
/* can't change multivalue attributes atm */
@@ -247,8 +251,9 @@ static bool tldap_make_mod_blob_int(struct tldap_message *existing,
DEBUG(10, ("smbldap_make_mod_blob: deleting attribute |%s|\n",
attrib));
- if (!tldap_add_mod_blobs(mem_ctx, pmods, TLDAP_MOD_DELETE,
- attrib, 1, &oldval)) {
+ if (!tldap_add_mod_blobs(mem_ctx, pmods, pnum_mods,
+ TLDAP_MOD_DELETE,
+ attrib, &oldval, 1)) {
return false;
}
}
@@ -260,20 +265,20 @@ static bool tldap_make_mod_blob_int(struct tldap_message *existing,
if (newval.data != NULL) {
DEBUG(10, ("smbldap_make_mod: adding attribute |%s| value len "
"%d\n", attrib, (int)newval.length));
- if (!tldap_add_mod_blobs(mem_ctx, pmods, TLDAP_MOD_ADD,
- attrib, 1, &newval)) {
+ if (!tldap_add_mod_blobs(mem_ctx, pmods, pnum_mods,
+ TLDAP_MOD_ADD,
+ attrib, &newval, 1)) {
return false;
}
}
- *pnum_mods = talloc_array_length(*pmods);
return true;
}
bool tldap_make_mod_blob(struct tldap_message *existing, TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
const char *attrib, DATA_BLOB newval)
{
- return tldap_make_mod_blob_int(existing, mem_ctx, pnum_mods, pmods,
+ return tldap_make_mod_blob_int(existing, mem_ctx, pmods, pnum_mods,
attrib, newval, data_blob_cmp);
}
@@ -301,7 +306,7 @@ static int compare_utf8_blobs(const DATA_BLOB *d1, const DATA_BLOB *d2)
}
bool tldap_make_mod_fmt(struct tldap_message *existing, TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
const char *attrib, const char *fmt, ...)
{
va_list ap;
@@ -321,7 +326,7 @@ bool tldap_make_mod_fmt(struct tldap_message *existing, TALLOC_CTX *mem_ctx,
if (blob.length != 0) {
blob.data = CONST_DISCARD(uint8_t *, newval);
}
- ret = tldap_make_mod_blob_int(existing, mem_ctx, pnum_mods, pmods,
+ ret = tldap_make_mod_blob_int(existing, mem_ctx, pmods, pnum_mods,
attrib, blob, compare_utf8_blobs);
TALLOC_FREE(newval);
return ret;
@@ -542,7 +547,7 @@ bool tldap_entry_has_attrvalue(struct tldap_message *msg,
int i, num_values;
DATA_BLOB *values;
- if (!tldap_entry_values(msg, attribute, &num_values, &values)) {
+ if (!tldap_entry_values(msg, attribute, &values, &num_values)) {
return false;
}
for (i=0; i<num_values; i++) {
diff --git a/source3/passdb/pdb_ads.c b/source3/passdb/pdb_ads.c
index 565b469..b60615f 100644
--- a/source3/passdb/pdb_ads.c
+++ b/source3/passdb/pdb_ads.c
@@ -41,9 +41,6 @@ struct pdb_ads_samu_private {
struct tldap_message *ldapmsg;
};
-static NTSTATUS pdb_ads_getsampwsid(struct pdb_methods *m,
- struct samu *sam_acct,
- const struct dom_sid *sid);
static bool pdb_ads_gid_to_sid(struct pdb_methods *m, gid_t gid,
struct dom_sid *sid);
static bool pdb_ads_dnblob2sid(struct pdb_ads_state *state, DATA_BLOB *dnblob,
@@ -291,7 +288,7 @@ fail:
static bool pdb_ads_init_ads_from_sam(struct pdb_ads_state *state,
struct tldap_message *existing,
TALLOC_CTX *mem_ctx,
- int *pnum_mods, struct tldap_mod **pmods,
+ struct tldap_mod **pmods, int *pnum_mods,
struct samu *sam)
{
bool ret = true;
@@ -301,7 +298,7 @@ static bool pdb_ads_init_ads_from_sam(struct pdb_ads_state *state,
/* TODO: All fields :-) */
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "displayName",
+ existing, mem_ctx, pmods, pnum_mods, "displayName",
"%s", pdb_get_fullname(sam));
pw = pdb_get_plaintext_passwd(sam);
@@ -330,33 +327,31 @@ static bool pdb_ads_init_ads_from_sam(struct pdb_ads_state *state,
}
blob = data_blob_const(pw_utf16, pw_utf16_len);
- ret &= tldap_add_mod_blobs(mem_ctx, pmods, TLDAP_MOD_REPLACE,
- "unicodePwd", 1, &blob);
- if (ret) {
- *pnum_mods = talloc_array_length(*pmods);
- }
+ ret &= tldap_add_mod_blobs(mem_ctx, pmods, pnum_mods,
+ TLDAP_MOD_REPLACE,
+ "unicodePwd", &blob, 1);
TALLOC_FREE(pw_utf16);
TALLOC_FREE(pw_quote);
}
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "userAccountControl",
+ existing, mem_ctx, pmods, pnum_mods, "userAccountControl",
"%d", ds_acb2uf(pdb_get_acct_ctrl(sam)));
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "homeDirectory",
+ existing, mem_ctx, pmods, pnum_mods, "homeDirectory",
"%s", pdb_get_homedir(sam));
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "homeDrive",
+ existing, mem_ctx, pmods, pnum_mods, "homeDrive",
"%s", pdb_get_dir_drive(sam));
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "scriptPath",
+ existing, mem_ctx, pmods, pnum_mods, "scriptPath",
"%s", pdb_get_logon_script(sam));
ret &= tldap_make_mod_fmt(
- existing, mem_ctx, pnum_mods, pmods, "profilePath",
+ existing, mem_ctx, pmods, pnum_mods, "profilePath",
"%s", pdb_get_profile_path(sam));
fail:
@@ -507,9 +502,9 @@ static NTSTATUS pdb_ads_create_user(struct pdb_methods *m,
ok = true;
ok &= tldap_make_mod_fmt(
--
Samba Shared Repository
More information about the samba-cvs
mailing list