Re: What is defensive consistency?

Bill Frantz <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <r02010500-1049-D6D90AA189AE11DC90A20030658F0F64@[192.168.1.5]>
[email protected] (David Wagner) on Friday, November 2, 2007 wrote:

>The part I find tricky is that the server can't know what capability
>was used to invoke it.  So what is the poor developer who has to write
>the server code supposed to do?

In KeyKOS, we used two patterns to handle these cases.

The first pattern was for simple objects, where different users shared a EQ
capability to the object. Here the programmer had to be very careful to not allow
input from the caller so corrupt the object. An example was the CLOCK
object <http://www.agorics.com/Library/KeyKos/Gnosis/132.html#clock>.

The other pattern was the factory pattern. When the object was first
invoked, a new instance was created from a factory call, it assumed that
it would only be used by one "client". Other instances would not be
effected by input-induce misbehavior in that instance. An example is the
"TYPE" object. (note that the manual reference to it from the index is
broken.) This object took as a parameter another object and attempted to
treat it as a "file" and display its contents on an output key. The
protocol for calling it, included a factory invocation to make a new
instance, which could die if the parameter object was ill-behaved,
without effecting other calls.

Cheers - Bill

---------------------------------------------------------------------------
Bill Frantz        |"We used to quip that "password" is the most common
408-356-8506       | password. Now it's 'password1.' Who said users haven't
www.periwinkle.com | learned anything about security?" -- Bruce Schneier
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.