]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libsmb: Allow NULL print_name in reparse_data_buffer_marshall()
authorVolker Lendecke <vl@samba.org>
Tue, 26 Sep 2023 12:54:37 +0000 (14:54 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 4 Oct 2023 20:31:36 +0000 (20:31 +0000)
read_symlink_reparse() does this.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
libcli/smb/reparse.c

index 1a6feff17e1373bf03e679ebbcab2cf67110be14..49ecc77725de74a243800dca7e2011f7b5c6bc36 100644 (file)
@@ -388,6 +388,7 @@ reparse_data_buffer_marshall_syml(const struct symlink_reparse_struct *src,
 {
        uint8_t sbuf[12];
        struct iovec iov[3];
+       const char *print_name = src->print_name;
        uint8_t *subst_utf16 = NULL;
        uint8_t *print_utf16 = NULL;
        size_t subst_len = 0;
@@ -399,7 +400,7 @@ reparse_data_buffer_marshall_syml(const struct symlink_reparse_struct *src,
                return -1;
        }
        if (src->print_name == NULL) {
-               return -1;
+               print_name = src->substitute_name;
        }
 
        iov[0] = (struct iovec){
@@ -428,8 +429,8 @@ reparse_data_buffer_marshall_syml(const struct symlink_reparse_struct *src,
        ok = convert_string_talloc(talloc_tos(),
                                   CH_UNIX,
                                   CH_UTF16,
-                                  src->print_name,
-                                  strlen(src->print_name),
+                                  print_name,
+                                  strlen(print_name),
                                   &print_utf16,
                                   &print_len);
        if (!ok) {