r25277: Belt-and-braces approach to Volker's fix for RPC-SAMBA3-GETUSERNAME.
authorJeremy Allison <jra@samba.org>
Fri, 21 Sep 2007 10:32:57 +0000 (10:32 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:30:57 +0000 (12:30 -0500)
If we promise dest is null terminated, ensure we do it even on
fast path exits.
Jeremy.

source/lib/charcnv.c

index f6b9e06ec20489e9c6d94f0a269a982b0300c8c8..b1e3d3bdcfba32f734984b153d840157ae7d8409 100644 (file)
@@ -1403,15 +1403,18 @@ size_t pull_ucs2(const void *base_ptr, char *dest, const void *src, size_t dest_
 {
        size_t ret;
 
-       if (!src_len) {
-               return 0;
-       }
-
        if (dest_len == (size_t)-1) {
                /* No longer allow dest_len of -1. */
                smb_panic("pull_ucs2 - invalid dest_len of -1");
        }
 
+       if (!src_len) {
+               if (dest && dest_len > 0) {
+                       dest[0] = '\0';
+               }
+               return 0;
+       }
+
        if (ucs2_align(base_ptr, src, flags)) {
                src = (const void *)((const char *)src + 1);
                if (src_len != (size_t)-1)