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.ges...@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.ges...@intra2net.com> Reviewed-by: Noel Power <npo...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Noel Power <npo...@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