• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source4/heimdal/lib/krb5/

Lines Matching refs:pac

51     struct PACTYPE *pac;
84 krb5_pac *pac)
121 p->pac = calloc(1,
122 sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * (tmp - 1)));
123 if (p->pac == NULL) {
129 p->pac->numbuffers = tmp;
130 p->pac->version = tmp2;
132 header_end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
138 for (i = 0; i < p->pac->numbuffers; i++) {
139 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].type), out);
140 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].buffersize), out);
141 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_lo), out);
142 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_hi), out);
145 if (p->pac->buffers[i].offset_lo & (PAC_ALIGNMENT - 1)) {
151 if (p->pac->buffers[i].offset_hi) {
157 if (p->pac->buffers[i].offset_lo > len) {
163 if (p->pac->buffers[i].offset_lo < header_end) {
167 (unsigned long)p->pac->buffers[i].offset_lo,
171 if (p->pac->buffers[i].buffersize > len - p->pac->buffers[i].offset_lo){
178 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) {
185 p->server_checksum = &p->pac->buffers[i];
186 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) {
193 p->privsvr_checksum = &p->pac->buffers[i];
194 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) {
201 p->logon_name = &p->pac->buffers[i];
211 *pac = p;
218 if (p->pac)
219 free(p->pac);
222 *pac = NULL;
228 krb5_pac_init(krb5_context context, krb5_pac *pac)
239 p->pac = calloc(1, sizeof(*p->pac));
240 if (p->pac == NULL) {
248 free (p->pac);
255 *pac = p;
268 len = p->pac->numbuffers;
270 ptr = realloc(p->pac,
271 sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * len));
276 p->pac = ptr;
279 p->pac->buffers[i].offset_lo += PAC_INFO_BUFFER_SIZE;
283 p->pac->buffers[len].type = type;
284 p->pac->buffers[len].buffersize = data->length;
285 p->pac->buffers[len].offset_lo = offset;
286 p->pac->buffers[len].offset_hi = 0;
307 header_end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
322 p->pac->numbuffers += 1;
328 * Get the PAC buffer of specific type from the pac.
331 * @param p the pac structure returned by krb5_pac_parse().
348 for (i = 0; i < p->pac->numbuffers; i++) {
349 const size_t len = p->pac->buffers[i].buffersize;
350 const size_t offset = p->pac->buffers[i].offset_lo;
352 if (p->pac->buffers[i].type != type)
379 *types = calloc(p->pac->numbuffers, sizeof(*types));
385 for (i = 0; i < p->pac->numbuffers; i++)
386 (*types)[i] = p->pac->buffers[i].type;
387 *len = p->pac->numbuffers;
397 krb5_pac_free(krb5_context context, krb5_pac pac)
399 krb5_data_free(&pac->data);
400 free(pac->pac);
401 free(pac);
498 krb5_set_error_message(context, EINVAL, "pac checksum wrong length");
711 * @param pac the pac structure returned by krb5_pac_parse().
725 const krb5_pac pac,
733 if (pac->server_checksum == NULL) {
737 if (pac->privsvr_checksum == NULL) {
741 if (pac->logon_name == NULL) {
747 pac->logon_name,
748 &pac->data,
761 ret = krb5_copy_data(context, &pac->data, &copy);
765 if (pac->server_checksum->buffersize < 4)
767 if (pac->privsvr_checksum->buffersize < 4)
770 memset((char *)copy->data + pac->server_checksum->offset_lo + 4,
772 pac->server_checksum->buffersize - 4);
774 memset((char *)copy->data + pac->privsvr_checksum->offset_lo + 4,
776 pac->privsvr_checksum->buffersize - 4);
779 pac->server_checksum,
780 &pac->data,
791 pac->privsvr_checksum,
792 &pac->data,
793 (char *)pac->data.data
794 + pac->server_checksum->offset_lo + 4,
795 pac->server_checksum->buffersize - 4,
891 ptr = realloc(p->pac, sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * (p->pac->numbuffers + num - 1)));
896 p->pac = ptr;
899 p->logon_name = &p->pac->buffers[p->pac->numbuffers++];
904 p->server_checksum = &p->pac->buffers[p->pac->numbuffers++];
909 p->privsvr_checksum = &p->pac->buffers[p->pac->numbuffers++];
944 CHECK(ret, krb5_store_uint32(sp, p->pac->numbuffers), out);
945 CHECK(ret, krb5_store_uint32(sp, p->pac->version), out);
947 end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
949 for (i = 0; i < p->pac->numbuffers; i++) {
956 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) {
961 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) {
966 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) {
973 len = p->pac->buffers[i].buffersize;
974 ptr = (char *)p->data.data + p->pac->buffers[i].offset_lo;
986 CHECK(ret, krb5_store_uint32(sp, p->pac->buffers[i].type), out);