diff options
author | Jeremy Allison <jra@samba.org> | 2007-04-16 19:10:16 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:19:23 -0500 |
commit | e59b5276b56d6963ddd0598bbd1b15426d2d13e8 (patch) | |
tree | 39c65d0290ef025882df7d39afcb4d1e477a8b58 /source/param/loadparm.c | |
parent | 66b0a6cc51a3987c489cc71a17c0da632bf6a6bc (diff) | |
download | samba-e59b5276b56d6963ddd0598bbd1b15426d2d13e8.tar.gz samba-e59b5276b56d6963ddd0598bbd1b15426d2d13e8.tar.xz samba-e59b5276b56d6963ddd0598bbd1b15426d2d13e8.zip |
r22266: Fix bug #4512 - we were returning a volume label greater than
32 unicode chars. Windows XP doesn't like that :-).
Jeremy
Diffstat (limited to 'source/param/loadparm.c')
-rw-r--r-- | source/param/loadparm.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/source/param/loadparm.c b/source/param/loadparm.c index a049b2d47ad..ea434e47689 100644 --- a/source/param/loadparm.c +++ b/source/param/loadparm.c @@ -5299,15 +5299,22 @@ struct share_params *snum2params_static(int snum) A useful volume label function. ********************************************************************/ -char *volume_label(int snum) +const char *volume_label(int snum) { - char *ret = lp_volume(snum); - if (!*ret) - return lp_servicename(snum); - return (ret); + char *ret; + const char *label = lp_volume(snum); + if (!*label) { + label = lp_servicename(snum); + } + + /* This returns a 33 byte guarenteed null terminated string. */ + ret = talloc_strndup(main_loop_talloc_get(), label, 32); + if (!ret) { + return ""; + } + return ret; } - /******************************************************************* Set the server type we will announce as via nmbd. ********************************************************************/ |