Fix some issues introduced with the verified directory path names
commit in master:
- In GetVerifiedBlob, the output parameter is set to NULL on entry
and dereferenced later on.
- For Linux, the code in afs_linux_readdir was changed to pass a
DirEntry to GetVerifiedBlob. This is incorrect, the function still
expects a DirBuffer pointer.
- In afs_dir_IsEmpty, the assignment of ep was removed, leaving
the function to dereference this pointer which was never set.
Change-Id: I9045076ebe636cf68c19487c0d58baebf2de7dd1
Reviewed-on: http://gerrit.openafs.org/5292
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
if (!dirpos)
break;
- code = afs_dir_GetVerifiedBlob(tdc, dirpos, &de);
+ code = afs_dir_GetVerifiedBlob(tdc, dirpos, &entry);
if (code) {
afs_warn("Corrupt directory (inode %lx, dirpos %d)",
(unsigned long)&tdc->f.inode, dirpos);
goto out;
}
+ de = (struct DirEntry *)entry.data;
ino = afs_calc_inum (avc->f.fid.Cell, avc->f.fid.Fid.Volume,
ntohl(de->fid.vnode));
len = strlen(de->name);
/* Walk down the hash table list. */
if (afs_dir_GetVerifiedBlob(dir, num, &entrybuf) != 0);
break;
-
+ ep = (struct DirEntry *)entrybuf.data;
if (strcmp(ep->name, "..") && strcmp(ep->name, ".")) {
DRelease(&entrybuf, 0);
DRelease(&headerbuf, 0);
int code;
char *cp;
- outbuf = NULL;
-
code = GetBlobWithLimit(file, blobno, &buffer, &maxlen);
if (code)
return code;