do-bounds-checking-in-psetvolumestatus-20010315

Previously it was possible to overflow the variables used to construct a
SetVolumeStatus call
This commit is contained in:
Nickolai Zeldovich 2001-03-16 03:35:07 +00:00 committed by Derrick Brashear
parent 4b85432743
commit 54b7292a44

View File

@ -1502,10 +1502,16 @@ static PSetVolumeStatus(avc, afun, areq, ain, aout, ainSize, aoutSize)
cp = ain;
bcopy(cp, (char *)&volstat, sizeof(AFSFetchVolumeStatus));
cp += sizeof(AFSFetchVolumeStatus);
if (strlen(cp) >= sizeof(volName))
return E2BIG;
strcpy(volName, cp);
cp += strlen(volName)+1;
if (strlen(cp) >= sizeof(offLineMsg))
return E2BIG;
strcpy(offLineMsg, cp);
cp += strlen(offLineMsg)+1;
if (strlen(cp) >= sizeof(motd))
return E2BIG;
strcpy(motd, cp);
storeStat.Mask = 0;
if (volstat.MinQuota != -1) {