102
const char* KRB5_LIB_FUNCTION
102
KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
103
103
krb5_rc_default_name(krb5_context context)
105
105
return "FILE:/var/run/default_rcache";
108
const char* KRB5_LIB_FUNCTION
108
KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
109
109
krb5_rc_default_type(krb5_context context)
114
krb5_error_code KRB5_LIB_FUNCTION
114
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
115
115
krb5_rc_default(krb5_context context,
123
123
unsigned char data[16];
126
krb5_error_code KRB5_LIB_FUNCTION
126
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
127
127
krb5_rc_initialize(krb5_context context,
129
129
krb5_deltat auth_lifespan)
137
krb5_set_error_message(context, ret, "open(%s): %s", id->name,
138
rk_strerror_r(ret, buf, sizeof(buf));
139
krb5_set_error_message(context, ret, "open(%s): %s", id->name, buf);
141
142
tmp.stamp = auth_lifespan;
147
krb5_error_code KRB5_LIB_FUNCTION
148
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
148
149
krb5_rc_recover(krb5_context context,
154
krb5_error_code KRB5_LIB_FUNCTION
155
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
155
156
krb5_rc_destroy(krb5_context context,
160
161
if(remove(id->name) < 0) {
162
krb5_set_error_message(context, ret, "remove(%s): %s", id->name,
164
rk_strerror_r(ret, buf, sizeof(buf));
165
krb5_set_error_message(context, ret, "remove(%s): %s", id->name, buf);
166
168
return krb5_rc_close(context, id);
169
krb5_error_code KRB5_LIB_FUNCTION
171
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
170
172
krb5_rc_close(krb5_context context,
179
181
checksum_authenticator(Authenticator *auth, void *data)
185
MD5_Update (&md5, auth->crealm, strlen(auth->crealm));
183
EVP_MD_CTX *m = EVP_MD_CTX_create();
186
EVP_DigestInit_ex(m, EVP_md5(), NULL);
188
EVP_DigestUpdate(m, auth->crealm, strlen(auth->crealm));
186
189
for(i = 0; i < auth->cname.name_string.len; i++)
187
MD5_Update(&md5, auth->cname.name_string.val[i],
190
EVP_DigestUpdate(m, auth->cname.name_string.val[i],
188
191
strlen(auth->cname.name_string.val[i]));
189
MD5_Update (&md5, &auth->ctime, sizeof(auth->ctime));
190
MD5_Update (&md5, &auth->cusec, sizeof(auth->cusec));
191
MD5_Final (data, &md5);
192
EVP_DigestUpdate(m, &auth->ctime, sizeof(auth->ctime));
193
EVP_DigestUpdate(m, &auth->cusec, sizeof(auth->cusec));
195
EVP_DigestFinal_ex(m, data, NULL);
196
EVP_MD_CTX_destroy(m);
194
krb5_error_code KRB5_LIB_FUNCTION
199
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
195
200
krb5_rc_store(krb5_context context,
197
202
krb5_donot_replay *rep)
205
210
checksum_authenticator(rep, ent.data);
206
211
f = fopen(id->name, "r");
209
krb5_set_error_message(context, ret, "open(%s): %s", id->name,
215
rk_strerror_r(ret, buf, sizeof(buf));
216
krb5_set_error_message(context, ret, "open(%s): %s", id->name, buf);
213
219
rk_cloexec_file(f);
235
rk_strerror_r(ret, buf, sizeof(buf));
228
236
krb5_set_error_message(context, ret, "%s: %s",
229
id->name, strerror(ret));
233
241
f = fopen(id->name, "a");
244
rk_strerror_r(errno, buf, sizeof(buf));
235
245
krb5_set_error_message(context, KRB5_RC_IO_UNKNOWN,
236
"open(%s): %s", id->name,
246
"open(%s): %s", id->name, buf);
238
247
return KRB5_RC_IO_UNKNOWN;
240
249
fwrite(&ent, 1, sizeof(ent), f);
245
krb5_error_code KRB5_LIB_FUNCTION
254
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
246
255
krb5_rc_expunge(krb5_context context,
252
krb5_error_code KRB5_LIB_FUNCTION
261
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
253
262
krb5_rc_get_lifespan(krb5_context context,
255
264
krb5_deltat *auth_lifespan)
267
276
return KRB5_RC_IO_UNKNOWN;
270
const char* KRB5_LIB_FUNCTION
279
KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
271
280
krb5_rc_get_name(krb5_context context,
277
const char* KRB5_LIB_FUNCTION
286
KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
278
287
krb5_rc_get_type(krb5_context context,
284
krb5_error_code KRB5_LIB_FUNCTION
293
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
285
294
krb5_get_server_rcache(krb5_context context,
286
295
const krb5_data *piece,
300
309
strvisx(tmp, piece->data, piece->length, VIS_WHITE | VIS_OCTAL);
301
310
#ifdef HAVE_GETEUID
302
asprintf(&name, "FILE:rc_%s_%u", tmp, (unsigned)geteuid());
311
ret = asprintf(&name, "FILE:rc_%s_%u", tmp, (unsigned)geteuid());
304
asprintf(&name, "FILE:rc_%s", tmp);
313
ret = asprintf(&name, "FILE:rc_%s", tmp);
316
if(ret < 0 || name == NULL) {
308
317
krb5_set_error_message(context, ENOMEM,
309
318
N_("malloc: out of memory", ""));