diff options
Diffstat (limited to 'meta-networking/recipes-connectivity/samba/samba-4.1.12/15-fix-netbios-name-truncation.patch')
-rw-r--r-- | meta-networking/recipes-connectivity/samba/samba-4.1.12/15-fix-netbios-name-truncation.patch | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/meta-networking/recipes-connectivity/samba/samba-4.1.12/15-fix-netbios-name-truncation.patch b/meta-networking/recipes-connectivity/samba/samba-4.1.12/15-fix-netbios-name-truncation.patch deleted file mode 100644 index 9721afa179..0000000000 --- a/meta-networking/recipes-connectivity/samba/samba-4.1.12/15-fix-netbios-name-truncation.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 170166b8a0076089c6a8505f53a22f5b72c15786 Mon Sep 17 00:00:00 2001 -From: Jeremy Allison <jra@samba.org> -Date: Tue, 28 Oct 2014 11:55:30 -0700 -Subject: [PATCH] s3-nmbd: Fix netbios name truncation. - -Try and cope with truncation more intelligently. - -BUG: https://bugzilla.samba.org/show_bug.cgi?id=10896 - -Signed-off-by: Jeremy Allison <jra@samba.org> -Reviewed-by: Andreas Schneider <asn@samba.org> -(cherry picked from commit 6adcc7bffd5e1474ecba04d2328955c0b208cabc) -Signed-off-by: Andreas Schneider <asn@samba.org> ---- - source3/nmbd/nmbd_nameregister.c | 76 +++++++++++++++++++++++++++++++++++----- - 1 file changed, 68 insertions(+), 8 deletions(-) - -diff --git a/source3/nmbd/nmbd_nameregister.c b/source3/nmbd/nmbd_nameregister.c -index 71c4751..8b078e6 100644 ---- a/source3/nmbd/nmbd_nameregister.c -+++ b/source3/nmbd/nmbd_nameregister.c -@@ -482,17 +482,77 @@ void register_name(struct subnet_record *subrec, - { - struct nmb_name nmbname; - nstring nname; -+ size_t converted_size; - - errno = 0; -- push_ascii_nstring(nname, name); -- if (errno == E2BIG) { -- unstring tname; -- pull_ascii_nstring(tname, sizeof(tname), nname); -- DEBUG(0,("register_name: NetBIOS name %s is too long. Truncating to %s\n", -- name, tname)); -- make_nmb_name(&nmbname, tname, type); -- } else { -+ converted_size = push_ascii_nstring(nname, name); -+ if (converted_size != (size_t)-1) { -+ /* Success. */ - make_nmb_name(&nmbname, name, type); -+ } else if (errno == E2BIG) { -+ /* -+ * Name converted to CH_DOS is too large. -+ * try to truncate. -+ */ -+ char *converted_str_dos = NULL; -+ char *converted_str_unix = NULL; -+ bool ok; -+ -+ converted_size = 0; -+ -+ ok = convert_string_talloc(talloc_tos(), -+ CH_UNIX, -+ CH_DOS, -+ name, -+ strlen(name)+1, -+ &converted_str_dos, -+ &converted_size); -+ if (!ok) { -+ DEBUG(0,("register_name: NetBIOS name %s cannot be " -+ "converted. Failing to register name.\n", -+ name)); -+ return; -+ } -+ -+ /* -+ * As it's now CH_DOS codepage -+ * we truncate by writing '\0' at -+ * MAX_NETBIOSNAME_LEN-1 and then -+ * convert back to CH_UNIX which we -+ * need for the make_nmb_name() call. -+ */ -+ if (converted_size >= MAX_NETBIOSNAME_LEN) { -+ converted_str_dos[MAX_NETBIOSNAME_LEN-1] = '\0'; -+ } -+ -+ ok = convert_string_talloc(talloc_tos(), -+ CH_DOS, -+ CH_UNIX, -+ converted_str_dos, -+ strlen(converted_str_dos)+1, -+ &converted_str_unix, -+ &converted_size); -+ if (!ok) { -+ DEBUG(0,("register_name: NetBIOS name %s cannot be " -+ "converted back to CH_UNIX. " -+ "Failing to register name.\n", -+ converted_str_dos)); -+ TALLOC_FREE(converted_str_dos); -+ return; -+ } -+ -+ make_nmb_name(&nmbname, converted_str_unix, type); -+ -+ TALLOC_FREE(converted_str_dos); -+ TALLOC_FREE(converted_str_unix); -+ } else { -+ /* -+ * Generic conversion error. Fail to register. -+ */ -+ DEBUG(0,("register_name: NetBIOS name %s cannot be " -+ "converted (%s). Failing to register name.\n", -+ name, strerror(errno))); -+ return; - } - - /* Always set the NB_ACTIVE flag on the name we are --- -2.1.2 - -From 653a1c312e6b85f1d8113beec52a27e0ba71ef79 Mon Sep 17 00:00:00 2001 -From: Jeremy Allison <jra@samba.org> -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 <jra@samba.org> -Reviewed-by: Andreas Schneider <asn@samba.org> - -(cherry picked from commit 7467f6e72cba214eeca75c34e9d9fba354c7ef31) -Signed-off-by: Andreas Schneider <asn@samba.org> ---- - 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 - |