ボリュームラベルのデフォルト値に関する不具合

提供: Samba-JP
移動先:案内検索
KB番号 J0101
最終更新日 2001/06/30
作成者 長谷川陽介
最終更新者

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.0.9 日本語版リリース1.0
  • Samba 2.0.7 日本語版リリース2.2
  • Samba 2.0.7 日本語版リリース2.1
  • Samba 2.0.7 日本語版リリース1.3
  • Samba 2.2.0

現象

volume オプションのデフォルト値が共有名にならず、スペース×8文字に見えます。 この現象は、Samba 2.0.7 日本語版リリース1.3以降で発生します。

これは次の手順で再現できます。

  1. smb.conf において volume オプションを指定していない共有を Windows 側でネットワークドライブに割り当てます。
  2. ドライブのアイコンを右クリックしてプロパティを表示させるとボリューム名が『 (スペース×8)』になっています。

原因

これは Samba 日本語版のバグによります。

Sambas日本語版では、ボリューム名を日本語対応するために loadparm.c 中で unix_to_dos() 関数により文字コード変換を行うようにしました。 しかし、unix_to_dos() 関数は static に確保されたバッファを利用して文字コード変換を行うため、後から発行した unix_to_dos() によりバッファが上書きされてしまい、結果としてボリューム名が空白になってしまっています。

ボリューム名が設定されていないときには、内部的にボリューム名として "./" という文字列が設定されます。これを受け取ったWindows は『ピリオドより左には8文字以内のスペースを補完、拡張子はない』という処理を行うため、結果としてスペース×8文字となります。

なお、Samba 2.2.0 においても同様の問題が発生します。

対処方法

Samba 2.0.10日本語版リリース1.0以降では、この問題は修正されています。

Samba 2.0.7日本語版リリース2.2は以下の暫定パッチにて対応しました。問題が発生している場合はこのパッチをソースに適用した上で、再コンパイルを行なってください。 またリリース2.2以前のSamba 2.0.7日本語版に対しても、同様のロジックを適用することで、この問題を修正することが可能です。

なお、この問題はSamba 2.2.1でも修正されます。

samba-2.0.7-ja-2.2_volumename.patch

この patch は本事象と『ボリュームラベルに日本語を設定したときに文字化けする』の両方の問題に対応しています。

また、関連する項目として『ボリュームラベルが意図しない文字列となる』も参照してください。

この技術情報は sugj-tech:2755, sugj-tech:2761, samba-jp:09219 からの一連のスレッドの議論を元に作成されています。