Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Nov 2002 10:32:28 +0100
From:      Olivier Houchard <cognet@ci0.org>
To:        freebsd-audit@FreeBSD.org
Subject:   do_dup patch
Message-ID:  <20021125093228.GA10213@ci0.org>

next in thread | raw e-mail | index | archive | help

--Nq2Wo0NMKNjxTN9z
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi all,

This patch makes the "new" and "old" do_dup arguments unsigned int instead of 
int. I can't see any reason they would have to be int, and right now a call to
dup or dup2 with an invalid negative fd, such as dup(-999999); will panic a
-CURRENT box (the problem doesn't exist on -STABLE because the file descriptor
validity is checked in dup() and dup2()).
Is there anything wrong with committing this ?

Any comments are welcome.

Olivier

--Nq2Wo0NMKNjxTN9z
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="kern_descrip.c.diff"

Index: kern_descrip.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/kern_descrip.c,v
retrieving revision 1.168
diff -u -p -r1.168 kern_descrip.c
--- kern_descrip.c	27 Oct 2002 18:07:41 -0000	1.168
+++ kern_descrip.c	24 Nov 2002 19:52:55 -0000
@@ -101,7 +101,7 @@ static struct cdevsw fildesc_cdevsw = {
 /* How to treat 'new' parameter when allocating a fd for do_dup(). */
 enum dup_type { DUP_VARIABLE, DUP_FIXED };
 
-static int do_dup(struct thread *td, enum dup_type type, int old, int new,
+static int do_dup(struct thread *td, enum dup_type type, u_int old, u_int new,
     register_t *retval);
 static int badfo_readwrite(struct file *fp, struct uio *uio,
     struct ucred *active_cred, int flags, struct thread *td);
@@ -171,8 +171,7 @@ dup2(td, uap)
 	struct dup2_args *uap;
 {
 
-	return (do_dup(td, DUP_FIXED, (int)uap->from, (int)uap->to,
-		    td->td_retval));
+	return (do_dup(td, DUP_FIXED, uap->from, uap->to, td->td_retval));
 }
 
 /*
@@ -193,7 +192,7 @@ dup(td, uap)
 	struct dup_args *uap;
 {
 
-	return (do_dup(td, DUP_VARIABLE, (int)uap->fd, 0, td->td_retval));
+	return (do_dup(td, DUP_VARIABLE, uap->fd, 0, td->td_retval));
 }
 
 /*
@@ -452,7 +451,7 @@ done2:
 static int
 do_dup(td, type, old, new, retval)
 	enum dup_type type;
-	int old, new;
+	u_int old, new;
 	register_t *retval;
 	struct thread *td;
 {

--Nq2Wo0NMKNjxTN9z--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021125093228.GA10213>