diff options
author | Jeremy Allison <jra@samba.org> | 2006-09-21 17:00:07 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:00:57 -0500 |
commit | f18c9365caaad75c0f4c9e26b89327a75cfcb3e6 (patch) | |
tree | b5db870641dd49feb5d167b55350ecaeabd1f247 /source3/smbd | |
parent | b3d18b12c23670b02f4f98e1afeb32f829050fb3 (diff) | |
download | samba-f18c9365caaad75c0f4c9e26b89327a75cfcb3e6.tar.gz samba-f18c9365caaad75c0f4c9e26b89327a75cfcb3e6.tar.bz2 samba-f18c9365caaad75c0f4c9e26b89327a75cfcb3e6.zip |
r18787: Fix the strlen_m and strlen_m_term code by merging
in (and using elsewhere) next_codepoint from Samba4.
Jerry please test.
Jeremy.
(This used to be commit ece00b70a4621633f1ac9e576c4bbe332031de09)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/reply.c | 27 | ||||
-rw-r--r-- | source3/smbd/service.c | 11 |
2 files changed, 34 insertions, 4 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index e38edadee4..a0596643f8 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -132,13 +132,22 @@ NTSTATUS check_path_syntax(pstring destname, const pstring srcname) break; } } else { - switch(next_mb_char_size(s)) { + size_t siz; + /* Get the size of the next MB character. */ + next_codepoint(s,&siz); + switch(siz) { + case 5: + *d++ = *s++; + /*fall through*/ case 4: *d++ = *s++; + /*fall through*/ case 3: *d++ = *s++; + /*fall through*/ case 2: *d++ = *s++; + /*fall through*/ case 1: *d++ = *s++; break; @@ -266,7 +275,13 @@ NTSTATUS check_path_syntax_wcard(pstring destname, const pstring srcname, BOOL * } *d++ = *s++; } else { - switch(next_mb_char_size(s)) { + size_t siz; + /* Get the size of the next MB character. */ + next_codepoint(s,&siz); + switch(siz) { + case 5: + *d++ = *s++; + /*fall through*/ case 4: *d++ = *s++; /*fall through*/ @@ -374,7 +389,13 @@ NTSTATUS check_path_syntax_posix(pstring destname, const pstring srcname) if (!(*s & 0x80)) { *d++ = *s++; } else { - switch(next_mb_char_size(s)) { + size_t siz; + /* Get the size of the next MB character. */ + next_codepoint(s,&siz); + switch(siz) { + case 5: + *d++ = *s++; + /*fall through*/ case 4: *d++ = *s++; /*fall through*/ diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 734feef4f7..9c341f19fd 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -95,13 +95,22 @@ void set_conn_connectpath(connection_struct *conn, const pstring connectpath) if (!(*s & 0x80)) { *d++ = *s++; } else { - switch(next_mb_char_size(s)) { + size_t siz; + /* Get the size of the next MB character. */ + next_codepoint(s,&siz); + switch(siz) { + case 5: + *d++ = *s++; + /*fall through*/ case 4: *d++ = *s++; + /*fall through*/ case 3: *d++ = *s++; + /*fall through*/ case 2: *d++ = *s++; + /*fall through*/ case 1: *d++ = *s++; break; |