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

Reply via email to