名前 | 形式 | 機能説明 | 戻り値 | エラー | 属性 | 関連項目 | 警告
cc [flags...] file... -ltsol
#include <tsol/label.h> char *getpathbylabel(const char *path, char *resolved_path, size_t bufsize, const m_label_t *sl);
getpathbylabel() は、ゾーンパス名中のすべてのシンボリックリンクを展開し、「/./」および「/../」への参照、余分な「/」文字を解決した上で resolved_path で指定されたバッファー内に保存します。bufsize 引数には、このバッファーのサイズをバイト単位で指定します。表示されるパスには、シンボリックリンクコンポーネントも、「/./」や「/. ./」も含まれません。この関数は、大域ゾーンからだけ呼び出すことができます。
ゾーンパス名は、機密ラベル sl に対する相対位置を示します。存在しないゾーン名に対する機密ラベルを指定するには、指定された機密レベルがプロセス機密レベルより優位にあるか下位にあるかに応じて、プロセスは、PRIV_FILE_UPGRADE_SL または PRIV_FILE_DOWNGRADE_SL 特権を表明する必要があります。
getpathbylabel() は、成功時に resolved_path へのポインタを返します。失敗時には NULL を返し、errno を設定してエラーを示します。
path のパス接頭辞の構成要素に対する検索権限が拒否されています。
resolved_path は、プロセスの割り当てられたアドレス空間の外、または bufsize バイトを超えて展開されます。
path を変換するときに検出されたシンボリックリンクの数が多すぎます。
path または resolved_path が NULL でした。現在のゾーンが大域ゾーンではないか、sl が無効です。
ファイルシステムに対する読み取りまたは書き込みで I/O エラーが発生しました。
指定されたファイルが存在しません。
パス引数の長さが PATH_MAX を超えています。パス名コンポーネントの長さが NAME_MAX を超えていますが (sysconf(3C) を参照)、_POSIX_NO_TRUNC が有効になっています (pathconf(2) を参照)。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcslr |
MT レベル |
MT-安全 |
インタフェースの安定性 |
安定 |
getpathbylabel() は、readlink(2) システムコールを間接的に呼び出すので、ファイルシステム資源にアクセス不能なためにシステムがハングアップする可能性が継承されます。