KRB5_ACL_MATCH_FILE(3) | FreeBSD Library Functions Manual | KRB5_ACL_MATCH_FILE(3) |
名称
krb5_acl_match_file, krb5_acl_match_string — ACL マッチング関数ライブラリ
Kerberos 5 ライブラリ (libkrb5, -lkrb5)書式
krb5_error_codekrb5_acl_match_file( krb5_context context, const char *file, const char *format, ...);
krb5_error_code
krb5_acl_match_string( krb5_context context, const char *string, const char *format, ...);
解説
krb5_acl_match_file は、ファイルの各行に対して ACL 形式にマッチします。 # で始まる行は、コメントのように扱われ、無視されます。krb5_acl_match_string は、文字列に対して ACL 形式にマッチします。
ACL 形式には、3 つの形式指定子があります: s, f と r です。各記述子は、データとマッチするか、または格納するために可変長引数から 1 つの引数を検索します。入力文字列は、デリミタとして " "と "\t"を使用して分割されます。行中の複数の " "と "\t"は、同じであると見なされます。
- s
- (大文字と小文字を区別する) strcmp(3) を使用して文字列をマッチします。
- f
- fnmatch(3) で文字列をマッチします。 fnmatch 関数に渡される flags 引数 (最後の引数) は、0 です。
- r
- 渡された char ** に文字列のコピーを返します。コピーは、 free(3) で解放されなければなりません。エラーで文字列を free(3) (解放) する必要はありません: 関数は、クリーンアップし、 NULL へのポインタを設定します。
すべての未知の形式指定子によってエラーとなります。
使用例
char *s; ret = krb5_acl_match_string(context, "foo", "s", "foo"); if (ret) krb5_errx(context, 1, "acl didn't match"); ret = krb5_acl_match_string(context, "foo foo baz/kaka", "ss", "foo", &s, "foo/*"); if (ret) { /* エラーで解放する必要はない */ assert(s == NULL); krb5_errx(context, 1, "acl didn't match"); } free(s);
関連項目
krb5(3)May 12, 2006 | HEIMDAL |