Skip to content

Commit

Permalink
net/9p: insulate the client against an invalid error code sent by a 9…
Browse files Browse the repository at this point in the history
…p server

A looney tunes server sending an invalid error code (which is !IS_ERR_VALUE)
can result in a client oops. So fix it by adding a check and converting unknown
or invalid error codes to -ESERVERFAULT.

Signed-off-by: Abhishek Kulkarni <adkulkar@umail.iu.edu>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
  • Loading branch information
Abhishek Kulkarni authored and Eric Van Hensbergen committed Aug 17, 2009
1 parent 48559b4 commit 0aad37e
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 7 deletions.
7 changes: 1 addition & 6 deletions net/9p/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,14 +411,9 @@ static int p9_check_errors(struct p9_client *c, struct p9_req_t *req)
if (c->dotu)
err = -ecode;

if (!err) {
if (!err || !IS_ERR_VALUE(err))
err = p9_errstr2errno(ename, strlen(ename));

/* string match failed */
if (!err)
err = -ESERVERFAULT;
}

P9_DPRINTK(P9_DEBUG_9P, "<<< RERROR (%d) %s\n", -ecode, ename);

kfree(ename);
Expand Down
2 changes: 1 addition & 1 deletion net/9p/error.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ int p9_errstr2errno(char *errstr, int len)
errstr[len] = 0;
printk(KERN_ERR "%s: server reported unknown error %s\n",
__func__, errstr);
errno = 1;
errno = ESERVERFAULT;
}

return -errno;
Expand Down

0 comments on commit 0aad37e

Please sign in to comment.