(dump): handle errors
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14518 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -44,7 +44,7 @@ dump(struct dump_options *opt, int argc, char **argv)
|
|||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
HDB *db;
|
HDB *db = NULL;
|
||||||
|
|
||||||
if(!local_flag) {
|
if(!local_flag) {
|
||||||
krb5_warnx(context, "dump is only available in local (-l) mode");
|
krb5_warnx(context, "dump is only available in local (-l) mode");
|
||||||
@@ -58,18 +58,22 @@ dump(struct dump_options *opt, int argc, char **argv)
|
|||||||
else
|
else
|
||||||
f = fopen(argv[0], "w");
|
f = fopen(argv[0], "w");
|
||||||
|
|
||||||
if(f == NULL)
|
if(f == NULL) {
|
||||||
krb5_warn(context, errno, "%s", argv[0]);
|
krb5_warn(context, errno, "open: %s", argv[0]);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
ret = db->hdb_open(context, db, O_RDONLY, 0600);
|
ret = db->hdb_open(context, db, O_RDONLY, 0600);
|
||||||
if(ret) {
|
if(ret) {
|
||||||
krb5_warn(context, ret, "hdb_open");
|
krb5_warn(context, ret, "hdb_open");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
hdb_foreach(context, db, opt->decrypt_flag ? HDB_F_DECRYPT : 0, hdb_print_entry, f);
|
hdb_foreach(context, db, opt->decrypt_flag ? HDB_F_DECRYPT : 0,
|
||||||
|
hdb_print_entry, f);
|
||||||
|
|
||||||
db->hdb_close(context, db);
|
db->hdb_close(context, db);
|
||||||
out:
|
out:
|
||||||
if(f != stdout)
|
if(f && f != stdout)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user