diff -uNrp samba-3.0.23d.org/source/auth/auth_builtin.c samba-3.0.23d.new/source/auth/auth_builtin.c
--- samba-3.0.23d.org/source/auth/auth_builtin.c	2006-04-20 11:29:20.000000000 +0900
+++ samba-3.0.23d.new/source/auth/auth_builtin.c	2007-01-23 16:25:48.000000000 +0900
@@ -87,11 +87,11 @@ static NTSTATUS check_name_to_ntstatus_s
 	fstrcpy(user, user_info->smb_name);
 	
 	if (strnequal("NT_STATUS", user, strlen("NT_STATUS"))) {
-		strupper_m(user);
+		strupper_m(user, sizeof(fstring));
 		return nt_status_string_to_code(user);
 	}
 
-	strlower_m(user);
+	strlower_m(user, sizeof(fstring));
 	error_num = strtoul(user, NULL, 16);
 	
 	DEBUG(5,("check_name_to_ntstatus_security: Error for user %s was %lx\n", user, error_num));
diff -uNrp samba-3.0.23d.org/source/auth/auth_server.c samba-3.0.23d.new/source/auth/auth_server.c
--- samba-3.0.23d.org/source/auth/auth_server.c	2006-04-20 11:29:20.000000000 +0900
+++ samba-3.0.23d.new/source/auth/auth_server.c	2007-01-23 16:25:48.000000000 +0900
@@ -50,7 +50,7 @@ static struct cli_state *server_cryptkey
 
         while(next_token( &p, desthost, LIST_SEP, sizeof(desthost))) {
 		standard_sub_basic(current_user_info.smb_name, desthost, sizeof(desthost));
-		strupper_m(desthost);
+		strupper_m(desthost, sizeof(fstring));
 
 		if(!resolve_name( desthost, &dest_ip, 0x20)) {
 			DEBUG(1,("server_cryptkey: Can't resolve address for %s\n",desthost));
diff -uNrp samba-3.0.23d.org/source/auth/auth_util.c samba-3.0.23d.new/source/auth/auth_util.c
--- samba-3.0.23d.org/source/auth/auth_util.c	2006-11-14 23:42:13.000000000 +0900
+++ samba-3.0.23d.new/source/auth/auth_util.c	2007-01-23 16:25:48.000000000 +0900
@@ -1507,7 +1507,7 @@ static NTSTATUS fill_sam_account(TALLOC_
 	struct passwd *passwd;
 
 	fstrcpy( lower_username, username );
-	strlower_m( lower_username );
+	strlower_m( lower_username,sizeof(fstring) );
 
 	fstr_sprintf(dom_user, "%s%c%s", domain, *lp_winbind_separator(), 
 		lower_username);
diff -uNrp samba-3.0.23d.org/source/auth/pampass.c samba-3.0.23d.new/source/auth/pampass.c
--- samba-3.0.23d.org/source/auth/pampass.c	2005-12-21 00:28:38.000000000 +0900
+++ samba-3.0.23d.new/source/auth/pampass.c	2007-01-23 16:25:48.000000000 +0900
@@ -229,7 +229,7 @@ static struct chat_struct *make_pw_chat(
 
 		special_char_sub(prompt);
 		fstrcpy(t->prompt, prompt);
-		strlower_m(t->prompt);
+		strlower_m(t->prompt, sizeof(fstring));
 		trim_char(t->prompt, ' ', ' ');
 
 		if (!next_token(&p, reply, NULL, sizeof(fstring)))
@@ -240,7 +240,7 @@ static struct chat_struct *make_pw_chat(
 
 		special_char_sub(reply);
 		fstrcpy(t->reply, reply);
-		strlower_m(t->reply);
+		strlower_m(t->reply, sizeof(fstring));
 		trim_char(t->reply, ' ', ' ');
 
 	}
diff -uNrp samba-3.0.23d.org/source/auth/pass_check.c samba-3.0.23d.new/source/auth/pass_check.c
--- samba-3.0.23d.org/source/auth/pass_check.c	2006-06-23 22:16:50.000000000 +0900
+++ samba-3.0.23d.new/source/auth/pass_check.c	2007-01-23 16:25:48.000000000 +0900
@@ -763,7 +763,7 @@ NTSTATUS pass_check(const struct passwd 
 
 	/* try all lowercase if it's currently all uppercase */
 	if (strhasupper(pass2)) {
-		strlower_m(pass2);
+		strlower_m(pass2, sizeof(pstring));
 		if NT_STATUS_IS_OK(nt_status = password_check(pass2)) {
 		        if (fn)
 				fn(user, pass2);
@@ -777,7 +777,7 @@ NTSTATUS pass_check(const struct passwd 
 	}
 
 	/* last chance - all combinations of up to level chars upper! */
-	strlower_m(pass2);
+	strlower_m(pass2, sizeof(pstring));
  
         if (NT_STATUS_IS_OK(nt_status = string_combinations(pass2, password_check, level))) {
                 if (fn)
diff -uNrp samba-3.0.23d.org/source/client/client.c samba-3.0.23d.new/source/client/client.c
--- samba-3.0.23d.org/source/client/client.c	2007-01-23 16:22:55.000000000 +0900
+++ samba-3.0.23d.new/source/client/client.c	2007-01-23 16:25:48.000000000 +0900
@@ -778,7 +778,7 @@ static int do_get(char *rname, char *lna
 
 
 	if (lowercase) {
-		strlower_m(lname);
+		strlower_m_fixlen(lname);
 	}
 
 	if ( !cli_resolve_path( "", cli, rname, &targetcli, targetname ) ) {
@@ -973,7 +973,7 @@ static void do_mget(file_info *finfo)
 
 	unix_format(finfo->name);
 	if (lowercase)
-		strlower_m(finfo->name);
+		strlower_m(finfo->name, sizeof(pstring));
 	
 	if (!directory_exist(finfo->name,NULL) && 
 	    mkdir(finfo->name,0777) != 0) {
diff -uNrp samba-3.0.23d.org/source/client/clitar.c samba-3.0.23d.new/source/client/clitar.c
--- samba-3.0.23d.org/source/client/clitar.c	2006-06-23 22:16:53.000000000 +0900
+++ samba-3.0.23d.new/source/client/clitar.c	2007-01-23 16:25:48.000000000 +0900
@@ -192,7 +192,7 @@ static void writetarheader(int f, const 
 	fixtarname(hb.dbuf.name, aname, (l+2 >= NAMSIZ) ? NAMSIZ : l + 2);
 
 	if (lowercase)
-		strlower_m(hb.dbuf.name);
+		strlower_m_fixlen(hb.dbuf.name);
 
 	/* write out a "standard" tar format header */
 
diff -uNrp samba-3.0.23d.org/source/client/smbmount.c samba-3.0.23d.new/source/client/smbmount.c
--- samba-3.0.23d.org/source/client/smbmount.c	2006-04-20 11:29:46.000000000 +0900
+++ samba-3.0.23d.new/source/client/smbmount.c	2007-01-23 16:25:48.000000000 +0900
@@ -895,7 +895,7 @@ static void parse_mount_smb(int argc, ch
 			got_pass = True;
 			memset(strchr_m(getenv("USER"),'%')+1,'X',strlen(password));
 		}
-		strupper_m(username);
+		strupper_m(username, sizeof(pstring));
 	}
 
 	if (getenv("PASSWD")) {
@@ -937,7 +937,7 @@ static void parse_mount_smb(int argc, ch
 	if (!*my_netbios_name) {
 		pstrcpy(my_netbios_name, myhostname());
 	}
-	strupper_m(my_netbios_name);
+	strupper_m(my_netbios_name, sizeof(pstring));
 
 	init_mount();
 	return 0;
diff -uNrp samba-3.0.23d.org/source/include/safe_string.h samba-3.0.23d.new/source/include/safe_string.h
--- samba-3.0.23d.org/source/include/safe_string.h	2005-02-26 02:59:39.000000000 +0900
+++ samba-3.0.23d.new/source/include/safe_string.h	2007-01-23 16:25:48.000000000 +0900
@@ -225,4 +225,10 @@ size_t __unsafe_string_function_usage_he
 
 #endif
 
+/* 
+ * The capitalize may increase the string length which includes 
+ * multibyte character.
+ */
+#define strlower_m_fixlen(str) strlower_m((str), -1)
+#define strupper_m_fixlen(str) strupper_m((str), -1)
 #endif
diff -uNrp samba-3.0.23d.org/source/lib/afs.c samba-3.0.23d.new/source/lib/afs.c
--- samba-3.0.23d.org/source/lib/afs.c	2005-10-18 11:44:59.000000000 +0900
+++ samba-3.0.23d.new/source/lib/afs.c	2007-01-23 16:25:49.000000000 +0900
@@ -229,7 +229,7 @@ BOOL afs_login(connection_struct *conn)
 
 	/* The pts command always generates completely lower-case user
 	 * names. */
-	strlower_m(afs_username);
+	strlower_m(afs_username, sizeof(pstring));
 
 	cell = strchr(afs_username, '@');
 
diff -uNrp samba-3.0.23d.org/source/lib/charcnv.c samba-3.0.23d.new/source/lib/charcnv.c
--- samba-3.0.23d.org/source/lib/charcnv.c	2006-04-20 11:29:23.000000000 +0900
+++ samba-3.0.23d.new/source/lib/charcnv.c	2007-01-23 16:25:49.000000000 +0900
@@ -861,7 +861,7 @@ size_t push_ascii(void *dest, const char
 
 	if (flags & STR_UPPER) {
 		pstrcpy(tmpbuf, src);
-		strupper_m(tmpbuf);
+		strupper_m(tmpbuf, sizeof(pstring));
 		src = tmpbuf;
 	}
 
@@ -1104,7 +1104,7 @@ static size_t push_utf8(void *dest, cons
 
 	if (flags & STR_UPPER) {
 		pstrcpy(tmpbuf, src);
-		strupper_m(tmpbuf);
+		strupper_m(tmpbuf, sizeof(pstring));
 		src = tmpbuf;
 	}
 
diff -uNrp samba-3.0.23d.org/source/lib/substitute.c samba-3.0.23d.new/source/lib/substitute.c
--- samba-3.0.23d.org/source/lib/substitute.c	2006-05-24 03:54:32.000000000 +0900
+++ samba-3.0.23d.new/source/lib/substitute.c	2007-01-23 16:31:12.000000000 +0900
@@ -62,7 +62,7 @@ void set_local_machine_name(const char* 
 	already_perm = perm;
 
 	alpha_strcpy(local_machine,tmp_local_machine,SAFE_NETBIOS_CHARS,sizeof(local_machine)-1);
-	strlower_m(local_machine);
+	strlower_m(local_machine, sizeof(pstring));
 }
 
 /** 
@@ -84,7 +84,7 @@ void set_remote_machine_name(const char*
 	fstrcpy(tmp_remote_machine,remote_name);
 	trim_char(tmp_remote_machine,' ',' ');
 	alpha_strcpy(remote_machine,tmp_remote_machine,SAFE_NETBIOS_CHARS,sizeof(remote_machine)-1);
-	strlower_m(remote_machine);
+	strlower_m(remote_machine, sizeof(fstring));
 }
 
 const char* get_remote_machine_name(void) 
@@ -118,7 +118,7 @@ void sub_set_smb_name(const char *name)
 
 	fstrcpy( tmp, name );
 	trim_char( tmp, ' ', ' ' );
-	strlower_m( tmp );
+	strlower_m( tmp , sizeof(fstring));
 
 	len = strlen( tmp );
 
diff -uNrp samba-3.0.23d.org/source/lib/username.c samba-3.0.23d.new/source/lib/username.c
--- samba-3.0.23d.org/source/lib/username.c	2006-04-20 11:29:23.000000000 +0900
+++ samba-3.0.23d.new/source/lib/username.c	2007-01-23 16:33:01.000000000 +0900
@@ -71,7 +71,7 @@ static struct passwd *Get_Pwnam_internal
 
 	/* Try in all lower case first as this is the most 
 	   common case on UNIX systems */
-	strlower_m(user2);
+	strlower_m(user2, sizeof(fstring));
 	DEBUG(5,("Trying _Get_Pwnam(), username as lowercase is %s\n",user2));
 	ret = getpwnam_alloc(mem_ctx, user2);
 	if(ret)
@@ -87,7 +87,7 @@ static struct passwd *Get_Pwnam_internal
 	}
 
 	/* Try as uppercase, if username wasn't originally uppercase */
-	strupper_m(user2);
+	strupper_m(user2, sizeof(fstring));
 	if(strcmp(user, user2) != 0) {
 		DEBUG(5,("Trying _Get_Pwnam(), username as uppercase is %s\n",
 			 user2));
@@ -97,7 +97,7 @@ static struct passwd *Get_Pwnam_internal
 	}
 
 	/* Try all combinations up to usernamelevel */
-	strlower_m(user2);
+	strlower_m(user2, sizeof(fstring));
 	DEBUG(5,("Checking combinations of %d uppercase letters in %s\n",
 		 lp_usernamelevel(), user2));
 	ret = uname_string_combinations(user2, mem_ctx, getpwnam_alloc,
diff -uNrp samba-3.0.23d.org/source/lib/util.c samba-3.0.23d.new/source/lib/util.c
--- samba-3.0.23d.org/source/lib/util.c	2007-01-23 16:22:55.000000000 +0900
+++ samba-3.0.23d.new/source/lib/util.c	2007-01-23 18:34:13.000000000 +0900
@@ -92,7 +92,7 @@ BOOL set_global_myname(const char *mynam
 	smb_myname = SMB_STRDUP(myname);
 	if (!smb_myname)
 		return False;
-	strupper_m(smb_myname);
+	strupper_m_fixlen(smb_myname);
 	return True;
 }
 
@@ -112,7 +112,7 @@ BOOL set_global_myname_override(const ch
 	smb_myname_override = strdup(myname);
 	if (!smb_myname_override)
 		return False;
-	strupper_m(smb_myname_override);
+	strupper_m_fixlen(smb_myname_override);
 	return True;
 }
 
@@ -132,7 +132,7 @@ BOOL set_global_myworkgroup(const char *
 	smb_myworkgroup = SMB_STRDUP(myworkgroup);
 	if (!smb_myworkgroup)
 		return False;
-	strupper_m(smb_myworkgroup);
+	strupper_m_fixlen(smb_myworkgroup);
 	return True;
 }
 
@@ -151,7 +151,7 @@ BOOL set_global_scope(const char *scope)
 	smb_scope = SMB_STRDUP(scope);
 	if (!smb_scope)
 		return False;
-	strupper_m(smb_scope);
+	strupper_m_fixlen(smb_scope);
 	return True;
 }
 
@@ -198,7 +198,7 @@ static BOOL set_my_netbios_names(const c
 	smb_my_netbios_names[i] = SMB_STRDUP(name);
 	if (!smb_my_netbios_names[i])
 		return False;
-	strupper_m(smb_my_netbios_names[i]);
+	strupper_m_fixlen(smb_my_netbios_names[i]);
 	return True;
 }
 
@@ -303,7 +303,7 @@ BOOL init_names(void)
 	p = strchr( local_machine, ' ' );
 	if (p)
 		*p = 0;
-	strlower_m( local_machine );
+	strlower_m( local_machine , sizeof(fstring));
 
 	DEBUG( 5, ("Netbios name list:-\n") );
 	for( n=0; my_netbios_names(n); n++ )
@@ -2836,8 +2836,8 @@ BOOL unix_wild_match(const char *pattern
 
 	pstrcpy(p2, pattern);
 	pstrcpy(s2, string);
-	strlower_m(p2);
-	strlower_m(s2);
+	strlower_m(p2, sizeof(pstring));
+	strlower_m(s2, sizeof(pstring));
 
 	/* Remove any *? and ** from the pattern as they are meaningless */
 	for(p = p2; *p; p++)
diff -uNrp samba-3.0.23d.org/source/lib/util_str.c samba-3.0.23d.new/source/lib/util_str.c
--- samba-3.0.23d.org/source/lib/util_str.c	2007-01-23 16:22:56.000000000 +0900
+++ samba-3.0.23d.new/source/lib/util_str.c	2007-01-23 16:25:50.000000000 +0900
@@ -328,7 +328,7 @@ char *strupper_static(const char *s)
 	static pstring str;
 
 	pstrcpy(str, s);
-	strupper_m(str);
+	strupper_m(str, sizeof(pstring));
 
 	return str;
 }
@@ -340,9 +340,9 @@ char *strupper_static(const char *s)
 void strnorm(char *s, int case_default)
 {
 	if (case_default == CASE_UPPER)
-		strupper_m(s);
+		strupper_m_fixlen(s);
 	else
-		strlower_m(s);
+		strlower_m_fixlen(s);
 }
 
 /**
@@ -1496,7 +1496,7 @@ char *strstr_m(const char *src, const ch
  Convert a string to lower case.
 **/
 
-void strlower_m(char *s)
+void strlower_m(char *s, size_t maxlen)
 {
 	size_t len;
 	int errno_save;
@@ -1514,9 +1514,13 @@ void strlower_m(char *s)
 	if (!*s)
 		return;
 
-	/* I assume that lowercased string takes the same number of bytes
-	 * as source string even in UTF-8 encoding. (VIV) */
-	len = strlen(s) + 1;
+	/* There are encodings that lowercased string takes the larger
+ 	* number of bytes as source string.
+ 	* If maxlen is -1, it can't calculate and increase the buffer size.
+ 	*/
+	if (maxlen == -1){
+		maxlen = strlen(s)+1;
+	}
 	errno_save = errno;
 	errno = 0;
 	len = unix_strlower(s,strlen(s)+1,s,maxlen);
@@ -1530,7 +1534,7 @@ void strlower_m(char *s)
  Convert a string to upper case.
 **/
 
-void strupper_m(char *s)
+void strupper_m(char *s, size_t maxlen)
 {
 	size_t len;
 	int errno_save;
@@ -1547,10 +1551,13 @@ void strupper_m(char *s)
 
 	if (!*s)
 		return;
-
-	/* I assume that lowercased string takes the same number of bytes
-	 * as source string even in multibyte encoding. (VIV) */
-	len = strlen(s) + 1;
+	/* There are encodings that uppercased string takes the larger
+ 	* number of bytes as source string.
+ 	* If maxlen is -1, it can't calculate and increase the buffer size.
+ 	*/
+	if (maxlen == -1){
+		maxlen = strlen(s)+1;
+	}
 	errno_save = errno;
 	errno = 0;
 	len = unix_strupper(s,strlen(s)+1,s,maxlen);
diff -uNrp samba-3.0.23d.org/source/libads/kerberos.c samba-3.0.23d.new/source/libads/kerberos.c
--- samba-3.0.23d.org/source/libads/kerberos.c	2006-07-22 01:22:57.000000000 +0900
+++ samba-3.0.23d.new/source/libads/kerberos.c	2007-01-23 16:34:35.000000000 +0900
@@ -277,7 +277,7 @@ char* kerberos_standard_des_salt( void )
 	fstring salt;
 
 	fstr_sprintf( salt, "host/%s.%s@", global_myname(), lp_realm() );
-	strlower_m( salt );
+	strlower_m( salt , sizeof(fstring));
 	fstrcat( salt, lp_realm() );
 
 	return SMB_STRDUP( salt );
diff -uNrp samba-3.0.23d.org/source/libads/kerberos_verify.c samba-3.0.23d.new/source/libads/kerberos_verify.c
--- samba-3.0.23d.org/source/libads/kerberos_verify.c	2006-07-22 01:22:57.000000000 +0900
+++ samba-3.0.23d.new/source/libads/kerberos_verify.c	2007-01-23 16:36:14.000000000 +0900
@@ -341,7 +341,7 @@ NTSTATUS ads_verify_ticket(TALLOC_CTX *m
 	}
 
 	asprintf(&host_princ_s, "%s$", global_myname());
-	strlower_m(host_princ_s);
+	strlower_m_fixlen(host_princ_s);
 	ret = smb_krb5_parse_name(context, host_princ_s, &host_princ);
 	if (ret) {
 		DEBUG(1,("ads_verify_ticket: smb_krb5_parse_name(%s) failed (%s)\n",
diff -uNrp samba-3.0.23d.org/source/libads/ldap.c samba-3.0.23d.new/source/libads/ldap.c
--- samba-3.0.23d.org/source/libads/ldap.c	2006-11-14 23:49:50.000000000 +0900
+++ samba-3.0.23d.new/source/libads/ldap.c	2007-01-23 16:37:44.000000000 +0900
@@ -154,7 +154,7 @@ BOOL ads_try_connect(ADS_STRUCT *ads, co
 	SAFE_FREE(ads->server.workgroup);
 
 	ads->config.ldap_server_name   = SMB_STRDUP(cldap_reply.hostname);
-	strupper_m(cldap_reply.domain);
+	strupper_m_fixlen(cldap_reply.domain);
 	ads->config.realm              = SMB_STRDUP(cldap_reply.domain);
 	ads->config.bind_path          = ads_build_dn(ads->config.realm);
 	ads->server.workgroup          = SMB_STRDUP(cldap_reply.netbios_domain);
@@ -1464,8 +1464,8 @@ ADS_STATUS ads_add_service_principal_nam
 		ads_msgfree(ads, res);
 		return ADS_ERROR(LDAP_NO_MEMORY);
 	}
-	strupper_m(psp1);
-	strlower_m(&psp1[strlen(spn)]);
+	strupper_m_fixlen(psp1);
+	strlower_m_fixlen(&psp1[strlen(spn)]);
 	servicePrincipalName[0] = psp1;
 	
 	DEBUG(5,("ads_add_service_principal_name: INFO: Adding %s to host %s\n", 
@@ -1478,8 +1478,8 @@ ADS_STATUS ads_add_service_principal_nam
 		ret = ADS_ERROR(LDAP_NO_MEMORY);
 		goto out;
 	}
-	strupper_m(psp2);
-	strlower_m(&psp2[strlen(spn)]);
+	strupper_m_fixlen(psp2);
+	strlower_m_fixlen(&psp2[strlen(spn)]);
 	servicePrincipalName[1] = psp2;
 
 	DEBUG(5,("ads_add_service_principal_name: INFO: Adding %s to host %s\n", 
diff -uNrp samba-3.0.23d.org/source/libsmb/clirap.c samba-3.0.23d.new/source/libsmb/clirap.c
--- samba-3.0.23d.org/source/libsmb/clirap.c	2006-08-31 03:08:38.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/clirap.c	2007-01-23 16:25:50.000000000 +0900
@@ -91,13 +91,13 @@ BOOL cli_NetWkstaUserLogon(struct cli_st
 	SSVAL(p,0,1);
 	p += 2;
 	pstrcpy_base(p,user,param);
-	strupper_m(p);
+	strupper_m(p, sizeof(pstring));
 	p += 21;
 	p++;
 	p += 15;
 	p++; 
 	pstrcpy_base(p, workstation, param);
-	strupper_m(p);
+	strupper_m(p, sizeof(pstring));
 	p += 16;
 	SSVAL(p, 0, CLI_BUFFER_SIZE);
 	p += 2;
diff -uNrp samba-3.0.23d.org/source/libsmb/clirap2.c samba-3.0.23d.new/source/libsmb/clirap2.c
--- samba-3.0.23d.org/source/libsmb/clirap2.c	2006-07-11 01:27:51.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/clirap2.c	2007-01-23 16:25:51.000000000 +0900
@@ -1531,11 +1531,11 @@ BOOL cli_NetWkstaUserLogoff(struct cli_s
   PUTDWORD(p, 0); /* Null pointer */
   PUTDWORD(p, 0); /* Null pointer */
   fstrcpy(upperbuf, user);
-  strupper_m(upperbuf);
+  strupper_m(upperbuf, sizeof(fstring));
   PUTSTRINGF(p, upperbuf, RAP_USERNAME_LEN);
   p++; /* strange format, but ok */
   fstrcpy(upperbuf, workstation);
-  strupper_m(upperbuf);
+  strupper_m(upperbuf, sizeof(fstring));
   PUTSTRINGF(p, upperbuf, RAP_MACHNAME_LEN);
   PUTWORD(p, CLI_BUFFER_SIZE);
   PUTWORD(p, CLI_BUFFER_SIZE);
diff -uNrp samba-3.0.23d.org/source/libsmb/namequery.c samba-3.0.23d.new/source/libsmb/namequery.c
--- samba-3.0.23d.org/source/libsmb/namequery.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/namequery.c	2007-01-23 16:25:51.000000000 +0900
@@ -1387,7 +1387,7 @@ static BOOL get_dc_list(const char *doma
 	   NULL. */
 
 	fstrcpy( resolve_order, lp_name_resolve_order() );
-	strlower_m( resolve_order );
+	strlower_m( resolve_order , sizeof(fstring) );
 	if ( ads_only )  {
 		if ( strstr( resolve_order, "host" ) ) {
 			fstrcpy( resolve_order, "ads" );
diff -uNrp samba-3.0.23d.org/source/libsmb/namequery_dc.c samba-3.0.23d.new/source/libsmb/namequery_dc.c
--- samba-3.0.23d.org/source/libsmb/namequery_dc.c	2006-04-20 11:29:25.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/namequery_dc.c	2007-01-23 16:25:51.000000000 +0900
@@ -55,7 +55,7 @@ static BOOL ads_dc_name(const char *doma
 	}
 
 	fstrcpy(srv_name, ads->config.ldap_server_name);
-	strupper_m(srv_name);
+	strupper_m(srv_name, sizeof(fstring));
 	*dc_ip = ads->ldap_ip;
 	ads_destroy(&ads);
 	
diff -uNrp samba-3.0.23d.org/source/libsmb/nmblib.c samba-3.0.23d.new/source/libsmb/nmblib.c
--- samba-3.0.23d.org/source/libsmb/nmblib.c	2006-05-24 03:54:32.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/nmblib.c	2007-01-23 16:25:51.000000000 +0900
@@ -861,7 +861,7 @@ void make_nmb_name( struct nmb_name *n, 
 	fstring unix_name;
 	memset( (char *)n, '\0', sizeof(struct nmb_name) );
 	fstrcpy(unix_name, name);
-	strupper_m(unix_name);
+	strupper_m(unix_name, sizeof(fstring));
 	push_ascii(n->name, unix_name, sizeof(n->name), STR_TERMINATE);
 	n->name_type = (unsigned int)type & 0xFF;
 	push_ascii(n->scope,  global_scope(), 64, STR_TERMINATE);
@@ -1246,7 +1246,7 @@ int name_mangle( char *In, char *Out, ch
 		nstring buf_dos;
 
 		pull_ascii_fstring(buf_unix, In);
-		strupper_m(buf_unix);
+		strupper_m(buf_unix, sizeof(fstring));
 
 		push_ascii_nstring(buf_dos, buf_unix);
 		put_name(buf, buf_dos, ' ', name_type);
diff -uNrp samba-3.0.23d.org/source/libsmb/ntlmssp.c samba-3.0.23d.new/source/libsmb/ntlmssp.c
--- samba-3.0.23d.org/source/libsmb/ntlmssp.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/libsmb/ntlmssp.c	2007-01-23 16:25:51.000000000 +0900
@@ -500,7 +500,7 @@ static NTSTATUS ntlmssp_server_negotiate
 	/* This should be a 'netbios domain -> DNS domain' mapping */
 	dnsdomname[0] = '\0';
 	get_mydnsdomname(dnsdomname);
-	strlower_m(dnsdomname);
+	strlower_m(dnsdomname, sizeof(fstring));
 	
 	dnsname[0] = '\0';
 	get_mydnsfullname(dnsname);
diff -uNrp samba-3.0.23d.org/source/modules/vfs_afsacl.c samba-3.0.23d.new/source/modules/vfs_afsacl.c
--- samba-3.0.23d.org/source/modules/vfs_afsacl.c	2006-06-23 22:16:50.000000000 +0900
+++ samba-3.0.23d.new/source/modules/vfs_afsacl.c	2007-01-23 16:59:38.000000000 +0900
@@ -767,7 +767,7 @@ static BOOL nt_to_afs_acl(const char *fi
 				if (tmp == NULL) {
 					return False;
 				}
-				strlower_m(tmp);
+				strlower_m_fixlen(tmp);
 				name = tmp;
 			}
 
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_browserdb.c samba-3.0.23d.new/source/nmbd/nmbd_browserdb.c
--- samba-3.0.23d.org/source/nmbd/nmbd_browserdb.c	2006-04-20 11:29:33.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_browserdb.c	2007-01-23 16:25:51.000000000 +0900
@@ -110,8 +110,8 @@ struct browse_cache_record *create_brows
 
 	unstrcpy( browc->lmb_name, browser_name);
 	unstrcpy( browc->work_group, work_name);
-	strupper_m( browc->lmb_name );
-	strupper_m( browc->work_group );
+	strupper_m( browc->lmb_name , sizeof(unstring));
+	strupper_m( browc->work_group , sizeof(unstring));
   
 	browc->ip = ip;
  
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_browsesync.c samba-3.0.23d.new/source/nmbd/nmbd_browsesync.c
--- samba-3.0.23d.org/source/nmbd/nmbd_browsesync.c	2006-04-20 11:29:33.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_browsesync.c	2007-01-23 16:25:51.000000000 +0900
@@ -120,7 +120,7 @@ static void announce_local_master_browse
 	p++;
 
 	unstrcpy(myname, global_myname());
-	strupper_m(myname);
+	strupper_m(myname, sizeof(unstring));
 	myname[15]='\0';
 	/* The call below does CH_UNIX -> CH_DOS conversion. JRA */
 	push_pstring_base(p, myname, outbuf);
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_elections.c samba-3.0.23d.new/source/nmbd/nmbd_elections.c
--- samba-3.0.23d.org/source/nmbd/nmbd_elections.c	2006-05-24 03:54:33.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_elections.c	2007-01-23 16:25:51.000000000 +0900
@@ -50,7 +50,7 @@ static void send_election_dgram(struct s
 	SIVAL(p,5,timeup*1000); /* ms - Despite what the spec says. */
 	p += 13;
 	unstrcpy(srv_name, server_name);
-	strupper_m(srv_name);
+	strupper_m(srv_name, sizeof(unstring));
 	/* The following call does UNIX -> DOS charset conversion. */
 	pstrcpy_base(p, srv_name, outbuf);
 	p = skip_string(p,1);
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_incomingdgrams.c samba-3.0.23d.new/source/nmbd/nmbd_incomingdgrams.c
--- samba-3.0.23d.org/source/nmbd/nmbd_incomingdgrams.c	2006-05-24 03:54:33.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_incomingdgrams.c	2007-01-23 16:25:51.000000000 +0900
@@ -564,7 +564,7 @@ static void send_backup_list_response(st
 	/* We always return at least one name - our own. */
 	count = 1;
 	unstrcpy(myname, global_myname());
-	strupper_m(myname);
+	strupper_m(myname, sizeof(unstring));
 	myname[15]='\0';
 	push_pstring_base(p, myname, outbuf);
 
@@ -598,7 +598,7 @@ static void send_backup_list_response(st
       continue;
 
     StrnCpy(p, servrec->serv.name, 15);
-    strupper_m(p);
+    strupper_m_fixlen(p);
     count++;
 
     DEBUG(5,("send_backup_list_response: Adding server %s number %d\n",
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_incomingrequests.c samba-3.0.23d.new/source/nmbd/nmbd_incomingrequests.c
--- samba-3.0.23d.org/source/nmbd/nmbd_incomingrequests.c	2006-04-20 11:29:33.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_incomingrequests.c	2007-01-23 16:25:51.000000000 +0900
@@ -347,7 +347,7 @@ subnet %s - name not found.\n", nmb_name
 			unstring name;
 
 			pull_ascii_nstring(name, sizeof(name), namerec->name.name);
-			strupper_m(name);
+			strupper_m(name, sizeof(unstring));
 			if (!strequal(name,"*") &&
 					!strequal(name,"__SAMBA__") &&
 					(name_type < 0x1b || name_type >= 0x20 || 
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_namelistdb.c samba-3.0.23d.new/source/nmbd/nmbd_namelistdb.c
--- samba-3.0.23d.org/source/nmbd/nmbd_namelistdb.c	2006-07-11 01:27:52.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_namelistdb.c	2007-01-23 16:25:52.000000000 +0900
@@ -54,11 +54,11 @@ static void upcase_name( struct nmb_name
 	}
 
 	pull_ascii_nstring(targ, sizeof(targ), target->name);
-	strupper_m( targ );
+	strupper_m( targ , sizeof(unstring));
 	push_ascii_nstring( target->name, targ);
 
 	pull_ascii(scope, target->scope, 64, -1, STR_TERMINATE);
-	strupper_m( scope );
+	strupper_m( scope , sizeof(fstring));
 	push_ascii(target->scope, scope, 64, STR_TERMINATE);
 
 	/* fudge... We're using a byte-by-byte compare, so we must be sure that
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_sendannounce.c samba-3.0.23d.new/source/nmbd/nmbd_sendannounce.c
--- samba-3.0.23d.org/source/nmbd/nmbd_sendannounce.c	2006-08-24 01:16:38.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_sendannounce.c	2007-01-23 16:25:52.000000000 +0900
@@ -105,7 +105,7 @@ static void send_announcement(struct sub
 	SIVAL(p,1,announce_interval*1000); /* Milliseconds - despite the spec. */
 
 	safe_strcpy(upper_server_name, server_name, sizeof(upper_server_name)-1);
-	strupper_m(upper_server_name);
+	strupper_m(upper_server_name, sizeof(unstring));
 	push_string(NULL, p+5, upper_server_name, 16, STR_ASCII|STR_TERMINATE);
 
 	SCVAL(p,21,lp_major_announce_version()); /* Major version. */
@@ -562,7 +562,7 @@ for workgroup %s on subnet %s.\n", lp_wo
 	p++;
 
 	unstrcpy(myname, global_myname());
-	strupper_m(myname);
+	strupper_m(myname, sizeof(unstring));
 	myname[15]='\0';
 	push_pstring_base(p, myname, outbuf);
 
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_serverlistdb.c samba-3.0.23d.new/source/nmbd/nmbd_serverlistdb.c
--- samba-3.0.23d.org/source/nmbd/nmbd_serverlistdb.c	2006-07-11 01:27:52.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_serverlistdb.c	2007-01-23 16:25:52.000000000 +0900
@@ -146,7 +146,7 @@ workgroup %s. This is a bug.\n", name, w
  
 	fstrcpy(servrec->serv.name,name);
 	fstrcpy(servrec->serv.comment,comment);
-	strupper_m(servrec->serv.name);
+	strupper_m(servrec->serv.name, sizeof(fstring));
 	servrec->serv.type  = servertype;
 
 	update_server_ttl(servrec, ttl);
diff -uNrp samba-3.0.23d.org/source/nmbd/nmbd_winsserver.c samba-3.0.23d.new/source/nmbd/nmbd_winsserver.c
--- samba-3.0.23d.org/source/nmbd/nmbd_winsserver.c	2006-07-11 01:27:52.000000000 +0900
+++ samba-3.0.23d.new/source/nmbd/nmbd_winsserver.c	2007-01-23 18:46:28.000000000 +0900
@@ -195,7 +195,7 @@ static TDB_DATA name_to_key(const struct
 	memset(keydata, '\0', sizeof(keydata));
 
 	pull_ascii_nstring(keydata, sizeof(unstring), nmbname->name);
-	strupper_m(keydata);
+	strupper_m_fixlen(keydata);
 	keydata[sizeof(unstring)] = nmbname->name_type;
 	key.dptr = keydata;
 	key.dsize = sizeof(keydata);
diff -uNrp samba-3.0.23d.org/source/nsswitch/wbinfo.c samba-3.0.23d.new/source/nsswitch/wbinfo.c
--- samba-3.0.23d.org/source/nsswitch/wbinfo.c	2006-06-10 04:30:30.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/wbinfo.c	2007-01-23 16:25:52.000000000 +0900
@@ -114,7 +114,7 @@ static BOOL parse_wbinfo_domain_user(con
 	fstrcpy(user, p+1);
 	fstrcpy(domain, domuser);
 	domain[PTR_DIFF(p, domuser)] = 0;
-	strupper_m(domain);
+	strupper_m(domain, sizeof(fstring));
 
 	return True;
 }
diff -uNrp samba-3.0.23d.org/source/nsswitch/winbindd_ads.c samba-3.0.23d.new/source/nsswitch/winbindd_ads.c
--- samba-3.0.23d.org/source/nsswitch/winbindd_ads.c	2006-06-23 22:16:50.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/winbindd_ads.c	2007-01-23 16:54:56.000000000 +0900
@@ -84,7 +84,7 @@ static ADS_STRUCT *ads_cached_connection
 			return NULL;
 		}
 		ads->auth.realm = SMB_STRDUP( ads->server.realm );
-		strupper_m( ads->auth.realm );
+		strupper_m_fixlen( ads->auth.realm );
 	}
 	else {
 		struct winbindd_domain *our_domain = domain;
@@ -99,7 +99,7 @@ static ADS_STRUCT *ads_cached_connection
 
 		if ( our_domain->alt_name[0] != '\0' ) {
 			ads->auth.realm = SMB_STRDUP( our_domain->alt_name );
-			strupper_m( ads->auth.realm );
+			strupper_m_fixlen( ads->auth.realm );
 		}
 		else
 			ads->auth.realm = SMB_STRDUP( lp_realm() );
diff -uNrp samba-3.0.23d.org/source/nsswitch/winbindd_cache.c samba-3.0.23d.new/source/nsswitch/winbindd_cache.c
--- samba-3.0.23d.org/source/nsswitch/winbindd_cache.c	2006-11-14 23:42:13.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/winbindd_cache.c	2007-01-23 16:56:20.000000000 +0900
@@ -758,7 +758,7 @@ static void wcache_save_name_to_sid(stru
 	centry_put_uint32(centry, type);
 	centry_put_sid(centry, sid);
 	fstrcpy(uname, name);
-	strupper_m(uname);
+	strupper_m(uname, sizeof(fstring));
 	centry_end(centry, "NS/%s/%s", domain_name, uname);
 	DEBUG(10,("wcache_save_name_to_sid: %s\\%s -> %s\n", domain_name, uname,
 		  sid_string_static(sid)));
@@ -1255,7 +1255,7 @@ static NTSTATUS name_to_sid(struct winbi
 		goto do_query;
 
 	fstrcpy(uname, name);
-	strupper_m(uname);
+	strupper_m(uname, sizeof(fstring));
 	centry = wcache_fetch(cache, domain, "NS/%s/%s", domain_name, uname);
 	if (!centry)
 		goto do_query;
@@ -1298,8 +1298,8 @@ do_query:
 	}
 
 	if (NT_STATUS_IS_OK(status)) {
-		strupper_m(CONST_DISCARD(char *,domain_name));
-		strlower_m(CONST_DISCARD(char *,name));
+		strupper_m_fixlen(CONST_DISCARD(char *,domain_name));
+		strlower_m_fixlen(CONST_DISCARD(char *,name));
 		wcache_save_sid_to_name(domain, status, sid, domain_name, name, *type);
 	}
 
@@ -2124,7 +2124,7 @@ BOOL lookup_cached_name(TALLOC_CTX *mem_
 	}
 
 	fstrcpy(uname, name);
-	strupper_m(uname);
+	strupper_m(uname, sizeof(fstring));
 	
 	centry = wcache_fetch(cache, domain, "NS/%s/%s", domain_name, uname);
 	if (centry == NULL) {
diff -uNrp samba-3.0.23d.org/source/nsswitch/winbindd_pam.c samba-3.0.23d.new/source/nsswitch/winbindd_pam.c
--- samba-3.0.23d.org/source/nsswitch/winbindd_pam.c	2006-11-14 23:42:13.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/winbindd_pam.c	2007-01-23 18:58:35.000000000 +0900
@@ -472,7 +472,7 @@ static NTSTATUS winbindd_raw_kerberos_lo
 	parse_domain_user(state->request.data.auth.user, name_domain, name_user);
 
 	realm = domain->alt_name;
-	strupper_m(realm);
+	strupper_m_fixlen(realm);
 	
 	principal_s = talloc_asprintf(state->mem_ctx, "%s@%s", name_user, realm); 
 	if (principal_s == NULL) {
@@ -523,7 +523,7 @@ static NTSTATUS winbindd_raw_kerberos_lo
 		result = NT_STATUS_NO_MEMORY;
 		goto failed;
 	}
-	strlower_m(client_princ);
+	strlower_m_fixlen(client_princ);
 
 	local_service = talloc_asprintf(state->mem_ctx, "%s$@%s", client_princ, lp_realm());
 	if (local_service == NULL) {
@@ -1323,7 +1323,7 @@ done:
 			goto no_token;
 		}
 
-		strlower_m(afsname);
+		strlower_m_fixlen(afsname);
 
 		DEBUG(10, ("Generating token for user %s\n", afsname));
 
diff -uNrp samba-3.0.23d.org/source/nsswitch/winbindd_user.c samba-3.0.23d.new/source/nsswitch/winbindd_user.c
--- samba-3.0.23d.org/source/nsswitch/winbindd_user.c	2006-11-14 23:42:13.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/winbindd_user.c	2007-01-23 16:25:52.000000000 +0900
@@ -93,7 +93,7 @@ static BOOL winbindd_fill_pwent(char *do
 		return False;
 	}
 
-	strlower_m(user_name);
+	strlower_m_fixlen(user_name);
 
 	/* Username */
 
@@ -242,7 +242,7 @@ static void getpwsid_queryuser_recv(void
 	}
 
 	fstrcpy( username, acct_name );
-	strlower_m( username );
+	strlower_m_fixlen( username );
 	s->username = talloc_strdup(s->state->mem_ctx, username);
 	s->fullname = talloc_strdup(s->state->mem_ctx, full_name);
 	s->homedir = talloc_strdup(s->state->mem_ctx, homedir);
diff -uNrp samba-3.0.23d.org/source/nsswitch/winbindd_util.c samba-3.0.23d.new/source/nsswitch/winbindd_util.c
--- samba-3.0.23d.org/source/nsswitch/winbindd_util.c	2006-11-14 23:42:13.000000000 +0900
+++ samba-3.0.23d.new/source/nsswitch/winbindd_util.c	2007-01-23 16:25:52.000000000 +0900
@@ -858,7 +858,7 @@ BOOL parse_domain_user(const char *domus
 		domain[PTR_DIFF(p, domuser)] = 0;
 	}
 	
-	strupper_m(domain);
+	strupper_m(domain, sizeof(fstring));
 	
 	return True;
 }
@@ -894,7 +894,7 @@ void fill_domain_username(fstring name, 
 	fstring tmp_user;
 
 	fstrcpy(tmp_user, user);
-	strlower_m(tmp_user);
+	strlower_m_fixlen(tmp_user);
 
 	if (can_assume && assume_domain(domain)) {
 		strlcpy(name, tmp_user, sizeof(fstring));
diff -uNrp samba-3.0.23d.org/source/param/loadparm.c samba-3.0.23d.new/source/param/loadparm.c
--- samba-3.0.23d.org/source/param/loadparm.c	2007-01-23 16:22:55.000000000 +0900
+++ samba-3.0.23d.new/source/param/loadparm.c	2007-01-23 17:19:05.000000000 +0900
@@ -2518,7 +2518,7 @@ static char *canonicalize_servicename(co
 	}
 
 	fstrcpy( canon, src );
-	strlower_m( canon );
+	strlower_m( canon , sizeof(fstring));
 
 	return canon;
 }
@@ -2852,7 +2852,7 @@ static void copy_service(service * pserv
 				case P_USTRING:
 					string_set((char **)dest_ptr,
 						   *(char **)src_ptr);
-					strupper_m(*(char **)dest_ptr);
+					strupper_m_fixlen(*(char **)dest_ptr);
 					break;
 				case P_LIST:
 					str_list_free((char ***)dest_ptr);
@@ -3506,7 +3506,7 @@ BOOL lp_do_parameter(int snum, const cha
 
 		case P_USTRING:
 			string_set((char **)parm_ptr, pszParmValue);
-			strupper_m(*(char **)parm_ptr);
+			strupper_m_fixlen(*(char **)parm_ptr);
 			break;
 
 		case P_GSTRING:
@@ -3515,7 +3515,7 @@ BOOL lp_do_parameter(int snum, const cha
 
 		case P_UGSTRING:
 			pstrcpy((char *)parm_ptr, pszParmValue);
-			strupper_m((char *)parm_ptr);
+			strupper_m_fixlen((char *)parm_ptr);
 			break;
 
 		case P_ENUM:
diff -uNrp samba-3.0.23d.org/source/passdb/lookup_sid.c samba-3.0.23d.new/source/passdb/lookup_sid.c
--- samba-3.0.23d.org/source/passdb/lookup_sid.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/passdb/lookup_sid.c	2007-01-23 18:23:28.000000000 +0900
@@ -282,7 +282,7 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
 
 	if (ret_domain != NULL) {
 		char *tmp_dom = talloc_strdup(tmp_ctx, domain);
-		strupper_m(tmp_dom);
+		strupper_m_fixlen(tmp_dom);
 		*ret_domain = talloc_steal(mem_ctx, tmp_dom);
 	}
 
diff -uNrp samba-3.0.23d.org/source/passdb/pdb_interface.c samba-3.0.23d.new/source/passdb/pdb_interface.c
--- samba-3.0.23d.org/source/passdb/pdb_interface.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/passdb/pdb_interface.c	2007-01-23 18:20:50.000000000 +0900
@@ -361,7 +361,7 @@ static NTSTATUS pdb_default_create_user(
 		/* lowercase the username before creating the Unix account for 
 		   compatibility with previous Samba releases */
 		fstrcpy( name2, name );
-		strlower_m( name2 );
+		strlower_m( name2, sizeof(fstring) );
 		all_string_sub(add_script, "%u", name2, sizeof(add_script));
 		add_ret = smbrun(add_script,NULL);
 		DEBUG(add_ret ? 0 : 3, ("_samr_create_user: Running the command `%s' gave %d\n",
@@ -468,7 +468,7 @@ static NTSTATUS pdb_default_delete_user(
 	   external scripts */
 
 	fstrcpy( username, pdb_get_username(sam_acct) );
-	strlower_m( username );
+	strlower_m( username , sizeof(fstring));
 
 	smb_delete_user( username );
 	
diff -uNrp samba-3.0.23d.org/source/passdb/pdb_ldap.c samba-3.0.23d.new/source/passdb/pdb_ldap.c
--- samba-3.0.23d.org/source/passdb/pdb_ldap.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/passdb/pdb_ldap.c	2007-01-23 18:22:39.000000000 +0900
@@ -1857,9 +1857,9 @@ static NTSTATUS ldapsam_rename_sam_accou
 	   posix name but preserve the case in passdb */
 
 	fstrcpy( oldname_lower, oldname );
-	strlower_m( oldname_lower );
+	strlower_m( oldname_lower , sizeof(fstring));
 	fstrcpy( newname_lower, newname );
-	strlower_m( newname_lower );
+	strlower_m( newname_lower , sizeof(fstring));
 	string_sub2(rename_script, "%unew", newname_lower, sizeof(pstring), 
 		    True, False, True);
 	string_sub2(rename_script, "%uold", oldname_lower, sizeof(pstring), 
diff -uNrp samba-3.0.23d.org/source/passdb/pdb_tdb.c samba-3.0.23d.new/source/passdb/pdb_tdb.c
--- samba-3.0.23d.org/source/passdb/pdb_tdb.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/passdb/pdb_tdb.c	2007-01-23 18:22:01.000000000 +0900
@@ -1025,7 +1025,7 @@ static NTSTATUS tdbsam_getsampwnam (stru
 
 	/* Data is stored in all lower-case */
 	fstrcpy(name, sname);
-	strlower_m(name);
+	strlower_m(name, sizeof(fstring));
 
 	/* set search key */
 	slprintf(keystr, sizeof(keystr)-1, "%s%s", USERPREFIX, name);
@@ -1136,7 +1136,7 @@ static BOOL tdb_delete_samacct_only( str
 	fstring		name;
 
 	fstrcpy(name, pdb_get_username(sam_pass));
-	strlower_m(name);
+	strlower_m(name, sizeof(fstring));
 	
   	/* set the search key */
 	
@@ -1176,7 +1176,7 @@ static NTSTATUS tdbsam_delete_sam_accoun
 	}
 
 	fstrcpy(name, pdb_get_username(sam_pass));
-	strlower_m(name);
+	strlower_m(name, sizeof(fstring));
 	
   	/* set the search key */
 
@@ -1241,7 +1241,7 @@ static BOOL tdb_update_samacct_only( str
 	data.dptr = (char *)buf;
 
 	fstrcpy(name, pdb_get_username(newpwd));
-	strlower_m(name);
+	strlower_m(name, sizeof(fstring));
 	
 	DEBUG(5, ("Storing %saccount %s with RID %d\n", 
 		  flag == TDB_INSERT ? "(new) " : "", name, 
@@ -1281,7 +1281,7 @@ static BOOL tdb_update_ridrec_only( stru
 	fstring		name;
 
 	fstrcpy(name, pdb_get_username(newpwd));
-	strlower_m(name);
+	strlower_m(name, sizeof(fstring));
 
 	/* setup RID data */
 	data.dsize = strlen(name) + 1;
@@ -1437,10 +1437,10 @@ static NTSTATUS tdbsam_rename_sam_accoun
 	   so that we lower case the posix name but preserve the case in passdb */
 
 	fstrcpy( oldname_lower, pdb_get_username(old_acct) );
-	strlower_m( oldname_lower );
+	strlower_m( oldname_lower , sizeof(fstring));
 
 	fstrcpy( newname_lower, newname );
-	strlower_m( newname_lower );
+	strlower_m( newname_lower , sizeof(fstring));
 
 	string_sub2(rename_script, "%unew", newname_lower, sizeof(pstring), 
 		True, False, True);
diff -uNrp samba-3.0.23d.org/source/passdb/secrets.c samba-3.0.23d.new/source/passdb/secrets.c
--- samba-3.0.23d.org/source/passdb/secrets.c	2006-06-23 22:16:51.000000000 +0900
+++ samba-3.0.23d.new/source/passdb/secrets.c	2007-01-23 18:01:12.000000000 +0900
@@ -125,7 +125,7 @@ BOOL secrets_store_domain_sid(const char
 	BOOL ret;
 
 	slprintf(key, sizeof(key)-1, "%s/%s", SECRETS_DOMAIN_SID, domain);
-	strupper_m(key);
+	strupper_m(key, sizeof(fstring));
 	ret = secrets_store(key, sid, sizeof(DOM_SID));
 
 	/* Force a re-query, in case we modified our domain */
@@ -141,7 +141,7 @@ BOOL secrets_fetch_domain_sid(const char
 	size_t size = 0;
 
 	slprintf(key, sizeof(key)-1, "%s/%s", SECRETS_DOMAIN_SID, domain);
-	strupper_m(key);
+	strupper_m(key, sizeof(fstring));
 	dyn_sid = (DOM_SID *)secrets_fetch(key, &size);
 
 	if (dyn_sid == NULL)
@@ -162,7 +162,7 @@ BOOL secrets_store_domain_guid(const cha
 	fstring key;
 
 	slprintf(key, sizeof(key)-1, "%s/%s", SECRETS_DOMAIN_GUID, domain);
-	strupper_m(key);
+	strupper_m(key, sizeof(fstring));
 	return secrets_store(key, guid, sizeof(struct uuid));
 }
 
@@ -174,7 +174,7 @@ BOOL secrets_fetch_domain_guid(const cha
 	struct uuid new_guid;
 
 	slprintf(key, sizeof(key)-1, "%s/%s", SECRETS_DOMAIN_GUID, domain);
-	strupper_m(key);
+	strupper_m(key, sizeof(fstring));
 	dyn_guid = (struct uuid *)secrets_fetch(key, &size);
 
 	if (!dyn_guid) {
@@ -213,7 +213,7 @@ const char *trust_keystr(const char *dom
 
 	slprintf(keystr,sizeof(keystr)-1,"%s/%s", 
 		 SECRETS_MACHINE_ACCT_PASS, domain);
-	strupper_m(keystr);
+	strupper_m(keystr, sizeof(fstring));
 
 	return keystr;
 }
@@ -230,7 +230,7 @@ static char *trustdom_keystr(const char 
 	static pstring keystr;
 
 	pstr_sprintf(keystr, "%s/%s", SECRETS_DOMTRUST_ACCT_PASS, domain);
-	strupper_m(keystr);
+	strupper_m(keystr, sizeof(pstring));
 		
 	return keystr;
 }
@@ -444,7 +444,7 @@ BOOL secrets_store_machine_password(cons
 	asprintf(&key, "%s/%s", SECRETS_MACHINE_PASSWORD, domain);
 	if (!key) 
 		return False;
-	strupper_m(key);
+	strupper_m_fixlen(key);
 
 	ret = secrets_store(key, pass, strlen(pass)+1);
 	SAFE_FREE(key);
@@ -455,7 +455,7 @@ BOOL secrets_store_machine_password(cons
 	asprintf(&key, "%s/%s", SECRETS_MACHINE_LAST_CHANGE_TIME, domain);
 	if (!key) 
 		return False;
-	strupper_m(key);
+	strupper_m_fixlen(key);
 
 	SIVAL(&last_change_time, 0, time(NULL));
 	ret = secrets_store(key, &last_change_time, sizeof(last_change_time));
@@ -464,7 +464,7 @@ BOOL secrets_store_machine_password(cons
 	asprintf(&key, "%s/%s", SECRETS_MACHINE_SEC_CHANNEL_TYPE, domain);
 	if (!key) 
 		return False;
-	strupper_m(key);
+	strupper_m_fixlen(key);
 
 	SIVAL(&sec_channel_type, 0, sec_channel);
 	ret = secrets_store(key, &sec_channel_type, sizeof(sec_channel_type));
@@ -485,7 +485,7 @@ char *secrets_fetch_machine_password(con
 	char *key = NULL;
 	char *ret;
 	asprintf(&key, "%s/%s", SECRETS_MACHINE_PASSWORD, domain);
-	strupper_m(key);
+	strupper_m_fixlen(key);
 	ret = (char *)secrets_fetch(key, NULL);
 	SAFE_FREE(key);
 	
@@ -493,7 +493,7 @@ char *secrets_fetch_machine_password(con
 		size_t size;
 		uint32 *last_set_time;
 		asprintf(&key, "%s/%s", SECRETS_MACHINE_LAST_CHANGE_TIME, domain);
-		strupper_m(key);
+		strupper_m_fixlen(key);
 		last_set_time = secrets_fetch(key, &size);
 		if (last_set_time) {
 			*pass_last_set_time = IVAL(last_set_time,0);
@@ -508,7 +508,7 @@ char *secrets_fetch_machine_password(con
 		size_t size;
 		uint32 *channel_type;
 		asprintf(&key, "%s/%s", SECRETS_MACHINE_SEC_CHANNEL_TYPE, domain);
-		strupper_m(key);
+		strupper_m_fixlen(key);
 		channel_type = secrets_fetch(key, &size);
 		if (channel_type) {
 			*channel = IVAL(channel_type,0);
@@ -951,7 +951,7 @@ BOOL secrets_store_schannel_session_info
 		return False;
 	}
 
-	strupper_m(keystr);
+	strupper_m_fixlen(keystr);
 
 	/* Work out how large the record is. */
 	value.dsize = tdb_pack(NULL, 0, "dBBBBBfff",
@@ -1028,7 +1028,7 @@ BOOL secrets_restore_schannel_session_in
 		return False;
 	}
 
-	strupper_m(keystr);
+	strupper_m_fixlen(keystr);
 
 	tdb_sc = open_schannel_session_store(mem_ctx);
 	if (!tdb_sc) {
diff -uNrp samba-3.0.23d.org/source/printing/lpq_parse.c samba-3.0.23d.new/source/printing/lpq_parse.c
--- samba-3.0.23d.org/source/printing/lpq_parse.c	2006-06-23 22:16:50.000000000 +0900
+++ samba-3.0.23d.new/source/printing/lpq_parse.c	2007-01-23 17:00:51.000000000 +0900
@@ -1045,7 +1045,7 @@ BOOL parse_lpq_entry(enum printing_types
 			printer status line: 
 			handle them so that most severe condition is shown */
 		int i;
-		strlower_m(line);
+		strlower_m_fixlen(line);
       
 		switch (status->status) {
 			case LPSTAT_OK:
diff -uNrp samba-3.0.23d.org/source/printing/nt_printing.c samba-3.0.23d.new/source/printing/nt_printing.c
--- samba-3.0.23d.org/source/printing/nt_printing.c	2006-07-11 01:27:50.000000000 +0900
+++ samba-3.0.23d.new/source/printing/nt_printing.c	2007-01-23 16:25:53.000000000 +0900
@@ -236,7 +236,7 @@ static TDB_DATA make_printer_tdbkey( con
 	TDB_DATA key;
 	
 	fstrcpy( share, sharename );
-	strlower_m( share );
+	strlower_m( share, sizeof(share) );
 	
 	pstr_sprintf( keystr, "%s%s", PRINTERS_PREFIX, share );
 	
@@ -256,7 +256,7 @@ static char *make_printers_secdesc_tdbke
 	static pstring keystr;
 	
 	fstrcpy( share, sharename );
-	strlower_m( share );
+	strlower_m( share, sizeof(share) );
 	
 	pstr_sprintf( keystr, "%s%s", SECDESC_PREFIX, share );
 
diff -uNrp samba-3.0.23d.org/source/registry/reg_db.c samba-3.0.23d.new/source/registry/reg_db.c
--- samba-3.0.23d.org/source/registry/reg_db.c	2006-04-20 11:29:45.000000000 +0900
+++ samba-3.0.23d.new/source/registry/reg_db.c	2007-01-23 16:25:53.000000000 +0900
@@ -445,7 +445,7 @@ int regdb_fetch_keys( const char* key, R
 	
 	/* convert to key format */
 	pstring_sub( path, "\\", "/" ); 
-	strupper_m( path );
+	strupper_m( path , sizeof(pstring));
 	
 	dbuf = tdb_fetch_bystring( tdb_reg, path );
 	
diff -uNrp samba-3.0.23d.org/source/registry/reg_util.c samba-3.0.23d.new/source/registry/reg_util.c
--- samba-3.0.23d.org/source/registry/reg_util.c	2005-10-18 21:46:06.000000000 +0900
+++ samba-3.0.23d.new/source/registry/reg_util.c	2007-01-23 16:25:58.000000000 +0900
@@ -94,7 +94,7 @@ BOOL reg_split_key( char *path, char **b
 void normalize_reg_path( pstring keyname )
 {
 	pstring_sub( keyname, "\\", "/" );
-	strupper_m( keyname  );
+	strupper_m( keyname, sizeof(pstring));
 }
 
 /**********************************************************************
diff -uNrp samba-3.0.23d.org/source/rpc_client/cli_spoolss.c samba-3.0.23d.new/source/rpc_client/cli_spoolss.c
--- samba-3.0.23d.org/source/rpc_client/cli_spoolss.c	2006-04-20 11:29:14.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_client/cli_spoolss.c	2007-01-23 16:50:43.000000000 +0900
@@ -546,7 +546,7 @@ WERROR rpccli_spoolss_enum_ports(struct 
 	ZERO_STRUCT(out);
 
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(server);
+        strupper_m(server, sizeof(fstring));
 
 	offered = 0;
 	rpcbuf_init(&buffer, offered, mem_ctx);
@@ -726,7 +726,7 @@ WERROR rpccli_spoolss_getprinterdriver(s
 	ZERO_STRUCT(out);
 
 	fstrcpy(server, cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	offered = 0;
 	rpcbuf_init(&buffer, offered, mem_ctx);
@@ -804,7 +804,7 @@ WERROR rpccli_spoolss_enumprinterdrivers
 	ZERO_STRUCT(out);
 
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(server);
+        strupper_m(server, sizeof(fstring));
 
 	offered = 0;
 	rpcbuf_init(&buffer, offered, mem_ctx);
@@ -887,7 +887,7 @@ WERROR rpccli_spoolss_getprinterdriverdi
 	ZERO_STRUCT(out);
 
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(server);
+        strupper_m(server, sizeof(fstring));
 
 	offered = 0;
 	rpcbuf_init(&buffer, offered, mem_ctx);
@@ -945,7 +945,7 @@ WERROR rpccli_spoolss_addprinterdriver (
 	ZERO_STRUCT(out);
 	
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(server);
+        strupper_m(server, sizeof(fstring));
 
 	make_spoolss_q_addprinterdriver( mem_ctx, &in, server, level, ctr );
 
@@ -976,8 +976,8 @@ WERROR rpccli_spoolss_addprinterex (stru
         slprintf(client, sizeof(fstring)-1, "\\\\%s", global_myname());
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
 	
-        strupper_m(client);
-        strupper_m(server);
+        strupper_m(client, sizeof(fstring));
+        strupper_m(server, sizeof(fstring));
 
 	fstrcpy  (user, cli->user_name);
 
@@ -1010,7 +1010,7 @@ WERROR rpccli_spoolss_deleteprinterdrive
 	ZERO_STRUCT(out);
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	make_spoolss_q_deleteprinterdriverex( mem_ctx, &in, server, arch, driver, version );
 
@@ -1040,7 +1040,7 @@ WERROR rpccli_spoolss_deleteprinterdrive
 	ZERO_STRUCT(out);
 
         slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(server);
+        strupper_m(server,sizeof(fstring));
 
 	make_spoolss_q_deleteprinterdriver( mem_ctx, &in, server, arch, driver );
 
diff -uNrp samba-3.0.23d.org/source/rpc_client/cli_srvsvc.c samba-3.0.23d.new/source/rpc_client/cli_srvsvc.c
--- samba-3.0.23d.org/source/rpc_client/cli_srvsvc.c	2006-06-23 22:16:49.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_client/cli_srvsvc.c	2007-01-23 16:53:34.000000000 +0900
@@ -39,7 +39,7 @@ WERROR rpccli_srvsvc_net_srv_get_info(st
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_srv_get_info(&q, server, switch_value);
 	r.ctr = ctr;
@@ -74,7 +74,7 @@ WERROR rpccli_srvsvc_net_share_enum(stru
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_share_enum(&q, server, info_level, preferred_len, hnd);
 
@@ -236,7 +236,7 @@ WERROR rpccli_srvsvc_net_share_get_info(
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_share_get_info(&q, server, sharename, info_level);
 
@@ -378,7 +378,7 @@ WERROR rpccli_srvsvc_net_share_set_info(
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_share_set_info(&q, server, sharename, info_level, info);
 
@@ -410,7 +410,7 @@ WERROR rpccli_srvsvc_net_share_del(struc
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_share_del(&q, server, sharename);
 
@@ -444,7 +444,7 @@ WERROR rpccli_srvsvc_net_share_add(struc
 	ZERO_STRUCT(r);
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_share_add(&q,server, netname, type, remark,
 				 perms, max_uses, num_uses, path, passwd, 
@@ -478,7 +478,7 @@ WERROR rpccli_srvsvc_net_remote_tod(stru
 	/* Initialise input parameters */
 
 	slprintf(server_slash, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server_slash);
+	strupper_m(server_slash, sizeof(fstring));
 
 	init_srv_q_net_remote_tod(&q, server_slash);
 	r.tod = tod;
@@ -514,7 +514,7 @@ WERROR rpccli_srvsvc_net_file_enum(struc
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server,sizeof(fstring));
 
 	init_srv_q_net_file_enum(&q, server, NULL, user_name, 
 				 file_level, ctr, preferred_len, hnd);
@@ -594,7 +594,7 @@ WERROR rpccli_srvsvc_net_file_close(stru
 	/* Initialise input parameters */
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	init_srv_q_net_file_close(&q, server, file_id);
 
diff -uNrp samba-3.0.23d.org/source/rpc_parse/parse_net.c samba-3.0.23d.new/source/rpc_parse/parse_net.c
--- samba-3.0.23d.org/source/rpc_parse/parse_net.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_parse/parse_net.c	2007-01-23 16:25:54.000000000 +0900
@@ -587,7 +587,7 @@ void init_r_trust_dom(NET_R_TRUST_DOM_LI
 	for (i = 0; i < num_doms; i++) {
 		fstring domain_name;
 		fstrcpy(domain_name, dom_name);
-		strupper_m(domain_name);
+		strupper_m(domain_name, sizeof(fstring));
 		init_unistr2(&r_t->uni_trust_dom_name[i], domain_name, UNI_STR_TERMINATE);
 		/* the use of UNISTR2 here is non-standard. */
 		r_t->uni_trust_dom_name[i].offset = 0x1;
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_dfs_nt.c samba-3.0.23d.new/source/rpc_server/srv_dfs_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_dfs_nt.c	2006-08-24 01:16:38.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_dfs_nt.c	2007-01-23 16:25:54.000000000 +0900
@@ -131,7 +131,7 @@ WERROR _dfs_Remove(pipes_struct *p, NETD
 		pstrcpy(altpath, servername);
 		pstrcat(altpath, "\\");
 		pstrcat(altpath, sharename);
-		strlower_m(altpath);
+		strlower_m(altpath, sizeof(pstring));
 	}
 
 	DEBUG(5,("init_reply_dfs_remove: Request to remove %s -> %s\\%s.\n",
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_eventlog_lib.c samba-3.0.23d.new/source/rpc_server/srv_eventlog_lib.c
--- samba-3.0.23d.org/source/rpc_server/srv_eventlog_lib.c	2006-07-11 01:27:51.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_eventlog_lib.c	2007-01-23 17:52:08.000000000 +0900
@@ -70,7 +70,7 @@ char *elog_tdbname( const char *name )
 	char *eventlogdir = lock_path( "eventlog" );
 	
 	pstr_sprintf( path, "%s/%s.tdb", eventlogdir, name );
-	strlower_m( path );
+	strlower_m( path , sizeof(fstring) );
 	tdb_fullpath = SMB_STRDUP( path );
 	
 	return tdb_fullpath;
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_lsa_ds_nt.c samba-3.0.23d.new/source/rpc_server/srv_lsa_ds_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_lsa_ds_nt.c	2005-04-19 01:38:19.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_lsa_ds_nt.c	2007-01-23 16:25:54.000000000 +0900
@@ -47,7 +47,7 @@ static NTSTATUS fill_dsrole_dominfo_basi
 	}
 
 	get_mydnsdomname(dnsdomain);
-	strlower_m(dnsdomain);
+	strlower_m(dnsdomain, sizeof(fstring));
 
 	switch ( lp_server_role() ) {
 		case ROLE_STANDALONE:
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_lsa_nt.c samba-3.0.23d.new/source/rpc_server/srv_lsa_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_lsa_nt.c	2006-08-08 01:46:33.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_lsa_nt.c	2007-01-23 16:25:54.000000000 +0900
@@ -1891,7 +1891,7 @@ NTSTATUS _lsa_query_info2(pipes_struct *
 				/* This should be a 'netbios domain -> DNS domain' mapping */
 				dnsdomname[0] = '\0';
 				get_mydnsdomname(dnsdomname);
-				strlower_m(dnsdomname);
+				strlower_m(dnsdomname, sizeof(fstring));
 				
 				dns_name = dnsdomname;
 				forest_name = dnsdomname;
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_samr_nt.c samba-3.0.23d.new/source/rpc_server/srv_samr_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_samr_nt.c	2006-08-08 01:46:33.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_samr_nt.c	2007-01-23 16:25:54.000000000 +0900
@@ -2860,7 +2860,7 @@ NTSTATUS _samr_enum_domains(pipes_struct
 	name = get_global_sam_name();
 
 	fstrcpy(dom[0],name);
-	strupper_m(dom[0]);
+	strupper_m(dom[0], sizeof(fstring));
 	fstrcpy(dom[1],"Builtin");
 
 	if (!make_enum_domains(p->mem_ctx, &r_u->sam, &r_u->uni_dom_name, num_entries, dom))
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_spoolss_nt.c samba-3.0.23d.new/source/rpc_server/srv_spoolss_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_spoolss_nt.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_spoolss_nt.c	2007-01-23 16:25:55.000000000 +0900
@@ -4279,7 +4279,7 @@ static BOOL construct_printer_info_7(Pri
 	
 	if (is_printer_published(print_hnd, snum, &guid)) {
 		asprintf(&guid_str, "{%s}", smb_uuid_string_static(guid));
-		strupper_m(guid_str);
+		strupper_m_fixlen(guid_str);
 		init_unistr(&printer->guid, guid_str);
 		printer->action = SPOOL_DS_PUBLISH;
 	} else {
@@ -4657,7 +4657,7 @@ WERROR _spoolss_enumprinters( pipes_stru
 	 */
 
 	unistr2_to_ascii(name, servername, sizeof(name)-1);
-	strupper_m(name);
+	strupper_m(name, sizeof(fstring));
 
 	switch (level) {
 	case 1:
diff -uNrp samba-3.0.23d.org/source/rpc_server/srv_wkssvc_nt.c samba-3.0.23d.new/source/rpc_server/srv_wkssvc_nt.c
--- samba-3.0.23d.org/source/rpc_server/srv_wkssvc_nt.c	2005-02-26 02:59:34.000000000 +0900
+++ samba-3.0.23d.new/source/rpc_server/srv_wkssvc_nt.c	2007-01-23 16:25:55.000000000 +0900
@@ -40,10 +40,10 @@ static void create_wks_info_100(WKS_INFO
 	DEBUG(5,("create_wks_info_100: %d\n", __LINE__));
 
 	pstrcpy (my_name, global_myname());
-	strupper_m(my_name);
+	strupper_m(my_name, sizeof(pstring));
 
 	pstrcpy (domain, lp_workgroup());
-	strupper_m(domain);
+	strupper_m(domain, sizeof(pstring));
 
 	init_wks_info_100(inf,
 	                  0x000001f4, /* platform id info */
diff -uNrp samba-3.0.23d.org/source/rpcclient/cmd_samr.c samba-3.0.23d.new/source/rpcclient/cmd_samr.c
--- samba-3.0.23d.org/source/rpcclient/cmd_samr.c	2006-11-14 23:42:12.000000000 +0900
+++ samba-3.0.23d.new/source/rpcclient/cmd_samr.c	2007-01-23 16:40:09.000000000 +0900
@@ -393,7 +393,7 @@ static NTSTATUS cmd_samr_query_user(stru
 	
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 	
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
@@ -583,7 +583,7 @@ static NTSTATUS cmd_samr_query_group(str
 		sscanf(argv[3], "%x", &access_mask);
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
@@ -648,7 +648,7 @@ static NTSTATUS cmd_samr_query_usergroup
 		sscanf(argv[2], "%x", &access_mask);
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 		
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
@@ -731,7 +731,7 @@ static NTSTATUS cmd_samr_query_useralias
 	}
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 		
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
@@ -798,7 +798,7 @@ static NTSTATUS cmd_samr_query_groupmem(
 		sscanf(argv[2], "%x", &access_mask);
 
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
@@ -1894,7 +1894,7 @@ static NTSTATUS cmd_samr_query_sec_obj(s
 	}
 	
 	slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(server);
+	strupper_m(server, sizeof(fstring));
 	result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
 				   &connect_pol);
 
diff -uNrp samba-3.0.23d.org/source/rpcclient/cmd_spoolss.c samba-3.0.23d.new/source/rpcclient/cmd_spoolss.c
--- samba-3.0.23d.org/source/rpcclient/cmd_spoolss.c	2006-07-11 01:27:50.000000000 +0900
+++ samba-3.0.23d.new/source/rpcclient/cmd_spoolss.c	2007-01-23 19:25:26.000000000 +0900
@@ -111,7 +111,7 @@ static WERROR cmd_spoolss_open_printer_e
             return WERR_GENERAL_FAILURE;
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	fstrcpy(printername, argv[1]);
 
@@ -321,7 +321,7 @@ static WERROR cmd_spoolss_enum_printers(
 		fstrcpy(name, argv[2]);
 	else {
 		slprintf(name, sizeof(name)-1, "\\\\%s", cli->cli->desthost);
-		strupper_m(name);
+		strupper_m(name, sizeof(name));
 	}
 
 	ZERO_STRUCT(ctr);
@@ -492,7 +492,7 @@ static WERROR cmd_spoolss_setprinter(str
 	}
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
 	fstrcpy(user, cli->user_name);
 
@@ -558,7 +558,7 @@ static WERROR cmd_spoolss_setprintername
 	}
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
 	fstrcpy(user, cli->user_name);
 
@@ -621,7 +621,7 @@ static WERROR cmd_spoolss_getprinter(str
 	}
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
 	fstrcpy(user, cli->user_name);
 	
@@ -752,7 +752,7 @@ static WERROR cmd_spoolss_getprinterdata
 	/* Open a printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	if (strncmp(argv[1], ".", sizeof(".")) == 0)
 		fstrcpy(printername, servername);
 	else
@@ -819,7 +819,7 @@ static WERROR cmd_spoolss_getprinterdata
 	/* Open a printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	if (strncmp(argv[1], ".", sizeof(".")) == 0)
 		fstrcpy(printername, servername);
 	else
@@ -995,7 +995,7 @@ static WERROR cmd_spoolss_getdriver(stru
 
 	/* get the arguments need to open the printer handle */
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
 	if (argc == 3)
@@ -1376,7 +1376,7 @@ static WERROR cmd_spoolss_addprinterex(s
         }
 	
         slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-        strupper_m(servername);
+        strupper_m(servername, sizeof(servername));
 
 	/* Fill in the DRIVER_INFO_2 struct */
 	ZERO_STRUCT(info2);
@@ -1438,7 +1438,7 @@ static WERROR cmd_spoolss_setdriver(stru
         }
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	slprintf(printername, sizeof(printername)-1, "%s\\%s", servername, argv[1]);
 	fstrcpy(user, cli->user_name);
 
@@ -1564,7 +1564,7 @@ static WERROR cmd_spoolss_deletedriver(s
         }
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 
 	/* delete the driver for all architectures */
 	for (i=0; archi_table[i].long_archi; i++) {
@@ -1606,7 +1606,7 @@ static WERROR cmd_spoolss_getprintprocdi
 
 	if (asprintf(&servername, "\\\\%s", cli->cli->desthost) < 0)
 		return WERR_NOMEM;
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 
 	if (asprintf(&environment, "%s", (argc == 2) ? argv[1] : 
 		     PRINTER_DRIVER_ARCHITECTURE) < 0) {
@@ -1648,7 +1648,7 @@ static WERROR cmd_spoolss_addform(struct
 	/* Get a printer handle */
 
 	asprintf(&servername, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, "", 
@@ -1708,7 +1708,7 @@ static WERROR cmd_spoolss_setform(struct
 	/* Get a printer handle */
 
 	asprintf(&servername, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
@@ -1805,7 +1805,7 @@ static WERROR cmd_spoolss_getform(struct
 	/* Get a printer handle */
 
 	asprintf(&servername, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
@@ -1858,7 +1858,7 @@ static WERROR cmd_spoolss_deleteform(str
 	/* Get a printer handle */
 
 	asprintf(&servername, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
@@ -1908,7 +1908,7 @@ static WERROR cmd_spoolss_enum_forms(str
 	/* Get a printer handle */
 
 	asprintf(&servername, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m_fixlen(servername);
 	asprintf(&printername, "%s\\%s", servername, argv[1]);
 
 	werror = rpccli_spoolss_open_printer_ex(
@@ -1969,7 +1969,7 @@ static WERROR cmd_spoolss_setprinterdata
 	}
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername,sizeof(servername));
 	slprintf(printername, sizeof(servername)-1, "%s\\%s", servername, argv[1]);
 	fstrcpy(user, cli->user_name);
 
@@ -2167,10 +2167,10 @@ static WERROR cmd_spoolss_enum_jobs(stru
 	/* Open printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(servername)-1, "\\\\%s\\", cli->cli->desthost);
-	strupper_m(printername);
+	strupper_m(printername, sizeof(printername));
 	pstrcat(printername, argv[1]);
 
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
@@ -2233,10 +2233,10 @@ static WERROR cmd_spoolss_enum_data( str
 	/* Open printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(printername)-1, "\\\\%s\\", cli->cli->desthost);
-	strupper_m(printername);
+	strupper_m(printername, sizeof(printername));
 	pstrcat(printername, argv[1]);
 
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
@@ -2297,10 +2297,10 @@ static WERROR cmd_spoolss_enum_data_ex( 
 	/* Open printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(printername)-1, "\\\\%s\\", cli->cli->desthost);
-	strupper_m(printername);
+	strupper_m(printername, sizeof(printername));
 	pstrcat(printername, argv[1]);
 
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
@@ -2363,10 +2363,10 @@ static WERROR cmd_spoolss_enum_printerke
 	/* Open printer handle */
 
 	slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 	fstrcpy(user, cli->user_name);
 	slprintf(printername, sizeof(printername)-1, "\\\\%s\\", cli->cli->desthost);
-	strupper_m(printername);
+	strupper_m(printername, sizeof(printername));
 	pstrcat(printername, argv[1]);
 
 	result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
@@ -2426,11 +2426,11 @@ static WERROR cmd_spoolss_rffpcnex(struc
 	/* Open printer */
 
 	slprintf(servername, sizeof(servername) - 1, "\\\\%s", cli->cli->desthost);
-	strupper_m(servername);
+	strupper_m(servername, sizeof(servername));
 
 	slprintf(printername, sizeof(printername) - 1, "\\\\%s\\%s", cli->cli->desthost,
 		 argv[1]);
-	strupper_m(printername);
+	strupper_m(printername, sizeof(printername));
 
 	result = rpccli_spoolss_open_printer_ex(
 		cli, mem_ctx, printername, "", MAXIMUM_ALLOWED_ACCESS, 
@@ -2472,7 +2472,7 @@ static WERROR cmd_spoolss_rffpcnex(struc
 	/* Send rffpcnex */
 
 	slprintf(servername, sizeof(servername) - 1, "\\\\%s", myhostname());
-	strupper_m(servername);
+	strupper_m(servername, sizeof(fstring));
 
 	result = rpccli_spoolss_rffpcnex(
 		cli, mem_ctx, &hnd, 0, 0, servername, 123, &option);
@@ -2610,8 +2610,8 @@ static WERROR cmd_spoolss_printercmp(str
 	
 	fstr_sprintf( servername1, cli->cli->desthost );
 	fstrcpy( servername2, argv[2] );
-	strupper_m( servername1 );
-	strupper_m( servername2 );
+	strupper_m( servername1 , sizeof(servername1));
+	strupper_m( servername2 , sizeof(servername2));
 	
 	
 	/* first get the connection to the remote server */
diff -uNrp samba-3.0.23d.org/source/rpcclient/cmd_wkssvc.c samba-3.0.23d.new/source/rpcclient/cmd_wkssvc.c
--- samba-3.0.23d.org/source/rpcclient/cmd_wkssvc.c	2005-10-18 11:44:54.000000000 +0900
+++ samba-3.0.23d.new/source/rpcclient/cmd_wkssvc.c	2007-01-23 16:25:56.000000000 +0900
@@ -46,7 +46,7 @@ void cmd_wks_query_info(struct client_in
 
 	fstrcpy(dest_wks, "\\\\");
 	fstrcat(dest_wks, info->dest_host);
-	strupper_m(dest_wks);
+	strupper_m(dest_wks, sizeof(fstring));
 
 	if (next_token_nr(NULL, tmp, NULL, sizeof(tmp)))
 	{
diff -uNrp samba-3.0.23d.org/source/smbd/lanman.c samba-3.0.23d.new/source/smbd/lanman.c
--- samba-3.0.23d.org/source/smbd/lanman.c	2006-08-31 03:08:38.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/lanman.c	2007-01-23 16:29:51.000000000 +0900
@@ -2763,7 +2763,7 @@ static BOOL api_NetWkstaGetInfo(connecti
 
 	SIVAL(p,0,PTR_DIFF(p2,*rdata)); /* host name */
 	pstrcpy(p2,get_local_machine_name());
-	strupper_m(p2);
+	strupper_m_fixlen(p2);
 	p2 = skip_string(p2,1);
 	p += 4;
 
@@ -2774,7 +2774,7 @@ static BOOL api_NetWkstaGetInfo(connecti
 
 	SIVAL(p,0,PTR_DIFF(p2,*rdata)); /* login domain */
 	pstrcpy(p2,lp_workgroup());
-	strupper_m(p2);
+	strupper_m_fixlen(p2);
 	p2 = skip_string(p2,1);
 	p += 4;
 
@@ -3203,7 +3203,7 @@ static BOOL api_WWkstaUserLogon(connecti
 			fstring mypath;
 			fstrcpy(mypath,"\\\\");
 			fstrcat(mypath,get_local_machine_name());
-			strupper_m(mypath);
+			strupper_m(mypath,sizeof(fstring));
 			PACKS(&desc,"z",mypath); /* computer */
 		}
 
@@ -3475,7 +3475,7 @@ static void fill_printdest_info(connecti
 
 	strncpy(buf,SERVICE(snum),sizeof(buf)-1);
 	buf[sizeof(buf)-1] = 0;
-	strupper_m(buf);
+	strupper_m(buf, sizeof(buf));
 
 	if (uLevel <= 1) {
 		PACKS(desc,"B9",buf);	/* szName */
diff -uNrp samba-3.0.23d.org/source/smbd/mangle_hash.c samba-3.0.23d.new/source/smbd/mangle_hash.c
--- samba-3.0.23d.org/source/smbd/mangle_hash.c	2006-01-25 08:46:32.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/mangle_hash.c	2007-01-23 16:25:56.000000000 +0900
@@ -542,7 +542,7 @@ static void to_8_3(char *s, int default_
 	} else
 		csum = str_checksum(s);
 
-	strupper_m( s );
+	strupper_m_fixlen( s );
 
 	if( p ) {
 		if( p == s )
diff -uNrp samba-3.0.23d.org/source/smbd/mangle_hash2.c samba-3.0.23d.new/source/smbd/mangle_hash2.c
--- samba-3.0.23d.org/source/smbd/mangle_hash2.c	2006-01-25 08:46:32.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/mangle_hash2.c	2007-01-23 16:25:56.000000000 +0900
@@ -132,7 +132,7 @@ static u32 mangle_hash(const char *key, 
 	length = MIN(length,sizeof(fstring)-1);
 	strncpy(str, key, length);
 	str[length] = 0;
-	strupper_m(str);
+	strupper_m(str, sizeof(fstring));
 
 	/* the length of a multi-byte string can change after a strupper_m */
 	length = strlen(str);
diff -uNrp samba-3.0.23d.org/source/smbd/negprot.c samba-3.0.23d.new/source/smbd/negprot.c
--- samba-3.0.23d.org/source/smbd/negprot.c	2006-06-23 22:16:49.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/negprot.c	2007-01-23 16:25:58.000000000 +0900
@@ -186,7 +186,7 @@ static int negprot_spnego(char *p, uint8
 	ZERO_STRUCT(guid);
 
 	safe_strcpy(unix_name, global_myname(), sizeof(unix_name)-1);
-	strlower_m(unix_name);
+	strlower_m(unix_name, sizeof(fstring));
 	push_ascii_nstring(dos_name, unix_name);
 	safe_strcpy(guid, dos_name, sizeof(guid)-1);
 
@@ -224,7 +224,7 @@ static int negprot_spnego(char *p, uint8
 		fstring myname;
 		char *host_princ_s = NULL;
 		name_to_fqdn(myname, global_myname());
-		strlower_m(myname);
+		strlower_m(myname, sizeof(fstring));
 		asprintf(&host_princ_s, "cifs/%s@%s", myname, lp_realm());
 		blob = spnego_gen_negTokenInit(guid, OIDs_krb5, host_princ_s);
 		SAFE_FREE(host_princ_s);
diff -uNrp samba-3.0.23d.org/source/smbd/password.c samba-3.0.23d.new/source/smbd/password.c
--- samba-3.0.23d.org/source/smbd/password.c	2006-08-24 01:16:37.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/password.c	2007-01-23 17:26:09.000000000 +0900
@@ -437,7 +437,7 @@ BOOL user_in_netgroup(const char *user, 
 		 */
 
 		fstrcpy(lowercase_user, user);
-		strlower_m(lowercase_user);
+		strlower_m(lowercase_user, sizeof(fstring));
 	
 		DEBUG(5,("looking for user %s of domain %s in netgroup %s\n",
 			lowercase_user, mydomain?mydomain:"(ANY)", ngname));
diff -uNrp samba-3.0.23d.org/source/smbd/service.c samba-3.0.23d.new/source/smbd/service.c
--- samba-3.0.23d.org/source/smbd/service.c	2006-11-15 06:02:52.000000000 +0900
+++ samba-3.0.23d.new/source/smbd/service.c	2007-01-23 17:42:51.000000000 +0900
@@ -301,7 +301,7 @@ int find_service(fstring service)
 	/* Is it a usershare service ? */
 	if (iService < 0 && *lp_usershare_path()) {
 		/* Ensure the name is canonicalized. */
-		strlower_m(service);
+		strlower_m(service, sizeof(fstring));
 		iService = load_usershare_service(service);
 	}
 
@@ -343,7 +343,7 @@ static NTSTATUS share_sanity_checks(int 
 		}
 	}
 
-	strupper_m(dev);
+	strupper_m(dev, sizeof(fstring));
 
 	if (lp_print_ok(snum)) {
 		if (!strequal(dev, "LPT1:")) {
@@ -1095,7 +1095,7 @@ connection_struct *make_connection(const
 	
 	fstrcpy(service, service_in);
 
-	strlower_m(service);
+	strlower_m(service, sizeof(fstring));
 
 	snum = find_service(service);
 
diff -uNrp samba-3.0.23d.org/source/torture/masktest.c samba-3.0.23d.new/source/torture/masktest.c
--- samba-3.0.23d.org/source/torture/masktest.c	2006-04-20 11:29:44.000000000 +0900
+++ samba-3.0.23d.new/source/torture/masktest.c	2007-01-23 16:25:57.000000000 +0900
@@ -277,9 +277,9 @@ static void get_real_name(struct cli_sta
 	}
 	if (f_info) {
 		fstrcpy(short_name, f_info->short_name);
-		strlower_m(short_name);
+		strlower_m(short_name, sizeof(fstring));
 		pstrcpy(long_name, f_info->name);
-		strlower_m(long_name);
+		strlower_m(long_name, sizeof(pstring));
 	}
 
 	if (*short_name == 0) {
diff -uNrp samba-3.0.23d.org/source/torture/rpctorture.c samba-3.0.23d.new/source/torture/rpctorture.c
--- samba-3.0.23d.org/source/torture/rpctorture.c	2006-04-20 11:29:44.000000000 +0900
+++ samba-3.0.23d.new/source/torture/rpctorture.c	2007-01-23 16:25:57.000000000 +0900
@@ -367,7 +367,7 @@ enum client_action
 			case 'S':
 			{
 				pstrcpy(cli_info.dest_host,optarg);
-				strupper_m(cli_info.dest_host);
+				strupper_m(cli_info.dest_host, sizeof(pstring));
 				cli_action = CLIENT_IPC;
 				break;
 			}
@@ -490,7 +490,7 @@ enum client_action
 		exit(1);
 	}
 
-	strupper_m(global_myname);
+	strupper_m(global_myname, sizeof(fstring));
 	fstrcpy(cli_info.myhostname, global_myname);
 
 	DEBUG(3,("%s client started (version %s)\n",timestring(False),SAMBA_VERSION_STRING));
@@ -499,7 +499,7 @@ enum client_action
 	{
 		pstrcpy(smb_cli->domain,lp_workgroup());
 	}
-	strupper_m(smb_cli->domain);
+	strupper_m(smb_cli->domain, sizeof(pstring));
 
 	load_interfaces();
 
@@ -510,7 +510,7 @@ enum client_action
 	}
 
 	fstrcpy(cli_info.mach_acct, cli_info.myhostname);
-	strupper_m(cli_info.mach_acct);
+	strupper_m(cli_info.mach_acct, sizeof(fstring));
 	fstrcat(cli_info.mach_acct, "$");
 
 	/* set the password cache info */
diff -uNrp samba-3.0.23d.org/source/utils/net_ads.c samba-3.0.23d.new/source/utils/net_ads.c
--- samba-3.0.23d.org/source/utils/net_ads.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/utils/net_ads.c	2007-01-23 19:10:10.000000000 +0900
@@ -267,7 +267,7 @@ retry:
        if ((cp = strchr_m(ads->auth.user_name, '@'))!=0) {
                *cp++ = '\0';
                ads->auth.realm = smb_xstrdup(cp);
-               strupper_m(ads->auth.realm);
+               strupper_m_fixlen(ads->auth.realm);
        }
 
 	status = ads_connect(ads);
@@ -980,11 +980,11 @@ static ADS_STATUS net_set_machine_spn(TA
 	   
 	if ( !(psp = talloc_asprintf(ctx, "HOST/%s", machine_name)) ) 
 		goto done;
-	strupper_m(psp);
+	strupper_m_fixlen(psp);
 	servicePrincipalName[0] = psp;
 
 	name_to_fqdn(my_fqdn, machine_name);
-	strlower_m(my_fqdn);
+	strlower_m_fixlen(my_fqdn);
 	if ( !(psp = talloc_asprintf(ctx, "HOST/%s", my_fqdn)) ) 
 		goto done;
 	servicePrincipalName[1] = psp;
@@ -1725,7 +1725,7 @@ int net_ads_changetrustpw(int argc, cons
 	}
 
 	fstrcpy(my_name, global_myname());
-	strlower_m(my_name);
+	strlower_m(my_name, sizeof(fstring));
 	asprintf(&host_principal, "%s$@%s", my_name, ads->config.realm);
 	d_printf("Changing password for principal: %s\n", host_principal);
 
diff -uNrp samba-3.0.23d.org/source/utils/net_domain.c samba-3.0.23d.new/source/utils/net_domain.c
--- samba-3.0.23d.org/source/utils/net_domain.c	2006-07-11 01:27:53.000000000 +0900
+++ samba-3.0.23d.new/source/utils/net_domain.c	2007-01-23 19:10:38.000000000 +0900
@@ -81,7 +81,7 @@ NTSTATUS netdom_leave_domain( TALLOC_CTX
 	/* Create domain user */
 	
 	acct_name = talloc_asprintf(mem_ctx, "%s$", global_myname()); 
-	strlower_m(acct_name);
+	strlower_m_fixlen(acct_name);
 	const_acct_name = acct_name;
 
 	status = rpccli_samr_lookup_names(pipe_hnd, mem_ctx,
@@ -237,7 +237,7 @@ NTSTATUS netdom_join_domain( TALLOC_CTX 
 	/* Create domain user */
 	
 	acct_name = talloc_asprintf(mem_ctx, "%s$", global_myname()); 
-	strlower_m(acct_name);
+	strlower_m_fixlen(acct_name);
 	const_acct_name = acct_name;
 
 	/* Don't try to set any acb_info flags other than ACB_WSTRUST */
diff -uNrp samba-3.0.23d.org/source/utils/net_rpc.c samba-3.0.23d.new/source/utils/net_rpc.c
--- samba-3.0.23d.org/source/utils/net_rpc.c	2006-07-11 01:27:53.000000000 +0900
+++ samba-3.0.23d.new/source/utils/net_rpc.c	2007-01-23 16:58:06.000000000 +0900
@@ -286,7 +286,7 @@ static NTSTATUS rpc_oldjoin_internals(co
 	}
 	
 	fstrcpy(trust_passwd, global_myname());
-	strlower_m(trust_passwd);
+	strlower_m(trust_passwd, sizeof(fstring));
 
 	/*
 	 * Machine names can be 15 characters, but the max length on
@@ -4399,7 +4399,7 @@ static BOOL get_user_tokens(int *num_tok
 		} else {
 			*p++ = '\0';
 			fstrcpy(domain, name);
-			strupper_m(domain);
+			strupper_m(domain, sizeof(fstring));
 			fstrcpy(user, p);
 		}
 
@@ -5343,7 +5343,7 @@ static NTSTATUS rpc_trustdom_add_interna
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	strupper_m(acct_name);
+	strupper_m_fixlen(acct_name);
 
 	/* Get samr policy handle */
 	result = rpccli_samr_connect(pipe_hnd, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
@@ -5481,7 +5481,7 @@ static NTSTATUS rpc_trustdom_del_interna
 	if (acct_name == NULL)
 		return NT_STATUS_NO_MEMORY;
 
-	strupper_m(acct_name);
+	strupper_m_fixlen(acct_name);
 
 	if ((names = TALLOC_ARRAY(mem_ctx, const char *, 1)) == NULL) {
 		return NT_STATUS_NO_MEMORY;
@@ -5609,11 +5609,11 @@ static int rpc_trustdom_establish(int ar
 	}
 
 	domain_name = smb_xstrdup(argv[0]);
-	strupper_m(domain_name);
+	strupper_m_fixlen(domain_name);
 
 	/* account name used at first is our domain's name with '$' */
 	asprintf(&acct_name, "%s$", lp_workgroup());
-	strupper_m(acct_name);
+	strupper_m_fixlen(acct_name);
 	
 	/*
 	 * opt_workgroup will be used by connection functions further,
@@ -5756,7 +5756,7 @@ static int rpc_trustdom_revoke(int argc,
 	
 	/* generate upper cased domain name */
 	domain_name = smb_xstrdup(argv[0]);
-	strupper_m(domain_name);
+	strupper_m_fixlen(domain_name);
 
 	/* delete password of the trust */
 	if (!trusted_domain_password_delete(domain_name)) {
@@ -6189,7 +6189,7 @@ static int rpc_trustdom_list(int argc, c
 			do padding[--pad_len] = ' '; while (pad_len);
 
 			/* set opt_* variables to remote domain */
-			strupper_m(trusting_dom_names[i]);
+			strupper_m_fixlen(trusting_dom_names[i]);
 			opt_workgroup = talloc_strdup(mem_ctx, trusting_dom_names[i]);
 			opt_target_workgroup = opt_workgroup;
 			
diff -uNrp samba-3.0.23d.org/source/utils/net_rpc_join.c samba-3.0.23d.new/source/utils/net_rpc_join.c
--- samba-3.0.23d.org/source/utils/net_rpc_join.c	2006-06-23 22:16:53.000000000 +0900
+++ samba-3.0.23d.new/source/utils/net_rpc_join.c	2007-01-23 16:59:04.000000000 +0900
@@ -226,7 +226,7 @@ int net_rpc_join_newstyle(int argc, cons
 		result = NT_STATUS_NO_MEMORY;
 		goto done;
 	}
-	strlower_m(acct_name);
+	strlower_m_fixlen(acct_name);
 	const_acct_name = acct_name;
 
 	result = rpccli_samr_create_dom_user(pipe_hnd, mem_ctx, &domain_pol,
@@ -393,7 +393,7 @@ int net_rpc_join_newstyle(int argc, cons
 
 	/* Now store the secret in the secrets database */
 
-	strupper_m(domain);
+	strupper_m(domain, sizeof(fstring));
 
 	if (!secrets_store_domain_sid(domain, domain_sid)) {
 		DEBUG(0, ("error storing domain sid for %s\n", domain));
diff -uNrp samba-3.0.23d.org/source/utils/net_usershare.c samba-3.0.23d.new/source/utils/net_usershare.c
--- samba-3.0.23d.org/source/utils/net_usershare.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/utils/net_usershare.c	2007-01-23 19:11:17.000000000 +0900
@@ -441,7 +441,7 @@ static int net_usershare_info(int argc, 
 			return net_usershare_info_usage(argc, argv);
 	}
 
-	strlower_m(wcard);
+	strlower_m(wcard,sizeof(fstring));
 
 	ctx = talloc_init("share_info");
 	ret = get_share_list(ctx, wcard, only_ours);
@@ -877,7 +877,7 @@ static int net_usershare_list(int argc, 
 			return net_usershare_list_usage(argc, argv);
 	}
 
-	strlower_m(wcard);
+	strlower_m(wcard, sizeof(fstring));
 
 	ctx = talloc_init("share_list");
 	ret = get_share_list(ctx, wcard, only_ours);
diff -uNrp samba-3.0.23d.org/source/utils/ntlm_auth.c samba-3.0.23d.new/source/utils/ntlm_auth.c
--- samba-3.0.23d.org/source/utils/ntlm_auth.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/utils/ntlm_auth.c	2007-01-23 16:25:58.000000000 +0900
@@ -201,7 +201,7 @@ static BOOL parse_ntlm_auth_domain_user(
 	fstrcpy(user, p+1);
 	fstrcpy(domain, domuser);
 	domain[PTR_DIFF(p, domuser)] = 0;
-	strupper_m(domain);
+	strupper_m(domain, sizeof(fstring));
 
 	return True;
 }
@@ -752,7 +752,7 @@ static void offer_gss_spnego_mechs(void)
 	ZERO_STRUCT(spnego);
 
 	pstrcpy(myname_lower, global_myname());
-	strlower_m(myname_lower);
+	strlower_m(myname_lower, sizeof(pstring));
 
 	pstr_sprintf(principal, "%s$@%s", myname_lower, lp_realm());
 
diff -uNrp samba-3.0.23d.org/source/utils/pdbedit.c samba-3.0.23d.new/source/utils/pdbedit.c
--- samba-3.0.23d.org/source/utils/pdbedit.c	2006-11-14 23:42:14.000000000 +0900
+++ samba-3.0.23d.new/source/utils/pdbedit.c	2007-01-23 16:25:58.000000000 +0900
@@ -639,7 +639,7 @@ static int new_machine (struct pdb_metho
 	if (machinename[strlen (machinename) -1] == '$')
 		machinename[strlen (machinename) -1] = '\0';
 	
-	strlower_m(machinename);
+	strlower_m(machinename, sizeof(fstring));
 	
 	fstrcpy(machineaccount, machinename);
 	fstrcat(machineaccount, "$");
diff -uNrp samba-3.0.23d.org/source/utils/smbcontrol.c samba-3.0.23d.new/source/utils/smbcontrol.c
--- samba-3.0.23d.org/source/utils/smbcontrol.c	2006-06-10 04:30:32.000000000 +0900
+++ samba-3.0.23d.new/source/utils/smbcontrol.c	2007-01-23 16:25:58.000000000 +0900
@@ -955,7 +955,7 @@ static void my_make_nmb_name( struct nmb
 	fstring unix_name;
 	memset( (char *)n, '\0', sizeof(struct nmb_name) );
 	fstrcpy(unix_name, name);
-	strupper_m(unix_name);
+	strupper_m_fixlen(unix_name);
 	push_ascii(n->name, unix_name, sizeof(n->name), STR_TERMINATE);
 	n->name_type = (unsigned int)type & 0xFF;
 	push_ascii(n->scope,  global_scope(), 64, STR_TERMINATE);
diff -uNrp samba-3.0.23d.org/source/utils/smbpasswd.c samba-3.0.23d.new/source/utils/smbpasswd.c
--- samba-3.0.23d.org/source/utils/smbpasswd.c	2006-06-23 22:16:53.000000000 +0900
+++ samba-3.0.23d.new/source/utils/smbpasswd.c	2007-01-23 16:25:58.000000000 +0900
@@ -356,7 +356,7 @@ static int process_root(int local_flags)
 		if (local_flags & LOCAL_ADD_USER) {
 		        SAFE_FREE(new_passwd);
 			new_passwd = smb_xstrdup(user_name);
-			strlower_m(new_passwd);
+			strlower_m_fixlen(new_passwd);
 		}
 
 		/*
