名前 | 形式 | 機能説明 | 属性 | 戻り値 | エラー | 関連項目 | 警告
#include <sys/param.h> #include <tsol/mld.h>char *mldrealpath(const char *path, char *resolved_path);
#include <tsol/label.h>char *mldrealpathl(const char *path, char *resolved_path, const bslabel_t *sl);
mldrealpath() は、すべてのシンボリックリンクを展開し、path で名前を指定された NULL で終わる文字列の中の拡張文字、MLD 変換への参照を解決して、標準的な絶対パス名を resolved_path というバッファに格納します。結果として得られるパスは、現在の機密レベルのシングルレベルディレクトリのシンボリックリンクコンポーネントも、'/./' や '/. ./' も、装飾されていない MLD も、隠し SLD 名も持ちませ ん。
mldrealpathl() は mldrealpath() と同じように動作しますが、SLD 名は機密レベル sl を基準に指定されます。存在しない SLD 名に対する機密レベルを指定するには、指定された機密レベルがプロセス機密レベルより優位にあるか下位にあるかに応じて、プロセスは、PRIV_FILE_UPGRADE_SL
か PRIV_FILE_DOWNGRADE_SL
の特権を表明しなくてはなりません。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtsu |
MT レベル | MT- 安全 |
mldrealpath() は、成功時には resolved_path へのポインタを返します。失敗時には NULL を返し、errno を設定してエラーを示します。また、解決できなかった path コンポーネントの絶対パス名を resolved_path の中に格納します。
path のパス接頭辞のコンポーネントに対して検索アクセス権が拒否されます。
resolved_path がプロセスの割り当てられたアドレス空間の外に展開されます。
path の変換時に検出されたシンボリックリンクが 多すぎます。
path または resolved_path が NULL でした。
ファイルシステムからの読み取り時またはファイルシステムへの書き込み時に入出力エラーが発生しました。
指定されたファイルが存在しません。
パス引数の長さが PATH_MAX を超えています。
パス名コンポーネントが NAME_MAXより長い (sysconf(3)を参照) のに、_POSIX_NO_TRUNC が有効です (pathconf(2)を参照)。
readlink(2), getsldname(2), mldgetwd(3)
readlink(2) システムコールと mldgetwd(3) ライブラリコールを間接的に呼び出すので (相対パス名の場合)、ファイルシステム資源にアクセス不能なためにシステムがハングアップする可能性が継承されます。