* in the original KeyFile, so that we can continue to be compatible with
* utilities that directly modify that file.
*
- * All other keys are stored in the file KeyFileEx, which has the following
+ * All other keys are stored in the file KeyFileExt, which has the following
* format:
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | version number |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | number of keys |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Key data ...
* +-+-+-+-+-+-+-+
*
- * The version number is 1 at present. Version numbers higher than 1
- * indicate a keyfile that is not backwards compatible with this
- * specification.
+ * If the format ever needs to chanage incompatibly, a new file name
+ * will be used.
*
* Key data is a sequence of the following records (note that these are
* not word aligned - the next record begins where the previous one ends)
for(i=0; i<nkeys; i++) {
key = afsconf_typedKey_blank();
+ if (key == NULL)
+ goto fail;
key->type = afsconf_rxkad;
key->subType = 0;
afs_int32 reclen;
key = afsconf_typedKey_blank();
+ if (key == NULL)
+ goto fail;
/* The only data version we currently parse has a reclen of 16.
* Anything smaller indicates a corrupt key file. Anything more,
code = read(fd, key->key.val, reclen);
if (code != reclen) {
rx_opaque_freeContents(&key->key);
- free(key);
goto fail;
}
code = addMemoryKey(dir, key, 1);
typeEntry = opr_queue_Entry(typeCursor, struct keyTypeList, link);
for (opr_queue_Scan(&typeEntry->kvnoList, kvnoCursor)) {
kvnoEntry = opr_queue_Entry(kvnoCursor, struct kvnoList, link);
- for (opr_queue_Scan(&kvnoEntry->subTypeList, subCursor)) {
- subEntry = opr_queue_Entry(subCursor, struct subTypeList, link);
+ for (opr_queue_Scan(&kvnoEntry->subTypeList, subCursor))
count++;
- }
}
}
{
struct afsconf_typedKey *key;
- key = malloc(sizeof(struct afsconf_typedKey));
+ key = calloc(1, sizeof(struct afsconf_typedKey));
if (key == NULL)
return NULL;
- memset(key, 0, sizeof(struct afsconf_typedKey));
rx_atomic_set(&key->refcnt, 1);
return key;