librpc/ndr/ndr_sec.h

ソースコードを見る。

関数

size_t ndr_size_dom_sid (const struct dom_sid *sid)
size_t ndr_length_dom_sid (const struct dom_sid *sid)
size_t ndr_size_security_ace (const struct security_ace *ace)
size_t ndr_size_security_acl (const struct security_acl *acl)
size_t ndr_size_security_descriptor (const struct security_descriptor *sd)
void ndr_print_dom_sid (struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
void ndr_print_dom_sid2 (struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
void ndr_print_dom_sid28 (struct ndr_print *ndr, const char *name, const struct dom_sid *sid)
char * dom_sid_string (TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
NTSTATUS ndr_pull_dom_sid2 (struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
NTSTATUS ndr_push_dom_sid2 (struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)
NTSTATUS ndr_pull_dom_sid28 (struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid)
NTSTATUS ndr_push_dom_sid28 (struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid)


関数

size_t ndr_size_dom_sid ( const struct dom_sid sid  ) 

参照元 ndr_size_security_ace()ndr_size_security_descriptor().

size_t ndr_length_dom_sid ( const struct dom_sid sid  ) 

size_t ndr_size_security_ace ( const struct security_ace ace  ) 

参照元 ndr_print_security_ace()ndr_push_security_ace()ndr_size_security_acl().

size_t ndr_size_security_acl ( const struct security_acl acl  ) 

参照元 ndr_print_security_acl()ndr_push_security_acl()ndr_size_security_descriptor().

size_t ndr_size_security_descriptor ( const struct security_descriptor sd  ) 

参照元 ndr_print_sec_desc_buf()ndr_push_sec_desc_buf().

void ndr_print_dom_sid ( struct ndr_print ndr,
const char *  name,
const struct dom_sid sid 
)

ndr_sec_helper.c79 行で定義されています。

参照先 dom_sid_string()ndr_print::print.

参照元 ndr_print_dom_sid2()ndr_print_dom_sid28()ndr_print_security_ace()ndr_print_security_descriptor().

00080 {
00081         ndr->print(ndr, "%-25s: %s", name, dom_sid_string(ndr, sid));
00082 }

void ndr_print_dom_sid2 ( struct ndr_print ndr,
const char *  name,
const struct dom_sid sid 
)

ndr_sec_helper.c84 行で定義されています。

参照先 ndr_print_dom_sid().

00085 {
00086         ndr_print_dom_sid(ndr, name, sid);
00087 }

void ndr_print_dom_sid28 ( struct ndr_print ndr,
const char *  name,
const struct dom_sid sid 
)

ndr_sec_helper.c89 行で定義されています。

参照先 ndr_print_dom_sid().

00090 {
00091         ndr_print_dom_sid(ndr, name, sid);
00092 }

char* dom_sid_string ( TALLOC_CTX mem_ctx,
const struct dom_sid sid 
)

sid.c65 行で定義されています。

参照先 dom_sid::id_authdom_sid::num_authsdom_sid::sid_rev_numsnprintf()dom_sid::sub_authstalloc_strdup().

参照元 ndr_print_dom_sid().

00066 {
00067         int i, ofs, maxlen;
00068         uint32_t ia;
00069         char *ret;
00070         
00071         if (!sid) {
00072                 return talloc_strdup(mem_ctx, "(NULL SID)");
00073         }
00074 
00075         maxlen = sid->num_auths * 11 + 25;
00076         ret = (char *)talloc_size(mem_ctx, maxlen);
00077         if (!ret) return talloc_strdup(mem_ctx, "(SID ERR)");
00078 
00079         ia = (sid->id_auth[5]) +
00080                 (sid->id_auth[4] << 8 ) +
00081                 (sid->id_auth[3] << 16) +
00082                 (sid->id_auth[2] << 24);
00083 
00084         ofs = snprintf(ret, maxlen, "S-%u-%lu", 
00085                        (unsigned int)sid->sid_rev_num, (unsigned long)ia);
00086 
00087         for (i = 0; i < sid->num_auths; i++) {
00088                 ofs += snprintf(ret + ofs, maxlen - ofs, "-%lu", (unsigned long)sid->sub_auths[i]);
00089         }
00090         
00091         return ret;
00092 }

NTSTATUS ndr_pull_dom_sid2 ( struct ndr_pull ndr,
int  ndr_flags,
struct dom_sid sid 
)

sid.c97 行で定義されています。

参照先 NDR_ERR_ARRAY_SIZEndr_pull_dom_sid()ndr_pull_uint32()dom_sid::num_auths.

00098 {
00099         uint32_t num_auths;
00100         if (!(ndr_flags & NDR_SCALARS)) {
00101                 return NT_STATUS_OK;
00102         }
00103         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &num_auths));
00104         NDR_CHECK(ndr_pull_dom_sid(ndr, ndr_flags, sid));
00105         if (sid->num_auths != num_auths) {
00106                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
00107                                       "Bad array size %u should exceed %u", 
00108                                       num_auths, sid->num_auths);
00109         }
00110         return NT_STATUS_OK;
00111 }

NTSTATUS ndr_push_dom_sid2 ( struct ndr_push ndr,
int  ndr_flags,
const struct dom_sid sid 
)

sid.c116 行で定義されています。

参照先 ndr_push_dom_sid()ndr_push_uint32()dom_sid::num_auths.

00117 {
00118         if (!(ndr_flags & NDR_SCALARS)) {
00119                 return NT_STATUS_OK;
00120         }
00121         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, sid->num_auths));
00122         return ndr_push_dom_sid(ndr, ndr_flags, sid);
00123 }

NTSTATUS ndr_pull_dom_sid28 ( struct ndr_pull ndr,
int  ndr_flags,
struct dom_sid sid 
)

sid.c128 行で定義されています。

参照先 ndr_pull::current_mem_ctxndr_pull::datandr_pull::data_sizendr_pull::flagsndr_pull_advance()ndr_pull_dom_sid()ndr_pull::offsetstatus.

00129 {
00130         NTSTATUS status;
00131         struct ndr_pull *subndr;
00132 
00133         if (!(ndr_flags & NDR_SCALARS)) {
00134                 return NT_STATUS_OK;
00135         }
00136 
00137         subndr = talloc_zero(ndr, struct ndr_pull);
00138         NT_STATUS_HAVE_NO_MEMORY(subndr);
00139         subndr->flags           = ndr->flags;
00140         subndr->current_mem_ctx = ndr->current_mem_ctx;
00141 
00142         subndr->data            = ndr->data + ndr->offset;
00143         subndr->data_size       = 28;
00144         subndr->offset          = 0;
00145 
00146         NDR_CHECK(ndr_pull_advance(ndr, 28));
00147 
00148         status = ndr_pull_dom_sid(subndr, ndr_flags, sid);
00149         if (!NT_STATUS_IS_OK(status)) {
00150                 /* handle a w2k bug which send random data in the buffer */
00151                 ZERO_STRUCTP(sid);
00152         }
00153 
00154         return NT_STATUS_OK;
00155 }

NTSTATUS ndr_push_dom_sid28 ( struct ndr_push ndr,
int  ndr_flags,
const struct dom_sid sid 
)

sid.c160 行で定義されています。

参照先 NDR_ERR_RANGEndr_push_dom_sid()ndr_push_zero()dom_sid::num_authsndr_push::offset.

00161 {
00162         uint32_t old_offset;
00163         uint32_t padding;
00164 
00165         if (!(ndr_flags & NDR_SCALARS)) {
00166                 return NT_STATUS_OK;
00167         }
00168 
00169         if (sid->num_auths > 5) {
00170                 return ndr_push_error(ndr, NDR_ERR_RANGE, 
00171                                       "dom_sid28 allows only upto 5 sub auth [%u]", 
00172                                       sid->num_auths);
00173         }
00174 
00175         old_offset = ndr->offset;
00176         NDR_CHECK(ndr_push_dom_sid(ndr, ndr_flags, sid));
00177 
00178         padding = 28 - (ndr->offset - old_offset);
00179 
00180         if (padding > 0) {
00181                 NDR_CHECK(ndr_push_zero(ndr, padding));
00182         }
00183 
00184         return NT_STATUS_OK;
00185 }


Sambaに対してSat Aug 29 21:23:46 2009に生成されました。  doxygen 1.4.7