Lines Matching defs:pac

51     struct PACTYPE *pac;
121 krb5_pac *pac)
156 p->pac = calloc(1,
157 sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * (tmp - 1)));
158 if (p->pac == NULL) {
163 p->pac->numbuffers = tmp;
164 p->pac->version = tmp2;
166 header_end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
172 for (i = 0; i < p->pac->numbuffers; i++) {
173 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].type), out);
174 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].buffersize), out);
175 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_lo), out);
176 CHECK(ret, krb5_ret_uint32(sp, &p->pac->buffers[i].offset_hi), out);
179 if (p->pac->buffers[i].offset_lo & (PAC_ALIGNMENT - 1)) {
185 if (p->pac->buffers[i].offset_hi) {
191 if (p->pac->buffers[i].offset_lo > len) {
197 if (p->pac->buffers[i].offset_lo < header_end) {
201 (unsigned long)p->pac->buffers[i].offset_lo,
205 if (p->pac->buffers[i].buffersize > len - p->pac->buffers[i].offset_lo){
212 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) {
219 p->server_checksum = &p->pac->buffers[i];
220 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) {
227 p->privsvr_checksum = &p->pac->buffers[i];
228 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) {
235 p->logon_name = &p->pac->buffers[i];
245 *pac = p;
252 if (p->pac)
253 free(p->pac);
256 *pac = NULL;
262 krb5_pac_init(krb5_context context, krb5_pac *pac)
272 p->pac = calloc(1, sizeof(*p->pac));
273 if (p->pac == NULL) {
280 free (p->pac);
285 *pac = p;
298 len = p->pac->numbuffers;
300 ptr = realloc(p->pac,
301 sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * len));
305 p->pac = ptr;
308 p->pac->buffers[i].offset_lo += PAC_INFO_BUFFER_SIZE;
312 p->pac->buffers[len].type = type;
313 p->pac->buffers[len].buffersize = data->length;
314 p->pac->buffers[len].offset_lo = offset;
315 p->pac->buffers[len].offset_hi = 0;
336 header_end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
351 p->pac->numbuffers += 1;
357 * Get the PAC buffer of specific type from the pac.
360 * @param p the pac structure returned by krb5_pac_parse().
377 for (i = 0; i < p->pac->numbuffers; i++) {
378 const size_t len = p->pac->buffers[i].buffersize;
379 const size_t offset = p->pac->buffers[i].offset_lo;
381 if (p->pac->buffers[i].type != type)
408 *types = calloc(p->pac->numbuffers, sizeof(*types));
413 for (i = 0; i < p->pac->numbuffers; i++)
414 (*types)[i] = p->pac->buffers[i].type;
415 *len = p->pac->numbuffers;
425 krb5_pac_free(krb5_context context, krb5_pac pac)
427 krb5_data_free(&pac->data);
428 free(pac->pac);
429 free(pac);
564 krb5_set_error_message(context, EINVAL, "pac checksum wrong length");
802 * @param pac the pac structure returned by krb5_pac_parse().
816 const krb5_pac pac,
824 if (pac->server_checksum == NULL) {
828 if (pac->privsvr_checksum == NULL) {
832 if (pac->logon_name == NULL) {
838 pac->logon_name,
839 &pac->data,
852 ret = krb5_copy_data(context, &pac->data, &copy);
856 if (pac->server_checksum->buffersize < 4)
858 if (pac->privsvr_checksum->buffersize < 4)
861 memset((char *)copy->data + pac->server_checksum->offset_lo + 4,
863 pac->server_checksum->buffersize - 4);
865 memset((char *)copy->data + pac->privsvr_checksum->offset_lo + 4,
867 pac->privsvr_checksum->buffersize - 4);
870 pac->server_checksum,
871 &pac->data,
882 pac->privsvr_checksum,
883 &pac->data,
884 (char *)pac->data.data
885 + pac->server_checksum->offset_lo + 4,
886 pac->server_checksum->buffersize - 4,
982 ptr = realloc(p->pac, sizeof(*p->pac) + (sizeof(p->pac->buffers[0]) * (p->pac->numbuffers + num - 1)));
986 p->pac = ptr;
989 p->logon_name = &p->pac->buffers[p->pac->numbuffers++];
994 p->server_checksum = &p->pac->buffers[p->pac->numbuffers++];
999 p->privsvr_checksum = &p->pac->buffers[p->pac->numbuffers++];
1032 CHECK(ret, krb5_store_uint32(sp, p->pac->numbuffers), out);
1033 CHECK(ret, krb5_store_uint32(sp, p->pac->version), out);
1035 end = PACTYPE_SIZE + (PAC_INFO_BUFFER_SIZE * p->pac->numbuffers);
1037 for (i = 0; i < p->pac->numbuffers; i++) {
1044 if (p->pac->buffers[i].type == PAC_SERVER_CHECKSUM) {
1049 } else if (p->pac->buffers[i].type == PAC_PRIVSVR_CHECKSUM) {
1054 } else if (p->pac->buffers[i].type == PAC_LOGON_NAME) {
1061 len = p->pac->buffers[i].buffersize;
1062 ptr = (char *)p->data.data + p->pac->buffers[i].offset_lo;
1073 CHECK(ret, krb5_store_uint32(sp, p->pac->buffers[i].type), out);