[SCM] Samba Shared Repository - branch master updated

Noel Power npower at samba.org
Tue Oct 25 16:26:01 UTC 2022


The branch, master has been updated
       via  0a66c739532 s3-lib: restore truncating behavior of push_ascii_nstring()
      from  4f63c128078 gpo: Fix startup scripts to not fail w/out params

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0a66c739532cbe9bad38deb78f76f48a676f7ffa
Author: Philipp Gesang <philipp.gesang at intra2net.com>
Date:   Mon Oct 17 13:42:26 2022 +0200

    s3-lib: restore truncating behavior of push_ascii_nstring()
    
    Some users of push_ascii_nstring() (notably name_to_unstring())
    expect the output to be truncated if it would exceed the size of
    an nstring after conversion. However this broke in 2011 due to
    commit d546adeab5 ("Change convert_string_internal() and
    convert_string_error() to bool return"). This patch restores the
    old behavior.
    
    The issue can be observed in syslog after setting the
    ``workgroup`` to a 16+ characters long string which triggers a
    DEBUG() message:
    
        Oct 17 11:28:45 dev nmbd[11716]: name_to_nstring: workgroup name 0123456789ABCDEF0123456789ABCDEF is too long. Truncating to
    
    Signed-off-by: Philipp Gesang <philipp.gesang at intra2net.com>
    Reviewed-by: Noel Power <npower at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Noel Power <npower at samba.org>
    Autobuild-Date(master): Tue Oct 25 16:25:40 UTC 2022 on sn-devel-184

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/fstring.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/fstring.c b/source3/lib/fstring.c
index 7ac50ece15b..3ed1db1f24c 100644
--- a/source3/lib/fstring.c
+++ b/source3/lib/fstring.c
@@ -41,8 +41,11 @@ size_t push_ascii_fstring(void *dest, const char *src)
 size_t push_ascii_nstring(void *dest, const char *src)
 {
 	size_t converted_size = 0;
-	bool ret = convert_string_error(CH_UNIX, CH_DOS, src, -1, dest, sizeof(nstring), &converted_size);
-	if (ret) {
+	bool ret;
+
+	errno = 0;
+	ret = convert_string_error(CH_UNIX, CH_DOS, src, -1, dest, sizeof(nstring), &converted_size);
+	if (ret || errno == E2BIG) {
 		SCVAL(dest, sizeof(nstring)-1, 0);
 	} else {
 		SCVAL(dest, 0, 0);


-- 
Samba Shared Repository



More information about the samba-cvs mailing list