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