summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-10-16 11:57:51 -0700
committerKarolin Seeger <kseeger@samba.org>2008-10-21 12:29:00 +0200
commitf3b0e219f1a7660ff275db701935eecbe053fa25 (patch)
treeac7325a0a926d7a0b8d67c4a5c4772756665875a /source
parent520dcfffe78bb079bbdad6de5a4cdc392527f4b8 (diff)
downloadsamba-f3b0e219f1a7660ff275db701935eecbe053fa25.tar.gz
samba-f3b0e219f1a7660ff275db701935eecbe053fa25.tar.xz
samba-f3b0e219f1a7660ff275db701935eecbe053fa25.zip
Fix bug 5826 - Directory/Filenames get truncated when 3.2.0 client acesses old server.
Karolin this is a show-stopper for 3.2.5. There was some code in pull_ucs2_base_talloc() to cope with this case which hadn't been added to pull_ascii_base_talloc(). The older Samba returns non unicode names which is why you are seeing this codepath being executed. Jeremy. (cherry picked from commit 09fa53d927436310ae3c17096d42e2fa4de1dd2e)
Diffstat (limited to 'source')
-rw-r--r--source/lib/charcnv.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c
index cea234fadd1..eec7ae30afd 100644
--- a/source/lib/charcnv.c
+++ b/source/lib/charcnv.c
@@ -1209,7 +1209,21 @@ static size_t pull_ascii_base_talloc(TALLOC_CTX *ctx,
if (dest_len && dest) {
/* Did we already process the terminating zero ? */
if (dest[dest_len-1] != 0) {
- dest[dest_len-1] = 0;
+ size_t size = talloc_get_size(dest);
+ /* Have we got space to append the '\0' ? */
+ if (size <= dest_len) {
+ /* No, realloc. */
+ dest = TALLOC_REALLOC_ARRAY(ctx, dest, char,
+ dest_len+1);
+ if (!dest) {
+ /* talloc fail. */
+ dest_len = (size_t)-1;
+ return 0;
+ }
+ }
+ /* Yay - space ! */
+ dest[dest_len] = '\0';
+ dest_len++;
}
} else if (dest) {
dest[0] = 0;