summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-09-21 17:00:07 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:00:57 -0500
commitf18c9365caaad75c0f4c9e26b89327a75cfcb3e6 (patch)
treeb5db870641dd49feb5d167b55350ecaeabd1f247 /source3/smbd
parentb3d18b12c23670b02f4f98e1afeb32f829050fb3 (diff)
downloadsamba-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.c27
-rw-r--r--source3/smbd/service.c11
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;