summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2009-04-24 09:17:08 +0200
committerAndrew Bartlett <abartlet@samba.org>2009-04-24 09:17:08 +0200
commit2ee9ee2c17ce435ce45a773f19302a7b474554c2 (patch)
tree2ea91c2d36664f02e001575be0591660190d86ed /source4
parentb82a204b9b2c28707ab7866a511ea4f5912826ac (diff)
parentaf6316d1500cfcedd5fd59ed0ddbba9aec9c3756 (diff)
downloadsamba-2ee9ee2c17ce435ce45a773f19302a7b474554c2.tar.gz
samba-2ee9ee2c17ce435ce45a773f19302a7b474554c2.tar.bz2
samba-2ee9ee2c17ce435ce45a773f19302a7b474554c2.zip
Merge branch 'master' of ssh://git.samba.org/data/git/samba into abartlet-devel
Diffstat (limited to 'source4')
-rw-r--r--source4/lib/ldb/common/ldb.c6
-rw-r--r--source4/lib/registry/patchfile_preg.c38
-rw-r--r--source4/libcli/security/tests/bindings.py6
-rw-r--r--source4/librpc/ndr/py_security.c2
-rw-r--r--source4/ntvfs/posix/pvfs_rename.c4
5 files changed, 33 insertions, 23 deletions
diff --git a/source4/lib/ldb/common/ldb.c b/source4/lib/ldb/common/ldb.c
index 86ce2069a5..64ad6832db 100644
--- a/source4/lib/ldb/common/ldb.c
+++ b/source4/lib/ldb/common/ldb.c
@@ -1430,3 +1430,9 @@ void *ldb_get_opaque(struct ldb_context *ldb, const char *name)
}
return NULL;
}
+
+int ldb_global_init(void)
+{
+ /* Provided for compatibility with some older versions of ldb */
+ return 0;
+}
diff --git a/source4/lib/registry/patchfile_preg.c b/source4/lib/registry/patchfile_preg.c
index e9801bb425..30a9aea2a5 100644
--- a/source4/lib/registry/patchfile_preg.c
+++ b/source4/lib/registry/patchfile_preg.c
@@ -27,27 +27,26 @@
struct preg_data {
int fd;
TALLOC_CTX *ctx;
- struct smb_iconv_convenience *ic;
};
-static WERROR preg_read_utf16(struct smb_iconv_convenience *ic, int fd, char *c)
+static WERROR preg_read_utf16(int fd, char *c)
{
uint16_t v;
if (read(fd, &v, 2) < 2) {
return WERR_GENERAL_FAILURE;
}
- push_codepoint(ic, c, v);
+ push_codepoint(c, v);
return WERR_OK;
}
-static WERROR preg_write_utf16(struct smb_iconv_convenience *ic, int fd, const char *string)
+static WERROR preg_write_utf16(int fd, const char *string)
{
codepoint_t v;
uint16_t i;
size_t size;
for (i = 0; i < strlen(string); i+=size) {
- v = next_codepoint_convenience(ic, &string[i], &size);
+ v = next_codepoint(&string[i], &size);
if (write(fd, &v, 2) < 2) {
return WERR_GENERAL_FAILURE;
}
@@ -67,19 +66,19 @@ static WERROR reg_preg_diff_set_value(void *_data, const char *key_name,
struct preg_data *data = (struct preg_data *)_data;
uint32_t buf;
- preg_write_utf16(data->ic, data->fd, "[");
- preg_write_utf16(data->ic, data->fd, key_name);
- preg_write_utf16(data->ic, data->fd, ";");
- preg_write_utf16(data->ic, data->fd, value_name);
- preg_write_utf16(data->ic, data->fd, ";");
+ preg_write_utf16(data->fd, "[");
+ preg_write_utf16(data->fd, key_name);
+ preg_write_utf16(data->fd, ";");
+ preg_write_utf16(data->fd, value_name);
+ preg_write_utf16(data->fd, ";");
SIVAL(&buf, 0, value_type);
write(data->fd, &buf, sizeof(uint32_t));
- preg_write_utf16(data->ic, data->fd, ";");
+ preg_write_utf16(data->fd, ";");
SIVAL(&buf, 0, value_data.length);
write(data->fd, &buf, sizeof(uint32_t));
- preg_write_utf16(data->ic, data->fd, ";");
+ preg_write_utf16(data->fd, ";");
write(data->fd, value_data.data, value_data.length);
- preg_write_utf16(data->ic, data->fd, "]");
+ preg_write_utf16(data->fd, "]");
return WERR_OK;
}
@@ -169,7 +168,6 @@ _PUBLIC_ WERROR reg_preg_diff_save(TALLOC_CTX *ctx, const char *filename,
write(data->fd, (uint8_t *)&preg_header,8);
data->ctx = ctx;
- data->ic = ic;
*callbacks = talloc(ctx, struct reg_diff_callbacks);
@@ -228,7 +226,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
while(1) {
uint32_t value_type, length;
- if (!W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr))) {
+ if (!W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr))) {
break;
}
if (*buf_ptr != '[') {
@@ -239,7 +237,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
/* Get the path */
buf_ptr = buf;
- while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) &&
+ while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) &&
*buf_ptr != ';' && buf_ptr-buf < buf_size) {
buf_ptr++;
}
@@ -248,7 +246,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
/* Get the name */
buf_ptr = buf;
- while (W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) &&
+ while (W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) &&
*buf_ptr != ';' && buf_ptr-buf < buf_size) {
buf_ptr++;
}
@@ -265,7 +263,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
/* Read past delimiter */
buf_ptr = buf;
- if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) &&
+ if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) &&
*buf_ptr == ';') && buf_ptr-buf < buf_size) {
DEBUG(0, ("Error in PReg file.\n"));
ret = WERR_GENERAL_FAILURE;
@@ -279,7 +277,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
}
/* Read past delimiter */
buf_ptr = buf;
- if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) &&
+ if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) &&
*buf_ptr == ';') && buf_ptr-buf < buf_size) {
DEBUG(0, ("Error in PReg file.\n"));
ret = WERR_GENERAL_FAILURE;
@@ -297,7 +295,7 @@ _PUBLIC_ WERROR reg_preg_diff_load(int fd,
/* Check if delimiter is in place (whine if it isn't) */
buf_ptr = buf;
- if (!(W_ERROR_IS_OK(preg_read_utf16(iconv_convenience, fd, buf_ptr)) &&
+ if (!(W_ERROR_IS_OK(preg_read_utf16(fd, buf_ptr)) &&
*buf_ptr == ']') && buf_ptr-buf < buf_size) {
DEBUG(0, ("Warning: Missing ']' in PReg file, expected ']', got '%c' 0x%x.\n",
*buf_ptr, *buf_ptr));
diff --git a/source4/libcli/security/tests/bindings.py b/source4/libcli/security/tests/bindings.py
index 5c153050be..f0d55f12ca 100644
--- a/source4/libcli/security/tests/bindings.py
+++ b/source4/libcli/security/tests/bindings.py
@@ -77,6 +77,12 @@ class SecurityDescriptorTests(unittest.TestCase):
self.assertEquals(desc1.sacl, desc2.sacl)
self.assertEquals(desc1.type, desc2.type)
+ def test_domsid_nodomsid_as_sddl(self):
+ dom = security.dom_sid("S-2-0-0")
+ text = "O:AOG:DAD:(A;;RPWPCCDCLCSWRCWDWOGA;;;S-1-0-0)"
+ desc1 = security.descriptor.from_sddl(text, dom)
+ self.assertNotEqual(desc1.as_sddl(), desc1.as_sddl(dom))
+
class DomSidTests(unittest.TestCase):
def test_parse_sid(self):
diff --git a/source4/librpc/ndr/py_security.c b/source4/librpc/ndr/py_security.c
index 43c1d50d66..1b54aab02a 100644
--- a/source4/librpc/ndr/py_security.c
+++ b/source4/librpc/ndr/py_security.c
@@ -198,7 +198,7 @@ static PyObject *py_descriptor_as_sddl(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "|O", &py_sid))
return NULL;
- if (py_sid == Py_None)
+ if (py_sid != Py_None)
sid = py_talloc_get_ptr(py_sid);
else
sid = NULL;
diff --git a/source4/ntvfs/posix/pvfs_rename.c b/source4/ntvfs/posix/pvfs_rename.c
index 7f8eab5aa0..0616d38bee 100644
--- a/source4/ntvfs/posix/pvfs_rename.c
+++ b/source4/ntvfs/posix/pvfs_rename.c
@@ -118,13 +118,13 @@ static const char *pvfs_resolve_wildcard_component(TALLOC_CTX *mem_ctx,
c1 = next_codepoint_convenience(iconv_convenience, p1, &c_size1);
c2 = next_codepoint_convenience(iconv_convenience, p2, &c_size2);
if (c2 == '?') {
- d += push_codepoint(iconv_convenience, d, c1);
+ d += push_codepoint_convenience(iconv_convenience, d, c1);
} else if (c2 == '*') {
memcpy(d, p1, strlen(p1));
d += strlen(p1);
break;
} else {
- d += push_codepoint(iconv_convenience, d, c2);
+ d += push_codepoint_convenience(iconv_convenience, d, c2);
}
p1 += c_size1;