mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 06:50:12 +00:00
linux-avoid-returning-invalid-pointers-on-error-20090402
LICENSE IPL10 FIXES 124580 avoid returning a positive error as it will look like a pointer.
This commit is contained in:
parent
9a0b3da255
commit
160619505d
@ -50,6 +50,10 @@ RCSID
|
||||
#define pageoff(pp) pp->offset
|
||||
#endif
|
||||
|
||||
#ifndef MAX_ERRNO
|
||||
#define MAX_ERRNO 1000L
|
||||
#endif
|
||||
|
||||
#if defined(AFS_LINUX26_ENV)
|
||||
#define LockPage(pp) lock_page(pp)
|
||||
#define UnlockPage(pp) unlock_page(pp)
|
||||
@ -1184,8 +1188,10 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp)
|
||||
if (code == ENOENT)
|
||||
return ERR_PTR(0);
|
||||
#endif
|
||||
else
|
||||
return ERR_PTR(-code);
|
||||
else if ((code >= 0) && (code <= MAX_ERRNO))
|
||||
return ERR_PTR(-code);
|
||||
else
|
||||
return ERR_PTR(-EIO);
|
||||
#else
|
||||
if (code == ENOENT)
|
||||
code = 0;
|
||||
@ -1525,7 +1531,10 @@ afs_linux_follow_link(struct dentry *dp, struct dentry *basep,
|
||||
|
||||
if (code < 0) {
|
||||
dput(basep);
|
||||
res = ERR_PTR(code);
|
||||
if (code < -MAX_ERRNO)
|
||||
res = ERR_PTR(-EIO);
|
||||
else
|
||||
res = ERR_PTR(code);
|
||||
} else {
|
||||
name[code] = '\0';
|
||||
res = lookup_dentry(name, basep, follow);
|
||||
|
@ -1182,7 +1182,7 @@ afs_DoBulkStat(struct vcache *adp, long dirCookie, struct vrequest *areqp)
|
||||
afs_PutVolume(volp, READ_LOCK);
|
||||
|
||||
/* If we did the InlineBulk RPC pull out the return code */
|
||||
if (inlinebulk) {
|
||||
if (inlinebulk && code == 0) {
|
||||
if ((&statsp[0])->errorCode) {
|
||||
afs_Analyze(tcp, (&statsp[0])->errorCode, &adp->f.fid, areqp,
|
||||
AFS_STATS_FS_RPCIDX_BULKSTATUS, SHARED_LOCK, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user