2011年10月28日

[samba-jp:21623] Re:コンピュータアカウントの追加について


山崎と申します。

>問題だと思われる、cpu1$ではなくcpu1_になっている部分の前後です。

以下に登録されているバグのような気がします。
https://bugzilla.samba.org/show_bug.cgi?id=5722

2011-10-26に「3.6.xでもまだ発生する?」みたいなことが書いてあります。

で、手元にある3.5.8のソースを見たのですが、以下のような関数呼び出しがあります。

=======================================================================================
smb_set_primary_group()
 → talloc_string_sub()
  → talloc_string_sub2()
=======================================================================================


ソースを引用すると以下。
=======================================================================================

int smb_set_primary_group(const char *unix_group, const char* unix_user)
{
 (中略)
add_script = talloc_string_sub(ctx,
add_script, "%u", unix_user);

  (後略)
=======================================================================================


=======================================================================================
char *talloc_string_sub(TALLOC_CTX *mem_ctx,
const char *src,
const char *pattern,
const char *insert)
{
return talloc_string_sub2(mem_ctx, src, pattern, insert,
true, false, false);
} ^^^^^★ここが偽
=======================================================================================

=======================================================================================

char *talloc_string_sub2(TALLOC_CTX *mem_ctx, const char *src,
const char *pattern,
const char *insert,
bool remove_unsafe_characters,
bool replace_once,
bool allow_trailing_dollar) //★ここが偽
{

(中略)


for (i=0;i<li;i++) {
switch (in[i]) {
case '`':
case '"':
case '\'':
case ';':
case '$': //★★
/* allow a trailing $
* (as in machine accounts) */
if (allow_trailing_dollar && (i == li - 1 )) { 
break; 
}
case '%':
case '\r':
case '\n':
if (remove_unsafe_characters) {
in[i] = '_';
break;
}
default:
/* ok */
break;
}
}
(後略)

=======================================================================================

上記★★部分で、$がマッチしたときに、if文でallow_trailing_dollarが偽なので、$を見つけてもbreakしない。
よって、下に突き抜けて、remove_unsafe_charactersの方は真なので、'_'に置換する。

・・・という風になっているような気がするのですが、どうでしょう?

最新の3.6.xや、元質問メールの3.3.12のソースは見てないので違うのかもしれませんけども。


投稿者 xml-rpc : 2011年10月28日 19:27
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107034
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。