On 12 April 2011 04:31, Ken Wesson <kwess...@gmail.com> wrote:
> There's a difference between the program parsing the same *object*
> multiple times, and the program's own source code containing
> duplication!

But there isn't any duplication:

(defn present? [x]
  (not (string/blank? x)))

(defn- parse-int [x]
  (try (-?> x Integer/parseInt)
       (catch NumberFormatException _ nil)))

(defn integer-string? [x]
  (boolean (parse-int x)))

(defn over [n]
  (fn [x] (-?> (parse-int x) (> n))))

Unless you're asserting that calling parse-int twice is code duplication?

> Actually, nil is returned. And you're cheating. Your "validate"
> function is presumably as complex. The same information ends up in its
> docstring, or distributed among present?, email-address?, and the
> like.

But as a developer who is using the API, why should I care what
validations the "validate-user" applies, so long as those validations
are correct?

We seem to have different ideas about what complexity is at this
point. My assertion is that the internal complexity of a function does
not matter, but the complexity of its return values and arguments
does.

If we disagree on that fundamental point, we probably should just
agree to disagree.

> And any function that validates range-limited integer inputs ends up
> checking the same four things.

Yes, but not necessarily in a divisible fashion.

> I was not. I only claimed that forgetting anything *could* cause a
> security risk, depending on the system.

Looks like I misinterpreted you, then.

>>> But, but, but. You made a universal statement that I've proven was
>>> wrong. You've basically admitted this by admitting that there are any
>>> exceptions at all to your "universal" rule. So, why keep arguing?
>>
>> What universal statement are you talking about?
>
> You made a blanket claim that deny-by-default is superior.

Now you're misinterpreting me :)

There may conceivably be a situation where deny-by-default is less
secure than allow-by-default. However, I cannot think of such any such
scenario, and I've never encountered or heard of any such scenario
arising in practise. It's therefore my opinion that deny-by-default is
the best option in at least 99% of cases.

> You're viewing it the wrong way. Once a new owner takes possession of
> the device, that new owner should decide its policy. If the old
> owner's policies keep intruding after that point, that's unauthorized.
> The new owner *should* be able to obliterate and replace any such
> policies. If they cannot, the dead hand of the old one has in effect
> intruded.

That's a very strange definition of what unauthorised access constitutes.

Assuming no-one (including the manufacturer) was able to access the
device, I'd consider the device to be very secure - just utterly
useless.

>> In my experience, "deny-by-default" is the right answer in
>
> less than 100% of cases.

I didn't say that. "At least 99%" is not necessarily "less than 100%".

In any case, I don't understand your objection. If you accept that in
the majority of cases, deny-by-default is the best choice, then surely
it's the best default security policy?

- James

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to