better error strings for the keytab fetching functions
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22532 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -337,8 +337,9 @@ krb5_kt_get_entry(krb5_context context,
|
|||||||
|
|
||||||
ret = krb5_kt_start_seq_get (context, id, &cursor);
|
ret = krb5_kt_start_seq_get (context, id, &cursor);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
krb5_clear_error_string(context);
|
/* This is needed for krb5_verify_init_creds, but keep error
|
||||||
return KRB5_KT_NOTFOUND; /* XXX i.e. file not found */
|
* string from previous error for the human. */
|
||||||
|
return KRB5_KT_NOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
entry->vno = 0;
|
entry->vno = 0;
|
||||||
|
@@ -334,8 +334,8 @@ fkt_start_seq_get_int(krb5_context context,
|
|||||||
c->fd = open (d->filename, flags);
|
c->fd = open (d->filename, flags);
|
||||||
if (c->fd < 0) {
|
if (c->fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
krb5_set_error_string(context, "%s: %s", d->filename,
|
krb5_set_error_string(context, "keytab %s open failed: %s",
|
||||||
strerror(ret));
|
d->filename, strerror(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = _krb5_xlock(context, c->fd, exclusive, d->filename);
|
ret = _krb5_xlock(context, c->fd, exclusive, d->filename);
|
||||||
|
@@ -197,8 +197,8 @@ akf_start_seq_get(krb5_context context,
|
|||||||
c->fd = open (d->filename, O_RDONLY|O_BINARY, 0600);
|
c->fd = open (d->filename, O_RDONLY|O_BINARY, 0600);
|
||||||
if (c->fd < 0) {
|
if (c->fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
krb5_set_error_string(context, "open(%s): %s", d->filename,
|
krb5_set_error_string(context, "keytab afs keyfil open %s failed: %s",
|
||||||
strerror(ret));
|
d->filename, strerror(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -134,14 +134,15 @@ krb4_kt_start_seq_get_int (krb5_context context,
|
|||||||
if (c->fd < 0) {
|
if (c->fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
free (ed);
|
free (ed);
|
||||||
krb5_set_error_string(context, "open(%s): %s", d->filename,
|
krb5_set_error_string(context, "keytab krb5 open %s failed: %s",
|
||||||
strerror(ret));
|
d->filename, strerror(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
c->sp = krb5_storage_from_fd(c->fd);
|
c->sp = krb5_storage_from_fd(c->fd);
|
||||||
if(c->sp == NULL) {
|
if(c->sp == NULL) {
|
||||||
close(c->fd);
|
close(c->fd);
|
||||||
free(ed);
|
free(ed);
|
||||||
|
krb5_set_error_string(context, "malloc: out of memory");
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
krb5_storage_set_eof_code(c->sp, KRB5_KT_END);
|
krb5_storage_set_eof_code(c->sp, KRB5_KT_END);
|
||||||
@@ -369,8 +370,11 @@ krb4_kt_remove_entry(krb5_context context,
|
|||||||
if(fd < 0) {
|
if(fd < 0) {
|
||||||
memset(data.data, 0, data.length);
|
memset(data.data, 0, data.length);
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
if(errno == EACCES || errno == EROFS)
|
if(errno == EACCES || errno == EROFS) {
|
||||||
|
krb5_set_error_string(context, "failed to open %s for writing",
|
||||||
|
d->filename);
|
||||||
return KRB5_KT_NOWRITE;
|
return KRB5_KT_NOWRITE;
|
||||||
|
}
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,14 +382,16 @@ krb4_kt_remove_entry(krb5_context context,
|
|||||||
memset(data.data, 0, data.length);
|
memset(data.data, 0, data.length);
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
close(fd);
|
close(fd);
|
||||||
krb5_set_error_string(context, "failed writing to \"%s\"", d->filename);
|
krb5_set_error_string(context, "failed writing to file %s",
|
||||||
|
d->filename);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
memset(data.data, 0, data.length);
|
memset(data.data, 0, data.length);
|
||||||
if(fstat(fd, &st) < 0) {
|
if(fstat(fd, &st) < 0) {
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
close(fd);
|
close(fd);
|
||||||
krb5_set_error_string(context, "failed getting size of \"%s\"", d->filename);
|
krb5_set_error_string(context, "failed getting size of file %s",
|
||||||
|
d->filename);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
st.st_size -= data.length;
|
st.st_size -= data.length;
|
||||||
@@ -396,7 +402,8 @@ krb4_kt_remove_entry(krb5_context context,
|
|||||||
if(n <= 0) {
|
if(n <= 0) {
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
close(fd);
|
close(fd);
|
||||||
krb5_set_error_string(context, "failed writing to \"%s\"", d->filename);
|
krb5_set_error_string(context, "failed writing to file %s",
|
||||||
|
d->filename);
|
||||||
return errno;
|
return errno;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -405,17 +412,20 @@ krb4_kt_remove_entry(krb5_context context,
|
|||||||
if(ftruncate(fd, data.length) < 0) {
|
if(ftruncate(fd, data.length) < 0) {
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
close(fd);
|
close(fd);
|
||||||
krb5_set_error_string(context, "failed truncating \"%s\"", d->filename);
|
krb5_set_error_string(context, "failed truncating file %s",
|
||||||
|
d->filename);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
if(close(fd) < 0) {
|
if(close(fd) < 0) {
|
||||||
krb5_set_error_string(context, "error closing \"%s\"", d->filename);
|
krb5_set_error_string(context, "error closing %s",
|
||||||
|
d->filename);
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
krb5_storage_free(sp);
|
krb5_storage_free(sp);
|
||||||
|
krb5_set_error_string(context, "Keytab entry not found");
|
||||||
return KRB5_KT_NOTFOUND;
|
return KRB5_KT_NOTFOUND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user