diff options
Diffstat (limited to 'lib/util/charset/charcnv.c')
-rw-r--r-- | lib/util/charset/charcnv.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/util/charset/charcnv.c b/lib/util/charset/charcnv.c index 1f3b1ac846..18be2bcac2 100644 --- a/lib/util/charset/charcnv.c +++ b/lib/util/charset/charcnv.c @@ -240,7 +240,7 @@ convert: _PUBLIC_ ssize_t 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) + void *dest, size_t destlen, bool allow_badcharcnv) { size_t i_len, o_len; size_t retval; @@ -248,6 +248,10 @@ _PUBLIC_ ssize_t convert_string_convenience(struct smb_iconv_convenience *ic, char* outbuf = (char*)dest; smb_iconv_t descriptor; + if (allow_badcharcnv) { + return -1; + } + if (srclen == (size_t)-1) srclen = strlen(inbuf)+1; @@ -305,10 +309,13 @@ _PUBLIC_ ssize_t 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) + void **dest, bool allow_badcharcnv) { smb_iconv_t descriptor; + if (allow_badcharcnv) + return (size_t)-1; + *dest = NULL; if (src == NULL || srclen == (size_t)-1 || srclen == 0) |