From 653a1c312e6b85f1d8113beec52a27e0ba71ef79 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 31 Oct 2014 11:01:26 -0700 Subject: [PATCH] s3: nmbd: Ensure NetBIOS names are only 15 characters stored. This screws up if the name is greater than MAX_NETBIOSNAME_LEN-1 in the unix charset, but less than or equal to MAX_NETBIOSNAME_LEN-1 in the DOS charset, but this is so old we have to live with that. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10920 Signed-off-by: Jeremy Allison Reviewed-by: Andreas Schneider (cherry picked from commit 7467f6e72cba214eeca75c34e9d9fba354c7ef31) Signed-off-by: Andreas Schneider --- source3/lib/util_names.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source3/lib/util_names.c b/source3/lib/util_names.c index cf54a0e..1392b48 100644 --- a/source3/lib/util_names.c +++ b/source3/lib/util_names.c @@ -60,7 +60,15 @@ static bool set_my_netbios_names(const char *name, int i) { SAFE_FREE(smb_my_netbios_names[i]); - smb_my_netbios_names[i] = SMB_STRDUP(name); + /* + * Don't include space for terminating '\0' in strndup, + * it is automatically added. This screws up if the name + * is greater than MAX_NETBIOSNAME_LEN-1 in the unix + * charset, but less than or equal to MAX_NETBIOSNAME_LEN-1 + * in the DOS charset, but this is so old we have to live + * with that. + */ + smb_my_netbios_names[i] = SMB_STRNDUP(name, MAX_NETBIOSNAME_LEN-1); if (!smb_my_netbios_names[i]) return False; return strupper_m(smb_my_netbios_names[i]); -- 2.1.2