The branch, master has been updated
       via  15e84a9 charcnv: removed the allow_badcharcnv and allow_bad_conv 
options to convert_string*()
       via  4518566 charset: remove another allow_badcharcnv check
      from  2639f0b s3-prototypes: remove protos of some dead functions.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 15e84a9a09c5a86416e964a3258ee35718fbf45a
Author: Andrew Tridgell <tri...@samba.org>
Date:   Thu Mar 24 10:59:41 2011 +1100

    charcnv: removed the allow_badcharcnv and allow_bad_conv options to 
convert_string*()
    
    we shouldn't accept bad multi-byte strings, it just hides problems
    
    Autobuild-User: Andrew Tridgell <tri...@samba.org>
    Autobuild-Date: Thu Mar 24 01:47:26 CET 2011 on sn-devel-104

commit 451856698fc04a9426ec9cb1ec039574f82f56bb
Author: Andrew Tridgell <tri...@samba.org>
Date:   Wed Mar 23 17:12:05 2011 +1100

    charset: remove another allow_badcharcnv check
    
    better to fail only if there is a bad character

-----------------------------------------------------------------------

Summary of changes:
 lib/tdr/tdr.c                                  |    4 +-
 lib/util/charset/charcnv.c                     |   19 +--
 lib/util/charset/charset.h                     |   16 +-
 lib/util/charset/tests/iconv.c                 |    6 +-
 lib/util/charset/util_unistr.c                 |   42 ++---
 libcli/auth/msrpc_parse.c                      |    4 +-
 libcli/auth/ntlm_check.c                       |    2 +-
 libcli/auth/smbencrypt.c                       |    3 +-
 libgpo/gpo_ini.c                               |    2 +-
 librpc/ndr/ndr_drsuapi.c                       |    2 +-
 librpc/ndr/ndr_string.c                        |   20 +-
 source3/include/proto.h                        |    2 +-
 source3/lib/charcnv.c                          |  228 +++---------------------
 source3/lib/dprintf.c                          |    2 +-
 source3/lib/eventlog/eventlog.c                |    2 +-
 source3/lib/smbldap.c                          |    2 +-
 source3/lib/tldap_util.c                       |    9 +-
 source3/libsmb/clifile.c                       |    7 +-
 source3/libsmb/climessage.c                    |    6 +-
 source3/libsmb/clirap.c                        |    5 +-
 source3/libsmb/clitrans.c                      |    2 +-
 source3/passdb/pdb_ads.c                       |    5 +-
 source3/registry/reg_parse.c                   |    2 +-
 source3/rpc_server/lsa/srv_lsa_nt.c            |    3 +-
 source3/smbd/mangle_hash2.c                    |    2 +-
 source3/smbd/message.c                         |    2 +-
 source3/smbd/smb2_create.c                     |    2 +-
 source3/smbd/smb2_find.c                       |    2 +-
 source3/smbd/smb2_ioctl.c                      |    2 +-
 source3/smbd/smb2_tcon.c                       |    2 +-
 source3/torture/utable.c                       |    4 +-
 source3/utils/ntlm_auth_diagnostics.c          |    2 +-
 source3/web/cgi.c                              |    8 +-
 source4/dsdb/samdb/ldb_modules/password_hash.c |    6 +-
 source4/dsdb/samdb/ldb_modules/samldb.c        |    2 +-
 source4/dsdb/schema/schema_syntax.c            |   10 +-
 source4/kdc/kpasswdd.c                         |    4 +-
 source4/lib/registry/ldb.c                     |    5 +-
 source4/lib/registry/patchfile_dotreg.c        |    4 +-
 source4/lib/registry/tests/generic.c           |    6 +-
 source4/lib/registry/util.c                    |    4 +-
 source4/libcli/raw/rawfileinfo.c               |    2 +-
 source4/libcli/raw/rawrequest.c                |    8 +-
 source4/libcli/smb2/request.c                  |    5 +-
 source4/libnet/libnet_samdump.c                |    2 +-
 source4/rpc_server/samr/samr_password.c        |    6 +-
 source4/smb_server/smb/request.c               |    4 +-
 source4/torture/basic/charset.c                |    2 +-
 source4/torture/basic/utable.c                 |    4 +-
 source4/torture/rpc/forest_trust.c             |    3 +-
 source4/torture/rpc/samlogon.c                 |    2 +-
 source4/torture/rpc/winreg.c                   |    3 +-
 52 files changed, 152 insertions(+), 351 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tdr/tdr.c b/lib/tdr/tdr.c
index ab016d0..8ce238b 100644
--- a/lib/tdr/tdr.c
+++ b/lib/tdr/tdr.c
@@ -163,7 +163,7 @@ NTSTATUS tdr_pull_charset(struct tdr_pull *tdr, TALLOC_CTX 
*ctx, const char **v,
 
        TDR_PULL_NEED_BYTES(tdr, el_size*length);
        
-       if (!convert_string_talloc(ctx, chset, CH_UNIX, 
tdr->data.data+tdr->offset, el_size*length, discard_const_p(void *, v), &ret, 
false)) {
+       if (!convert_string_talloc(ctx, chset, CH_UNIX, 
tdr->data.data+tdr->offset, el_size*length, discard_const_p(void *, v), &ret)) {
                return NT_STATUS_INVALID_PARAMETER;
        }
 
@@ -183,7 +183,7 @@ NTSTATUS tdr_push_charset(struct tdr_push *tdr, const char 
**v, uint32_t length,
        required = el_size * length;
        TDR_PUSH_NEED_BYTES(tdr, required);
 
-       ret = convert_string(CH_UNIX, chset, *v, strlen(*v), 
tdr->data.data+tdr->data.length, required, false);
+       ret = convert_string(CH_UNIX, chset, *v, strlen(*v), 
tdr->data.data+tdr->data.length, required);
        if (ret == -1) {
                return NT_STATUS_INVALID_PARAMETER;
        }
diff --git a/lib/util/charset/charcnv.c b/lib/util/charset/charcnv.c
index 9b93312..1e1f2a3 100644
--- a/lib/util/charset/charcnv.c
+++ b/lib/util/charset/charcnv.c
@@ -123,10 +123,9 @@ convert:
  * @returns the number of bytes occupied in the destination
  **/
 _PUBLIC_ bool convert_string_convenience(struct smb_iconv_convenience *ic,
-                               charset_t from, charset_t to,
-                               void const *src, size_t srclen, 
-                               void *dest, size_t destlen, size_t 
*converted_size,
-                               bool allow_badcharcnv)
+                                        charset_t from, charset_t to,
+                                        void const *src, size_t srclen, 
+                                        void *dest, size_t destlen, size_t 
*converted_size)
 {
        size_t i_len, o_len;
        size_t retval;
@@ -191,19 +190,15 @@ _PUBLIC_ bool convert_string_convenience(struct 
smb_iconv_convenience *ic,
  **/
 
 _PUBLIC_ bool convert_string_talloc_convenience(TALLOC_CTX *ctx, 
-                                      struct smb_iconv_convenience *ic, 
-                                      charset_t from, charset_t to, 
-                                      void const *src, size_t srclen, 
-                                      void *dst, size_t *converted_size, 
-                                          bool allow_badcharcnv)
+                                               struct smb_iconv_convenience 
*ic, 
+                                               charset_t from, charset_t to, 
+                                               void const *src, size_t srclen, 
+                                               void *dst, size_t 
*converted_size)
 {
        void **dest = (void **)dst;
        smb_iconv_t descriptor;
        ssize_t ret;
 
-       if (allow_badcharcnv)
-               return false; /* Not implemented yet */
-
        *dest = NULL;
 
        if (src == NULL || srclen == (size_t)-1 || srclen == 0)
diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h
index 943bfa4..494a4eb 100644
--- a/lib/util/charset/charset.h
+++ b/lib/util/charset/charset.h
@@ -155,14 +155,13 @@ ssize_t push_string(void *dest, const char *src, size_t 
dest_len, int flags);
 ssize_t pull_string(char *dest, const void *src, size_t dest_len, size_t 
src_len, int flags);
 
 bool convert_string_talloc(TALLOC_CTX *ctx, 
-                                      charset_t from, charset_t to, 
-                                      void const *src, size_t srclen, 
-                                      void *dest, size_t *converted_size, 
-                                          bool allow_badcharcnv);
+                          charset_t from, charset_t to, 
+                          void const *src, size_t srclen, 
+                          void *dest, size_t *converted_size);
 
 size_t convert_string(charset_t from, charset_t to,
-                               void const *src, size_t srclen, 
-                               void *dest, size_t destlen, bool 
allow_badcharcnv);
+                     void const *src, size_t srclen, 
+                     void *dest, size_t destlen);
 
 ssize_t iconv_talloc(TALLOC_CTX *mem_ctx, 
                                       smb_iconv_t cd,
@@ -206,13 +205,12 @@ struct smb_iconv_convenience 
*smb_iconv_convenience_reinit(TALLOC_CTX *mem_ctx,
 bool convert_string_convenience(struct smb_iconv_convenience *ic,
                                charset_t from, charset_t to,
                                void const *src, size_t srclen, 
-                               void *dest, size_t destlen, size_t 
*converted_size,
-                               bool allow_badcharcnv);
+                               void *dest, size_t destlen, size_t 
*converted_size);
 bool convert_string_talloc_convenience(TALLOC_CTX *ctx, 
                                       struct smb_iconv_convenience *ic, 
                                       charset_t from, charset_t to, 
                                       void const *src, size_t srclen, 
-                                      void *dest, size_t *converted_size, bool 
allow_badcharcnv);
+                                      void *dest, size_t *converted_size);
 /* iconv */
 smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode);
 int smb_iconv_close(smb_iconv_t cd);
diff --git a/lib/util/charset/tests/iconv.c b/lib/util/charset/tests/iconv.c
index a1a0d97..9b48771 100644
--- a/lib/util/charset/tests/iconv.c
+++ b/lib/util/charset/tests/iconv.c
@@ -419,7 +419,7 @@ static bool test_string2key(struct torture_context *tctx)
 
        torture_comment(tctx, "converting random buffer\n");
 
-       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF8, (void 
*)buf, len*2, (void**)&dest, &ret, false)) {
+       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF8, (void 
*)buf, len*2, (void**)&dest, &ret)) {
                torture_fail(tctx, "Failed to convert random buffer\n");
        }
 
@@ -429,7 +429,7 @@ static bool test_string2key(struct torture_context *tctx)
 
        torture_comment(tctx, "converting fixed buffer to UTF16\n");
 
-       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF16, (void 
*)le1, 20, (void**)&munged1, &ret, false)) {
+       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF16, (void 
*)le1, 20, (void**)&munged1, &ret)) {
                torture_fail(tctx, "Failed to convert fixed buffer to 
UTF16_MUNGED\n");
        }
 
@@ -437,7 +437,7 @@ static bool test_string2key(struct torture_context *tctx)
 
        torture_comment(tctx, "converting fixed buffer to UTF8\n");
 
-       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF8, (void 
*)le1, 20, (void**)&out1, &ret, false)) {
+       if (!convert_string_talloc(mem_ctx, CH_UTF16MUNGED, CH_UTF8, (void 
*)le1, 20, (void**)&out1, &ret)) {
                torture_fail(tctx, "Failed to convert fixed buffer to UTF8\n");
        }
 
diff --git a/lib/util/charset/util_unistr.c b/lib/util/charset/util_unistr.c
index ad2ba68..c59620e 100644
--- a/lib/util/charset/util_unistr.c
+++ b/lib/util/charset/util_unistr.c
@@ -370,7 +370,7 @@ static ssize_t push_ascii(void *dest, const char *src, 
size_t dest_len, int flag
        if (flags & (STR_TERMINATE | STR_TERMINATE_ASCII))
                src_len++;
 
-       return convert_string(CH_UNIX, CH_DOS, src, src_len, dest, dest_len, 
false);
+       return convert_string(CH_UNIX, CH_DOS, src, src_len, dest, dest_len);
 }
 
 /**
@@ -386,7 +386,7 @@ _PUBLIC_ bool push_ascii_talloc(TALLOC_CTX *ctx, char 
**dest, const char *src, s
 {
        size_t src_len = strlen(src)+1;
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UNIX, CH_DOS, src, src_len, (void 
**)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_UNIX, CH_DOS, src, src_len, (void 
**)dest, converted_size);
 }
 
 
@@ -420,7 +420,7 @@ static ssize_t pull_ascii(char *dest, const void *src, 
size_t dest_len, size_t s
                }
        }
 
-       ret = convert_string(CH_DOS, CH_UNIX, src, src_len, dest, dest_len, 
false);
+       ret = convert_string(CH_DOS, CH_UNIX, src, src_len, dest, dest_len);
 
        if (dest_len)
                dest[MIN(ret, dest_len-1)] = 0;
@@ -473,7 +473,7 @@ static ssize_t push_ucs2(void *dest, const char *src, 
size_t dest_len, int flags
        /* ucs2 is always a multiple of 2 bytes */
        dest_len &= ~1;
 
-       ret = convert_string(CH_UNIX, CH_UTF16, src, src_len, dest, dest_len, 
false);
+       ret = convert_string(CH_UNIX, CH_UTF16, src, src_len, dest, dest_len);
        if (ret == (size_t)-1) {
                return 0;
        }
@@ -497,7 +497,7 @@ _PUBLIC_ bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t 
**dest, const char *s
 {
        size_t src_len = strlen(src)+1;
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UNIX, CH_UTF16, src, src_len, 
(void **)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_UNIX, CH_UTF16, src, src_len, 
(void **)dest, converted_size);
 }
 
 
@@ -513,7 +513,7 @@ _PUBLIC_ bool push_utf8_talloc(TALLOC_CTX *ctx, char 
**dest, const char *src, si
 {
        size_t src_len = strlen(src)+1;
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UNIX, CH_UTF8, src, src_len, (void 
**)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_UNIX, CH_UTF8, src, src_len, (void 
**)dest, converted_size);
 }
 
 /**
@@ -549,7 +549,7 @@ static size_t pull_ucs2(char *dest, const void *src, size_t 
dest_len, size_t src
        if (src_len != (size_t)-1)
                src_len &= ~1;
        
-       ret = convert_string(CH_UTF16, CH_UNIX, src, src_len, dest, dest_len, 
false);
+       ret = convert_string(CH_UTF16, CH_UNIX, src, src_len, dest, dest_len);
        if (dest_len)
                dest[MIN(ret, dest_len-1)] = 0;
 
@@ -568,7 +568,7 @@ _PUBLIC_ bool pull_ascii_talloc(TALLOC_CTX *ctx, char 
**dest, const char *src, s
 {
        size_t src_len = strlen(src)+1;
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_DOS, CH_UNIX, src, src_len, (void 
**)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_DOS, CH_UNIX, src, src_len, (void 
**)dest, converted_size);
 }
 
 /**
@@ -583,7 +583,7 @@ _PUBLIC_ bool pull_ucs2_talloc(TALLOC_CTX *ctx, char 
**dest, const smb_ucs2_t *s
 {
        size_t src_len = utf16_len(src);
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UTF16, CH_UNIX, src, src_len, 
(void **)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_UTF16, CH_UNIX, src, src_len, 
(void **)dest, converted_size);
 }
 
 /**
@@ -598,7 +598,7 @@ _PUBLIC_ bool pull_utf8_talloc(TALLOC_CTX *ctx, char 
**dest, const char *src, si
 {
        size_t src_len = strlen(src)+1;
        *dest = NULL;
-       return convert_string_talloc(ctx, CH_UTF8, CH_UNIX, src, src_len, (void 
**)dest, converted_size, false);
+       return convert_string_talloc(ctx, CH_UTF8, CH_UNIX, src, src_len, (void 
**)dest, converted_size);
 }
 
 /**
@@ -665,15 +665,13 @@ _PUBLIC_ ssize_t pull_string(char *dest, const void *src, 
size_t dest_len, size_
  * @returns the number of bytes occupied in the destination
  **/
 _PUBLIC_ size_t convert_string(charset_t from, charset_t to,
-                               void const *src, size_t srclen, 
-                               void *dest, size_t destlen, 
-                               bool allow_badcharcnv)
+                              void const *src, size_t srclen, 
+                              void *dest, size_t destlen)
 {
        size_t ret;
        if (!convert_string_convenience(get_iconv_convenience(), from, to, 
-                                                                         src, 
srclen,
-                                                                         dest, 
destlen, &ret,
-                                                                         
allow_badcharcnv))
+                                       src, srclen,
+                                       dest, destlen, &ret))
                return -1;
        return ret;
 }
@@ -690,14 +688,12 @@ _PUBLIC_ size_t convert_string(charset_t from, charset_t 
to,
  **/
 
 _PUBLIC_ bool convert_string_talloc(TALLOC_CTX *ctx, 
-                                      charset_t from, charset_t to, 
-                                      void const *src, size_t srclen, 
-                                      void *dest, size_t *converted_size, 
-                                          bool allow_badcharcnv)
+                                   charset_t from, charset_t to, 
+                                   void const *src, size_t srclen, 
+                                   void *dest, size_t *converted_size)
 {
        return convert_string_talloc_convenience(ctx, get_iconv_convenience(),
-                                                                               
         from, to, src, srclen, dest,
-                                                                               
         converted_size, 
-                                                                               
         allow_badcharcnv);
+                                                from, to, src, srclen, dest,
+                                                converted_size);
 }
 
diff --git a/libcli/auth/msrpc_parse.c b/libcli/auth/msrpc_parse.c
index 7ac6fb5..1351dfa 100644
--- a/libcli/auth/msrpc_parse.c
+++ b/libcli/auth/msrpc_parse.c
@@ -264,7 +264,7 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx,
                                        size_t pull_len;
                                        if (!convert_string_talloc(mem_ctx, 
CH_UTF16, CH_UNIX, 
                                                                   blob->data + 
ptr, len1, 
-                                                                  ps, 
&pull_len, false)) {
+                                                                  ps, 
&pull_len)) {
                                                ret = false;
                                                goto cleanup;
                                        }
@@ -300,7 +300,7 @@ bool msrpc_parse(TALLOC_CTX *mem_ctx,
 
                                        if (!convert_string_talloc(mem_ctx, 
CH_DOS, CH_UNIX, 
                                                                   blob->data + 
ptr, len1, 
-                                                                  ps, 
&pull_len, false)) {
+                                                                  ps, 
&pull_len)) {
                                                ret = false;
                                                goto cleanup;
                                        }
diff --git a/libcli/auth/ntlm_check.c b/libcli/auth/ntlm_check.c
index da16ce2..9cbd495 100644
--- a/libcli/auth/ntlm_check.c
+++ b/libcli/auth/ntlm_check.c
@@ -322,7 +322,7 @@ NTSTATUS ntlm_password_check(TALLOC_CTX *mem_ctx,
                if (lm_response->length && 
                    (convert_string_talloc(mem_ctx, CH_DOS, CH_UNIX, 
                                          lm_response->data, 
lm_response->length, 
-                                          (void *)&unix_pw, NULL, false))) {
+                                          (void *)&unix_pw, NULL))) {
                        if (E_deshash(unix_pw, client_lm.hash)) {
                                lm_ok = true;
                        } else {
diff --git a/libcli/auth/smbencrypt.c b/libcli/auth/smbencrypt.c
index f7c60e7..3274f11 100644
--- a/libcli/auth/smbencrypt.c
+++ b/libcli/auth/smbencrypt.c
@@ -596,8 +596,7 @@ bool decode_pw_buffer(TALLOC_CTX *ctx,
                                   &in_buffer[512 - byte_len],
                                   byte_len,
                                   (void *)pp_new_pwrd,
-                                  new_pw_len,
-                                  false)) {
+                                  new_pw_len)) {
                DEBUG(0, ("decode_pw_buffer: failed to convert incoming 
password\n"));
                return false;
        }
diff --git a/libgpo/gpo_ini.c b/libgpo/gpo_ini.c
index 7df56a8..a4bff0e 100644
--- a/libgpo/gpo_ini.c
+++ b/libgpo/gpo_ini.c
@@ -88,7 +88,7 @@ static NTSTATUS convert_file_from_ucs2(TALLOC_CTX *mem_ctx,
        }
 
        if (!convert_string_talloc(mem_ctx, CH_UTF16LE, CH_UNIX, data_in, n,
-                                  (void *)&data_out, &converted_size, false))
+                                  (void *)&data_out, &converted_size))
        {
                status = NT_STATUS_INVALID_BUFFER_SIZE;
                goto out;
diff --git a/librpc/ndr/ndr_drsuapi.c b/librpc/ndr/ndr_drsuapi.c
index 86ecdcb..35216ff 100644
--- a/librpc/ndr/ndr_drsuapi.c
+++ b/librpc/ndr/ndr_drsuapi.c
@@ -109,7 +109,7 @@ static void _print_drsuapi_DsAttributeValue_str(struct 
ndr_print *ndr, const cha
                                   CH_UTF16, CH_UNIX,
                                   r->blob->data,
                                   r->blob->length,
-                                  (void **)&str, NULL, false)) {
+                                  (void **)&str, NULL)) {
                ndr_print_string(ndr, "string", "INVALID CONVERSION");
        } else {
                ndr_print_string(ndr, "string", str);
diff --git a/librpc/ndr/ndr_string.c b/librpc/ndr/ndr_string.c
index 610676c..402cf4e 100644
--- a/librpc/ndr/ndr_string.c
+++ b/librpc/ndr/ndr_string.c
@@ -86,7 +86,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   ndr->data+ndr->offset,
                                                   (len2 + c_len_term)*byte_mul,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -124,7 +124,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   ndr->data+ndr->offset,
                                                   (len1 + c_len_term)*byte_mul,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -163,7 +163,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   ndr->data+ndr->offset,
                                                   (len1 + c_len_term)*byte_mul,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -198,7 +198,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   ndr->data+ndr->offset,
                                                   (len3 + c_len_term)*byte_mul,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -230,7 +230,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   CH_UNIX,
                                                   ndr->data+ndr->offset, len3,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -249,7 +249,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
                                           ndr->data+ndr->offset, len1,
                                           (void **)(void *)&as,
-                                          &converted_size, false))
+                                          &converted_size))
                {
                        return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                              "Bad character conversion with 
flags 0x%x", flags);
@@ -274,7 +274,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull 
*ndr, int ndr_flags,
                                                   CH_UNIX,
                                                   ndr->data+ndr->offset, len1,
                                                   (void **)(void *)&as,
-                                                  &converted_size, false))
+                                                  &converted_size))
                        {
                                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                                      "Bad character conversion 
with flags 0x%x", flags);
@@ -334,7 +334,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push 
*ndr, int ndr_flags,
                s_len++;
        }
        if (!convert_string_talloc(ndr, CH_UNIX, chset, s, s_len,
-                                  (void **)(void *)&dest, &d_len, false))
+                                  (void **)(void *)&dest, &d_len))
        {
                return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
                                      "Bad character push conversion with flags 
0x%x", flags);
@@ -684,7 +684,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_charset(struct ndr_pull 
*ndr, int ndr_flags,
        if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
                                   ndr->data+ndr->offset, length*byte_mul,
                                   discard_const_p(void *, var),
-                                  &converted_size, false))
+                                  &converted_size))
        {
                return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
                                      "Bad character conversion");
@@ -707,7 +707,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_charset(struct ndr_push 
*ndr, int ndr_flags,
        NDR_PUSH_NEED_BYTES(ndr, required);
        ret = convert_string(CH_UNIX, chset, 
                             var, strlen(var),
-                            ndr->data+ndr->offset, required, false);
+                            ndr->data+ndr->offset, required);
        if (ret == -1) {
                return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
                                      "Bad character conversion");
diff --git a/source3/include/proto.h b/source3/include/proto.h
index d166813..8e1bcc6 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -415,7 +415,7 @@ void gfree_charcnv(void);
 void init_iconv(void);
 size_t convert_string(charset_t from, charset_t to,
                      void const *src, size_t srclen, 
-                     void *dest, size_t destlen, bool allow_bad_conv);
+                     void *dest, size_t destlen);
 size_t unix_strupper(const char *src, size_t srclen, char *dest, size_t 
destlen);
 char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s);
 char *strupper_talloc(TALLOC_CTX *ctx, const char *s);
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c
index 1779c4f..6addc90 100644
--- a/source3/lib/charcnv.c
+++ b/source3/lib/charcnv.c
@@ -88,7 +88,6 @@ void init_iconv(void)
  * @param srclen length of the source string in bytes
  * @param dest pointer to destination string (multibyte or singlebyte)
  * @param destlen maximal length allowed for string
- * @param allow_bad_conv determines if a "best effort" conversion is 
acceptable (never returns errors)
  * @returns the number of bytes occupied in the destination
  *
  * Ensure the srclen contains the terminating zero.
@@ -97,7 +96,7 @@ void init_iconv(void)
 
 static size_t convert_string_internal(charset_t from, charset_t to,
                      void const *src, size_t srclen, 
-                     void *dest, size_t destlen, bool allow_bad_conv)
+                     void *dest, size_t destlen)
 {
        size_t i_len, o_len;
        size_t retval;
@@ -138,8 +137,6 @@ static size_t convert_string_internal(charset_t from, 
charset_t to,
                                reason="Incomplete multibyte sequence";
                                if (!conv_silent)
                                        DEBUG(3,("convert_string_internal: 
Conversion error: %s(%s)\n",reason,inbuf));
-                               if (allow_bad_conv)
-                                       goto use_as_is;
                                return (size_t)-1;
                        case E2BIG:
                                reason="No more room"; 
@@ -159,9 +156,6 @@ static size_t convert_string_internal(charset_t from, 
charset_t to,
                                reason="Illegal multibyte sequence";
                                if (!conv_silent)
                                        DEBUG(3,("convert_string_internal: 
Conversion error: %s(%s)\n",reason,inbuf));
-                               if (allow_bad_conv)
-                                       goto use_as_is;
-                               
                                return (size_t)-1;
                        default:
                                if (!conv_silent)
@@ -171,87 +165,6 @@ static size_t convert_string_internal(charset_t from, 
charset_t to,
                /* smb_panic(reason); */
        }
        return destlen-o_len;
-
- use_as_is:
-
-       /* 
-        * Conversion not supported. This is actually an error, but there are so


-- 
Samba Shared Repository

Reply via email to