dotLen = strlen(c->cellName) + 2;
dotCell = afs_osi_Alloc(dotLen);
osi_Assert(dotCell != NULL);
- strcpy(dotCell, ".");
- afs_strcat(dotCell, c->cellName);
+ osi_Assert(snprintf(dotCell, dotLen, ".%s", c->cellName) < dotLen);
afs_dynroot_computeDirEnt(c->cellName, &curPage, &curChunk);
afs_dynroot_computeDirEnt(dotCell, &curPage, &curChunk);
dotLen = strlen(ca->alias) + 2;
dotCell = afs_osi_Alloc(dotLen);
osi_Assert(dotCell != NULL);
- strcpy(dotCell, ".");
- afs_strcat(dotCell, ca->alias);
+ osi_Assert(snprintf(dotCell, dotLen, ".%s", ca->alias) < dotLen);
afs_dynroot_computeDirEnt(ca->alias, &curPage, &curChunk);
afs_dynroot_computeDirEnt(dotCell, &curPage, &curChunk);
dotLen = strlen(c->cellName) + 2;
dotCell = afs_osi_Alloc(dotLen);
osi_Assert(dotCell != NULL);
- strcpy(dotCell, ".");
- afs_strcat(dotCell, c->cellName);
+ osi_Assert(snprintf(dotCell, dotLen, ".%s", c->cellName) < dotLen);
afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, c->cellName,
VNUM_FROM_CIDX_RW(cellidx, 0));
afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, dotCell,
dotLen = strlen(ca->alias) + 2;
dotCell = afs_osi_Alloc(dotLen);
osi_Assert(dotCell != NULL);
- strcpy(dotCell, ".");
- afs_strcat(dotCell, ca->alias);
+ osi_Assert(snprintf(dotCell, dotLen, ".%s", ca->alias) < dotLen);
afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, ca->alias,
VNUM_FROM_CAIDX_RW(aliasidx, 0));
afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, dotCell,
linklen = strlen(ts->target);
avc->linkData = afs_osi_Alloc(linklen + 1);
osi_Assert(avc->linkData != NULL);
- strcpy(avc->linkData, ts->target);
+ osi_Assert(strlcpy(avc->linkData, ts->target, linklen + 1) <
+ linklen + 1);
status->Length = linklen;
status->UnixModeBits = 0755;
linklen = 7;
} else {
int namelen = strlen(realName);
+ char *prefix = rw ? "." : "";
linklen = rw + namelen;
avc->linkData = afs_osi_Alloc(linklen + 1);
osi_Assert(avc->linkData != NULL);
- strcpy(avc->linkData, rw ? "." : "");
- afs_strcat(avc->linkData, realName);
+ osi_Assert(snprintf(avc->linkData, linklen + 1, "%s%s", prefix,
+ realName) < linklen + 1);
}
status->UnixModeBits = 0755;
linklen = 2 + namelen + strlen(bp);
avc->linkData = afs_osi_Alloc(linklen + 1);
osi_Assert(avc->linkData != NULL);
- strcpy(avc->linkData, "%");
- afs_strcat(avc->linkData, c->cellName);
- afs_strcat(avc->linkData, ":");
- afs_strcat(avc->linkData, bp);
+ osi_Assert(snprintf(avc->linkData, linklen + 1, "%%%s:%s",
+ c->cellName, bp) < linklen + 1);
status->UnixModeBits = 0644;
status->ParentVnode = AFS_DYNROOT_MOUNT_VNODE;
afs_PutCell(c, READ_LOCK);
} else {
+ char *prefix = rw ? "%" : "#";
+
c = afs_GetCellByIndex(cellidx, READ_LOCK);
if (!c) {
afs_warn("dynroot vnode inconsistency, can't find cell %d\n",
linklen = 1 + namelen + 10;
avc->linkData = afs_osi_Alloc(linklen + 1);
osi_Assert(avc->linkData != NULL);
- strcpy(avc->linkData, rw ? "%" : "#");
- afs_strcat(avc->linkData, c->cellName);
- afs_strcat(avc->linkData, ":root.cell");
+ osi_Assert(snprintf(avc->linkData, linklen + 1, "%s%s:root.cell",
+ prefix, c->cellName) < linklen + 1);
status->UnixModeBits = 0644;
afs_PutCell(c, READ_LOCK);
char *aname, char *atargetName)
{
struct afs_dynSymlink *tps;
+ size_t len;
if (afs_cr_uid(acred))
return EPERM;
osi_Assert(tps != NULL);
tps->index = afs_dynSymlinkIndex++;
tps->next = afs_dynSymlinkBase;
- tps->name = afs_osi_Alloc(strlen(aname) + 1);
+ len = strlen(aname) + 1;
+ tps->name = afs_osi_Alloc(len);
osi_Assert(tps->name != NULL);
- strcpy(tps->name, aname);
- tps->target = afs_osi_Alloc(strlen(atargetName) + 1);
+ osi_Assert(strlcpy(tps->name, aname, len) < len);
+ len = strlen(atargetName) + 1;
+ tps->target = afs_osi_Alloc(len);
osi_Assert(tps->target != NULL);
- strcpy(tps->target, atargetName);
+ osi_Assert(strlcpy(tps->target, atargetName, len) < len);
afs_dynSymlinkBase = tps;
ReleaseWriteLock(&afs_dynSymlinkLock);