The branch, master has been updated
via 9bf92bd9fe2 ntvfs: Simplify rap_netshareenum()
via 52bf8ef4596 talloc: Add a comment explaining
talloc_asprintf_addbuf()
via a5177ef3939 smbd: Remove an unnecessary call to SMB_VFS_STAT()
via e24c9b99dbd lib: Shrink .text a bit
via 835c66ca7f8 vfs: Slightly simplify ad_get_meta_fsp()
via 637cf49c30a vfs: Add some const
via 83685486368 vfs: Align a few integer types
via 97d483f175c smbd: Remove vfs_file_exist()
via b223d5da884 lib: Remove a pointer from R/W .data
via 5dcb086cf52 lib: Move a pointer from .data to stack
via cf43234b73c vfs: Remove a few calls to map_errno_from_nt_status()
via 12ea1963593 vfs: Slightly simplify catia_translate_name()
via c8293a0b4f1 lib: Convert string_replace_allocate() to return 0/errno
via 6c94364388e vfs: Fix some whitespace
via e7fb3d3e944 vfs: Fix some error path memleaks
via 1f0be0edd7e libsmb: Save some bytes in .text code
via 0d39a8d83d1 lib: Fix typos
via 0d83502fbbc lib: Move 968 bytes from R/W data to R/O text
via 2a6209966df lib: Simplify ad_get_internal()
from e705dbbc676 provision: always use a large transaction index cache
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 9bf92bd9fe2533fa64707627e46942c71f9701e3
Author: Volker Lendecke <[email protected]>
Date: Thu Mar 17 19:31:44 2022 +0100
ntvfs: Simplify rap_netshareenum()
I know, unused. But the whole point of strlcpy is that we don't need
this kind of calculation, and we should not leave this as a bad
example code in our tree.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
Autobuild-User(master): Jeremy Allison <[email protected]>
Autobuild-Date(master): Wed Feb 5 01:05:08 UTC 2025 on atb-devel-224
commit 52bf8ef459632a3f671f2fbfa81ac731d404d8d9
Author: Volker Lendecke <[email protected]>
Date: Fri Jan 24 08:30:56 2025 +0100
talloc: Add a comment explaining talloc_asprintf_addbuf()
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit a5177ef3939b79699639097b2cd42c23e1ff5dca
Author: Volker Lendecke <[email protected]>
Date: Fri Jan 24 13:45:31 2025 +0100
smbd: Remove an unnecessary call to SMB_VFS_STAT()
smb_fname came out of filename_convert_dirfsp(), which already stat'ed
if the file exists. !VALID_STAT means new file.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit e24c9b99dbd882091cfbc9aa87aa3fb632a14a79
Author: Volker Lendecke <[email protected]>
Date: Sat Feb 1 16:05:06 2025 +0100
lib: Shrink .text a bit
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 835c66ca7f8a23cb8fcdf5fe6da6cd794b45b1ff
Author: Volker Lendecke <[email protected]>
Date: Sat Feb 1 11:26:00 2025 +0100
vfs: Slightly simplify ad_get_meta_fsp()
Use cp_smb_filename_nostream()
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 637cf49c30a1cd6da70fa77f67b061a1894e01af
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 18:37:54 2025 +0100
vfs: Add some const
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 8368548636802907a3c37497bfbb2df9e5dcdcaa
Author: Volker Lendecke <[email protected]>
Date: Fri Jan 24 16:04:16 2025 +0100
vfs: Align a few integer types
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 97d483f175cbd9da413c4d3bbae2a3a48aec8566
Author: Volker Lendecke <[email protected]>
Date: Fri Jan 24 12:58:22 2025 +0100
smbd: Remove vfs_file_exist()
Both callers followed this with SMB_VFS_CREATE_FILE which can be given
FILE_NON_DIRECTORY_FILE as an option to achieve the same.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit b223d5da884eb2f2540b72b3a1c5baec1cf21c77
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 06:04:39 2025 +0100
lib: Remove a pointer from R/W .data
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 5dcb086cf5271e29b8445363af80ef5ae839cc1a
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 06:09:28 2025 +0100
lib: Move a pointer from .data to stack
Why was this declared static? ...
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit cf43234b73cbc7ac6e1808babe989de8f55808bf
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 12:28:04 2025 +0100
vfs: Remove a few calls to map_errno_from_nt_status()
That call always "feels" lossy to me, the other way around is better
defined.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 12ea19635933e5a0321d9e7c5bbd012cf350a3a0
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 12:12:33 2025 +0100
vfs: Slightly simplify catia_translate_name()
We have returned if !NT_STATUS_OK(status) a few lines above.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit c8293a0b4f176d5398a1b0c78071a8db398feff0
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 11:51:41 2025 +0100
lib: Convert string_replace_allocate() to return 0/errno
This is only used in the VFS, which is still in large parts
errno-based.
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 6c94364388eb5c31f6ba824ad8159d04c5b7754c
Author: Volker Lendecke <[email protected]>
Date: Tue Jan 28 18:38:56 2025 +0100
vfs: Fix some whitespace
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit e7fb3d3e944432f219a9bb25e4fcdd9fcd025766
Author: Volker Lendecke <[email protected]>
Date: Sat Feb 1 10:41:40 2025 +0100
vfs: Fix some error path memleaks
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 1f0be0edd7e8963f5f5ab06185b68ce3f8fdff03
Author: Volker Lendecke <[email protected]>
Date: Sat Feb 1 10:48:16 2025 +0100
libsmb: Save some bytes in .text code
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 0d39a8d83d1dd2afe6c286eb67547796525ffa41
Author: Volker Lendecke <[email protected]>
Date: Sat Feb 1 17:05:01 2025 +0100
lib: Fix typos
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 0d83502fbbc1f3b369dc82cd04dd633dcd498d5f
Author: Volker Lendecke <[email protected]>
Date: Mon Feb 3 17:30:03 2025 +0100
lib: Move 968 bytes from R/W data to R/O text
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
commit 2a6209966df861844ac26cd13311abc88dddae3f
Author: Volker Lendecke <[email protected]>
Date: Mon Feb 3 18:33:46 2025 +0100
lib: Simplify ad_get_internal()
Remove an unnecessary variable
Signed-off-by: Volker Lendecke <[email protected]>
Reviewed-by: Jeremy Allison <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
lib/talloc/talloc.c | 4 +
libcli/smb/smbXcli_base.c | 2 +-
source3/lib/adouble.c | 54 ++++---
source3/lib/string_replace.c | 28 ++--
source3/lib/string_replace.h | 14 +-
source3/lib/tldap.c | 301 +++++++++++++++++++++++----------------
source3/modules/test_nfs4_acls.c | 32 ++---
source3/modules/vfs_catia.c | 283 ++++++++++++++++++------------------
source3/modules/vfs_fake_dfq.c | 2 +-
source3/modules/vfs_fake_perms.c | 6 +-
source3/modules/vfs_fruit.c | 19 ++-
source3/modules/vfs_snapper.c | 8 +-
source3/modules/vfs_tsmsm.c | 46 +++---
source3/printing/nt_printing.c | 9 +-
source3/smbd/proto.h | 1 -
source3/smbd/smb1_reply.c | 8 +-
source3/smbd/smb2_reply.c | 7 +-
source3/smbd/vfs.c | 15 --
source4/ntvfs/ipc/rap_server.c | 6 +-
19 files changed, 438 insertions(+), 407 deletions(-)
Changeset truncated at 500 lines:
diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c
index 3a93a82e456..727abe77a24 100644
--- a/lib/talloc/talloc.c
+++ b/lib/talloc/talloc.c
@@ -2750,6 +2750,10 @@ _PUBLIC_ char *talloc_asprintf_append_buffer(char *s,
const char *fmt, ...)
return s;
}
+/*
+ * Function to make string-building simple by handling intermediate
+ * realloc failures. See for example commit a37ea9d750e1.
+ */
_PUBLIC_ void talloc_asprintf_addbuf(char **ps, const char *fmt, ...)
{
va_list ap;
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index f3b534a6c6b..6b479a78145 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -4909,7 +4909,7 @@ static struct tevent_req
*smbXcli_negprot_smb2_subreq(struct smbXcli_negprot_sta
uint32_t offset;
DATA_BLOB b;
uint8_t p[38];
- const uint8_t zeros[8] = {0, };
+ static const uint8_t zeros[8] = {0, };
size_t pad;
bool ok;
diff --git a/source3/lib/adouble.c b/source3/lib/adouble.c
index 71efa4a6a9f..2e17bec01d3 100644
--- a/source3/lib/adouble.c
+++ b/source3/lib/adouble.c
@@ -282,7 +282,7 @@ static bool ad_entry_check_size(uint32_t eid,
uint32_t off,
uint32_t got_len)
{
- struct {
+ static const struct {
off_t expected_len;
bool fixed_size;
bool minimum_size;
@@ -493,7 +493,7 @@ static bool ad_pack_move_reso(struct vfs_handle_struct
*handle,
* This buffer is already set when converting a resourcefork
* stream from vfs_streams_depot backend via ad_unconvert(). It
* is NULL with vfs_streams_xattr where the resourcefork stream
- * is stored in an AppleDouble sidecar file vy vfs_fruit.
+ * is stored in an AppleDouble sidecar file by vfs_fruit.
*/
ad->ad_rsrc_data = talloc_size(ad, reso_len);
if (ad->ad_rsrc_data == NULL) {
@@ -949,7 +949,7 @@ static bool ad_unpack_xattrs(struct adouble *ad)
}
/**
- * Unpack an AppleDouble blob into a struct adoble
+ * Unpack an AppleDouble blob into a struct adouble
**/
static bool ad_unpack(struct adouble *ad, const size_t nentries,
size_t filesize)
@@ -1185,16 +1185,15 @@ static bool ad_convert_xattr(vfs_handle_struct *handle,
files_struct *fsp = NULL;
ssize_t nwritten;
- status = string_replace_allocate(handle->conn,
- e->adx_name,
- string_replace_cmaps,
- talloc_tos(),
- &mapped_name,
- vfs_translate_to_windows);
- if (!NT_STATUS_IS_OK(status) &&
- !NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED))
- {
- DBG_ERR("string_replace_allocate failed\n");
+ rc = string_replace_allocate(handle->conn,
+ e->adx_name,
+ string_replace_cmaps,
+ talloc_tos(),
+ &mapped_name,
+ vfs_translate_to_windows);
+ if (rc != 0) {
+ DBG_ERR("string_replace_allocate failed: %s\n",
+ strerror(rc));
ok = false;
goto fail;
}
@@ -1746,6 +1745,7 @@ static bool ad_collect_one_stream(struct
vfs_handle_struct *handle,
ssize_t nread;
NTSTATUS status;
bool ok;
+ int rc;
sname = synthetic_smb_fname(ad,
smb_fname->base_name,
@@ -1901,16 +1901,14 @@ static bool ad_collect_one_stream(struct
vfs_handle_struct *handle,
*p = '\0';
}
- status = string_replace_allocate(handle->conn,
- e->adx_name,
- cmaps,
- ad,
- &mapped_name,
- vfs_translate_to_unix);
- if (!NT_STATUS_IS_OK(status) &&
- !NT_STATUS_EQUAL(status, NT_STATUS_NONE_MAPPED))
- {
- DBG_ERR("string_replace_allocate failed\n");
+ rc = string_replace_allocate(handle->conn,
+ e->adx_name,
+ cmaps,
+ ad,
+ &mapped_name,
+ vfs_translate_to_unix);
+ if (rc != 0) {
+ DBG_ERR("string_replace_allocate failed: %s\n", strerror(rc));
ok = false;
goto out;
}
@@ -2451,7 +2449,7 @@ static int adouble_destructor(struct adouble *ad)
}
/**
- * Allocate a struct adouble without initialiing it
+ * Allocate a struct adouble without initializing it
*
* The struct is either hang of the fsp extension context or if fsp is
* NULL from ctx.
@@ -2581,7 +2579,6 @@ static struct adouble *ad_get_internal(TALLOC_CTX *ctx,
int rc = 0;
ssize_t len;
struct adouble *ad = NULL;
- int mode;
if (fsp != NULL) {
struct files_struct *meta_fsp = metadata_fsp(fsp);
@@ -2599,12 +2596,9 @@ static struct adouble *ad_get_internal(TALLOC_CTX *ctx,
}
/* Try rw first so we can use the fd in ad_convert() */
- mode = O_RDWR;
-
- rc = ad_open(handle, ad, fsp, smb_fname, mode, 0);
+ rc = ad_open(handle, ad, fsp, smb_fname, O_RDWR, 0);
if (rc == -1 && ((errno == EROFS) || (errno == EACCES))) {
- mode = O_RDONLY;
- rc = ad_open(handle, ad, fsp, smb_fname, mode, 0);
+ rc = ad_open(handle, ad, fsp, smb_fname, O_RDONLY, 0);
}
if (rc == -1) {
DBG_DEBUG("ad_open [%s] error [%s]\n",
diff --git a/source3/lib/string_replace.c b/source3/lib/string_replace.c
index f66f5488667..50fd83272e1 100644
--- a/source3/lib/string_replace.c
+++ b/source3/lib/string_replace.c
@@ -135,14 +135,14 @@ struct char_mappings **string_replace_init_map(TALLOC_CTX
*mem_ctx,
return cmaps;
}
-NTSTATUS string_replace_allocate(connection_struct *conn,
- const char *name_in,
- struct char_mappings **cmaps,
- TALLOC_CTX *mem_ctx,
- char **mapped_name,
- enum vfs_translate_direction direction)
+int string_replace_allocate(connection_struct *conn,
+ const char *name_in,
+ struct char_mappings **cmaps,
+ TALLOC_CTX *mem_ctx,
+ char **mapped_name,
+ enum vfs_translate_direction direction)
{
- static smb_ucs2_t *tmpbuf = NULL;
+ smb_ucs2_t *tmpbuf = NULL;
smb_ucs2_t *ptr = NULL;
struct char_mappings *map = NULL;
size_t converted_size;
@@ -151,7 +151,7 @@ NTSTATUS string_replace_allocate(connection_struct *conn,
ok = push_ucs2_talloc(talloc_tos(), &tmpbuf, name_in,
&converted_size);
if (!ok) {
- return map_nt_error_from_unix(errno);
+ return errno;
}
for (ptr = tmpbuf; *ptr; ptr++) {
@@ -172,14 +172,18 @@ NTSTATUS string_replace_allocate(connection_struct *conn,
ok = pull_ucs2_talloc(mem_ctx, mapped_name, tmpbuf,
&converted_size);
- TALLOC_FREE(tmpbuf);
+ {
+ int err = errno;
+ TALLOC_FREE(tmpbuf);
+ errno = err;
+ }
if (!ok) {
- return map_nt_error_from_unix(errno);
+ return errno;
}
- return NT_STATUS_OK;
+ return 0;
}
-const char *macos_string_replace_map =
+const char macos_string_replace_map[] =
"0x01:0xf001,0x02:0xf002,0x03:0xf003,0x04:0xf004,"
"0x05:0xf005,0x06:0xf006,0x07:0xf007,0x08:0xf008,"
"0x09:0xf009,0x0a:0xf00a,0x0b:0xf00b,0x0c:0xf00c,"
diff --git a/source3/lib/string_replace.h b/source3/lib/string_replace.h
index 012b1aa8f2e..76fe2c7690b 100644
--- a/source3/lib/string_replace.h
+++ b/source3/lib/string_replace.h
@@ -25,11 +25,11 @@ struct char_mappings;
struct char_mappings **string_replace_init_map(TALLOC_CTX *mem_ctx,
const char **mappings);
-NTSTATUS string_replace_allocate(connection_struct *conn,
- const char *name_in,
- struct char_mappings **cmaps,
- TALLOC_CTX *mem_ctx,
- char **mapped_name,
- enum vfs_translate_direction direction);
+int string_replace_allocate(connection_struct *conn,
+ const char *name_in,
+ struct char_mappings **cmaps,
+ TALLOC_CTX *mem_ctx,
+ char **mapped_name,
+ enum vfs_translate_direction direction);
-extern const char *macos_string_replace_map;
+extern const char macos_string_replace_map[];
diff --git a/source3/lib/tldap.c b/source3/lib/tldap.c
index 88f636952fb..db06e9f1282 100644
--- a/source3/lib/tldap.c
+++ b/source3/lib/tldap.c
@@ -2832,134 +2832,183 @@ struct tldap_message *tldap_ctx_lastmsg(struct
tldap_context *ld)
return ld->last_msg;
}
-static const struct { TLDAPRC rc; const char *string; } tldaprc_errmap[] =
-{
- { TLDAP_SUCCESS,
- "TLDAP_SUCCESS" },
- { TLDAP_OPERATIONS_ERROR,
- "TLDAP_OPERATIONS_ERROR" },
- { TLDAP_PROTOCOL_ERROR,
- "TLDAP_PROTOCOL_ERROR" },
- { TLDAP_TIMELIMIT_EXCEEDED,
- "TLDAP_TIMELIMIT_EXCEEDED" },
- { TLDAP_SIZELIMIT_EXCEEDED,
- "TLDAP_SIZELIMIT_EXCEEDED" },
- { TLDAP_COMPARE_FALSE,
- "TLDAP_COMPARE_FALSE" },
- { TLDAP_COMPARE_TRUE,
- "TLDAP_COMPARE_TRUE" },
- { TLDAP_STRONG_AUTH_NOT_SUPPORTED,
- "TLDAP_STRONG_AUTH_NOT_SUPPORTED" },
- { TLDAP_STRONG_AUTH_REQUIRED,
- "TLDAP_STRONG_AUTH_REQUIRED" },
- { TLDAP_REFERRAL,
- "TLDAP_REFERRAL" },
- { TLDAP_ADMINLIMIT_EXCEEDED,
- "TLDAP_ADMINLIMIT_EXCEEDED" },
- { TLDAP_UNAVAILABLE_CRITICAL_EXTENSION,
- "TLDAP_UNAVAILABLE_CRITICAL_EXTENSION" },
- { TLDAP_CONFIDENTIALITY_REQUIRED,
- "TLDAP_CONFIDENTIALITY_REQUIRED" },
- { TLDAP_SASL_BIND_IN_PROGRESS,
- "TLDAP_SASL_BIND_IN_PROGRESS" },
- { TLDAP_NO_SUCH_ATTRIBUTE,
- "TLDAP_NO_SUCH_ATTRIBUTE" },
- { TLDAP_UNDEFINED_TYPE,
- "TLDAP_UNDEFINED_TYPE" },
- { TLDAP_INAPPROPRIATE_MATCHING,
- "TLDAP_INAPPROPRIATE_MATCHING" },
- { TLDAP_CONSTRAINT_VIOLATION,
- "TLDAP_CONSTRAINT_VIOLATION" },
- { TLDAP_TYPE_OR_VALUE_EXISTS,
- "TLDAP_TYPE_OR_VALUE_EXISTS" },
- { TLDAP_INVALID_SYNTAX,
- "TLDAP_INVALID_SYNTAX" },
- { TLDAP_NO_SUCH_OBJECT,
- "TLDAP_NO_SUCH_OBJECT" },
- { TLDAP_ALIAS_PROBLEM,
- "TLDAP_ALIAS_PROBLEM" },
- { TLDAP_INVALID_DN_SYNTAX,
- "TLDAP_INVALID_DN_SYNTAX" },
- { TLDAP_IS_LEAF,
- "TLDAP_IS_LEAF" },
- { TLDAP_ALIAS_DEREF_PROBLEM,
- "TLDAP_ALIAS_DEREF_PROBLEM" },
- { TLDAP_INAPPROPRIATE_AUTH,
- "TLDAP_INAPPROPRIATE_AUTH" },
- { TLDAP_INVALID_CREDENTIALS,
- "TLDAP_INVALID_CREDENTIALS" },
- { TLDAP_INSUFFICIENT_ACCESS,
- "TLDAP_INSUFFICIENT_ACCESS" },
- { TLDAP_BUSY,
- "TLDAP_BUSY" },
- { TLDAP_UNAVAILABLE,
- "TLDAP_UNAVAILABLE" },
- { TLDAP_UNWILLING_TO_PERFORM,
- "TLDAP_UNWILLING_TO_PERFORM" },
- { TLDAP_LOOP_DETECT,
- "TLDAP_LOOP_DETECT" },
- { TLDAP_NAMING_VIOLATION,
- "TLDAP_NAMING_VIOLATION" },
- { TLDAP_OBJECT_CLASS_VIOLATION,
- "TLDAP_OBJECT_CLASS_VIOLATION" },
- { TLDAP_NOT_ALLOWED_ON_NONLEAF,
- "TLDAP_NOT_ALLOWED_ON_NONLEAF" },
- { TLDAP_NOT_ALLOWED_ON_RDN,
- "TLDAP_NOT_ALLOWED_ON_RDN" },
- { TLDAP_ALREADY_EXISTS,
- "TLDAP_ALREADY_EXISTS" },
- { TLDAP_NO_OBJECT_CLASS_MODS,
- "TLDAP_NO_OBJECT_CLASS_MODS" },
- { TLDAP_RESULTS_TOO_LARGE,
- "TLDAP_RESULTS_TOO_LARGE" },
- { TLDAP_AFFECTS_MULTIPLE_DSAS,
- "TLDAP_AFFECTS_MULTIPLE_DSAS" },
- { TLDAP_OTHER,
- "TLDAP_OTHER" },
- { TLDAP_SERVER_DOWN,
- "TLDAP_SERVER_DOWN" },
- { TLDAP_LOCAL_ERROR,
- "TLDAP_LOCAL_ERROR" },
- { TLDAP_ENCODING_ERROR,
- "TLDAP_ENCODING_ERROR" },
- { TLDAP_DECODING_ERROR,
- "TLDAP_DECODING_ERROR" },
- { TLDAP_TIMEOUT,
- "TLDAP_TIMEOUT" },
- { TLDAP_AUTH_UNKNOWN,
- "TLDAP_AUTH_UNKNOWN" },
- { TLDAP_FILTER_ERROR,
- "TLDAP_FILTER_ERROR" },
- { TLDAP_USER_CANCELLED,
- "TLDAP_USER_CANCELLED" },
- { TLDAP_PARAM_ERROR,
- "TLDAP_PARAM_ERROR" },
- { TLDAP_NO_MEMORY,
- "TLDAP_NO_MEMORY" },
- { TLDAP_CONNECT_ERROR,
- "TLDAP_CONNECT_ERROR" },
- { TLDAP_NOT_SUPPORTED,
- "TLDAP_NOT_SUPPORTED" },
- { TLDAP_CONTROL_NOT_FOUND,
- "TLDAP_CONTROL_NOT_FOUND" },
- { TLDAP_NO_RESULTS_RETURNED,
- "TLDAP_NO_RESULTS_RETURNED" },
- { TLDAP_MORE_RESULTS_TO_RETURN,
- "TLDAP_MORE_RESULTS_TO_RETURN" },
- { TLDAP_CLIENT_LOOP,
- "TLDAP_CLIENT_LOOP" },
- { TLDAP_REFERRAL_LIMIT_EXCEEDED,
- "TLDAP_REFERRAL_LIMIT_EXCEEDED" },
-};
-
const char *tldap_rc2string(TLDAPRC rc)
{
- size_t i;
-
- for (i=0; i<ARRAY_SIZE(tldaprc_errmap); i++) {
- if (TLDAP_RC_EQUAL(rc, tldaprc_errmap[i].rc)) {
- return tldaprc_errmap[i].string;
- }
+ switch (TLDAP_RC_V(rc)) {
+ case 0x00:
+ return "TLDAP_SUCCESS";
+ break;
+ case 0x01:
+ return "TLDAP_OPERATIONS_ERROR";
+ break;
+ case 0x02:
+ return "TLDAP_PROTOCOL_ERROR";
+ break;
+ case 0x03:
+ return "TLDAP_TIMELIMIT_EXCEEDED";
+ break;
+ case 0x04:
+ return "TLDAP_SIZELIMIT_EXCEEDED";
+ break;
+ case 0x05:
+ return "TLDAP_COMPARE_FALSE";
+ break;
+ case 0x06:
+ return "TLDAP_COMPARE_TRUE";
+ break;
+ case 0x07:
+ return "TLDAP_STRONG_AUTH_NOT_SUPPORTED";
+ break;
+ case 0x08:
+ return "TLDAP_STRONG_AUTH_REQUIRED";
+ break;
+ case 0x0a:
+ return "TLDAP_REFERRAL";
+ break;
+ case 0x0b:
+ return "TLDAP_ADMINLIMIT_EXCEEDED";
+ break;
+ case 0x0c:
+ return "TLDAP_UNAVAILABLE_CRITICAL_EXTENSION";
+ break;
+ case 0x0d:
+ return "TLDAP_CONFIDENTIALITY_REQUIRED";
+ break;
+ case 0x0e:
+ return "TLDAP_SASL_BIND_IN_PROGRESS";
+ break;
+ case 0x10:
+ return "TLDAP_NO_SUCH_ATTRIBUTE";
+ break;
+ case 0x11:
+ return "TLDAP_UNDEFINED_TYPE";
+ break;
+ case 0x12:
+ return "TLDAP_INAPPROPRIATE_MATCHING";
+ break;
+ case 0x13:
+ return "TLDAP_CONSTRAINT_VIOLATION";
+ break;
+ case 0x14:
+ return "TLDAP_TYPE_OR_VALUE_EXISTS";
+ break;
+ case 0x15:
+ return "TLDAP_INVALID_SYNTAX";
+ break;
+ case 0x20:
+ return "TLDAP_NO_SUCH_OBJECT";
+ break;
+ case 0x21:
+ return "TLDAP_ALIAS_PROBLEM";
+ break;
+ case 0x22:
+ return "TLDAP_INVALID_DN_SYNTAX";
+ break;
+ case 0x23:
+ return "TLDAP_IS_LEAF";
+ break;
+ case 0x24:
+ return "TLDAP_ALIAS_DEREF_PROBLEM";
+ break;
+ case 0x30:
+ return "TLDAP_INAPPROPRIATE_AUTH";
+ break;
+ case 0x31:
+ return "TLDAP_INVALID_CREDENTIALS";
+ break;
+ case 0x32:
+ return "TLDAP_INSUFFICIENT_ACCESS";
+ break;
+ case 0x33:
+ return "TLDAP_BUSY";
+ break;
+ case 0x34:
+ return "TLDAP_UNAVAILABLE";
+ break;
+ case 0x35:
+ return "TLDAP_UNWILLING_TO_PERFORM";
+ break;
+ case 0x36:
+ return "TLDAP_LOOP_DETECT";
+ break;
+ case 0x40:
+ return "TLDAP_NAMING_VIOLATION";
+ break;
+ case 0x41:
+ return "TLDAP_OBJECT_CLASS_VIOLATION";
+ break;
+ case 0x42:
+ return "TLDAP_NOT_ALLOWED_ON_NONLEAF";
+ break;
+ case 0x43:
+ return "TLDAP_NOT_ALLOWED_ON_RDN";
+ break;
+ case 0x44:
+ return "TLDAP_ALREADY_EXISTS";
+ break;
+ case 0x45:
+ return "TLDAP_NO_OBJECT_CLASS_MODS";
+ break;
+ case 0x46:
+ return "TLDAP_RESULTS_TOO_LARGE";
+ break;
+ case 0x47:
+ return "TLDAP_AFFECTS_MULTIPLE_DSAS";
+ break;
+ case 0x50:
+ return "TLDAP_OTHER";
+ break;
+ case 0x51:
+ return "TLDAP_SERVER_DOWN";
+ break;
+ case 0x52:
+ return "TLDAP_LOCAL_ERROR";
+ break;
+ case 0x53:
+ return "TLDAP_ENCODING_ERROR";
+ break;
--
Samba Shared Repository