[Sorry for the way-late response... was on vacation]

On Fri, Aug 19, 2005 at 02:16:53PM -0700, Ian Lance Taylor wrote:
> > The idea of letting gcc load a .so to do the checking also seems fine.
> > At least then the checking language is a standard one, not one we made
> > up.

I think this is a wonderfully good idea.

> Yes.  My main concerns would be
> 
> * It's obviously vastly more powerful than anything we actually need,
>   and using dlopen exposes the compiler to bugs in the implementation
>   of the format checker--slowness, random memory clobbering, etc.

I just don't see this as a problem.

> * The compiler is, in its own way, a system security component.  If
>   somebody were to put format checking into a system header file which
>   used a shared library, then substituting that shared library--
>   perhaps by just getting the compiler to pick up a different version
>   of it--becomes an avenue for a complex but subtle attack on the
>   system as a whole.

I see this as a problem.  OK, let's solve it.  The solution has two
parts:

  - Allow arbitrary shared libraries to be specified on the command
    line.  BFD can then build one before it compiles, and pass it as
    an argument to GCC.

  - Define a trusted directory to allow shared libraries to be loaded
    by the installed system compiler, via #pragma.

I think this has a lot more mileage in it than spending months debating
how to represent the format specifiers in source code.  Of course,
we'll need to create a C interface for doing this, which will take some
time to do right.  But we know how to do that!

-- 
Daniel Jacobowitz
CodeSourcery, LLC

Reply via email to