static afs_int32
AddToReturnList(struct returnList *list, dbadr a, afs_int32 *to_skipP)
{
- char *tmp;
+ dbadr *tmp;
afs_int32 size;
if (a == 0)
}
if (!tmp)
return BUDB_NOMEM;
- list->elements = (dbadr *) tmp;
+ list->elements = tmp;
list->allocSize = size;
}
struct budb_dumpEntry *dump = (struct budb_dumpEntry *)rock;
struct dump d, ad;
+ memset(dump, 0, sizeof(*dump));
if (dbread(ut, da, &d, sizeof(d)))
return BUDB_IO;
dump->id = ntohl(d.id);
/* Allocate space for the return values if needed and zero it */
if (eList->budb_dumpList_val == 0) {
- eList->budb_dumpList_val = calloc(to_return, e_size);
- if (!eList->budb_dumpList_val)
- return (BUDB_NOMEM);
+ if (to_return > 0) {
+ eList->budb_dumpList_val = calloc(to_return, e_size);
+ if (!eList->budb_dumpList_val)
+ return (BUDB_NOMEM);
+ } else
+ eList->budb_dumpList_val = NULL;
} else {
memset(eList->budb_dumpList_val, 0, e_size * to_return);
}
dump->created = dump->id;
d.created = htonl(dump->created);
- principal = d.dumper;
+ d.dumper = principal;
tapeSet_hton(&dump->tapes, &d.tapes);
d.flags = htonl(dump->flags | BUDB_DUMP_INPROGRESS);
count * sizeof(afs_int32));
}
if (!dumps->budb_dumpsList_val
- || !dumps->budb_dumpsList_val)
+ || !flags->budb_dumpsList_val)
ABORT(BUDB_NOMEM);
}
finished:
/* return the dump found */
- FillDumpEntry(ut, retdbaddr, dumpentry);
+ eval = FillDumpEntry(ut, retdbaddr, dumpentry);
+ if (eval)
+ ABORT(eval);
code = ubik_EndTrans(ut);
return (code);
if (!callPermitted(call))
return BUDB_NOTPERMITTED;
- asprintf(&path, "%s/%s", gettmpdir(), filename);
- if (!path)
+ length = asprintf(&path, "%s/%s", gettmpdir(), filename);
+ if (length < 0 || !path)
return (BUDB_INTERNALERROR);
dumpfid = fopen(path, "w");