Re: copy_from_user() fixu

Richard Gooch (rgooch@atnf.csiro.au)
Tue, 25 Aug 1998 17:37:39 +1000


H. Peter Anvin writes:
> >
> > Well, being serious here, I have a library that is bug-free, but I
> > can't depend on application writers to sustain my level of
> > perfection. So, so help these lesser beings, I trap EFAULT in my
> > library and yield a more meaningful diagnostic than a mere EFAULT or
> > SEGV.
>
> Now you *really* convinced me that you're crazy.

Why not insult me further while you're at it?

> Once again: if you're relying on EFAULT rather than SIGSEGV, your code
> is broken, as you're relying on details of the libc/kernel interface.
> I would argue that *IS* a bug in your "bug-free" library.

I'm relying on what I've seen written in man pages for all varieties
of Unix I've had access to.

This abstract libc/kernel interface you refer to is an abstraction
you've invented. It's not Unix practice. Unix practice is to return
EFAULT on system calls. System calls are open(2), read(2), write(2)
and similar.

> If you want to trap errors, you either have to sanitize the input, or
> trap SIGSEGV.

I can't sanitise the input: I don't know what pointer the application
will pass. Trapping SEGV is a performance bugger: I have to install a
signal handler before every pseudo-syscall and restore it afterwards
(my library can't steal signals).

Regards,

Richard....

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html