comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Pascal Calling Convention
Date: Mon, 28 Mar 2011 14:16:28 -0700 (PDT)
Date: 2011-03-28T14:16:28-07:00	[thread overview]
Message-ID: <330393be-cb82-4cd8-ba44-6e59af7b75bf@v11g2000prb.googlegroups.com> (raw)
In-Reply-To: 4d90efdd$1$14806$882e7ee2@usenet-news.net

On Mar 28, 1:29 pm, Hyman Rosen <hyro...@mail.com> wrote:
> On 3/26/2011 4:46 PM, Robert A Duff wrote:
>
> > It doesn't seem reasonable to me.  Uninitialized variables do not
> > contain random data.  They contain arbitrary data.  And it's quite
> > likely that such arbitrary data happens to be the same every time,
> > or has some other non-random pattern.  Bad Guys sometimes exploit
> > such patterns to cause security problems.
>
> Time for my favorite data structure! This is a structure which
> represents an unordered set of the integers [0,N) and which has
> constant time initialization, insertion, deletion, and membership
> test. It relies on reading uninitialized data as some arbitrary
> value. Compilers which regard doing this as undefined behavior
> will break the code. I'm going to write it in C++, but it should
> be straightforward to translate to Ada:

I hope your "favorite data structure" comment was sarcastic.  I would
expect this code to behave incorrectly a large portion of the time;
specifically, if I read the code right, once you add any element to
the set, the program is likely to think 0 is in the set whether you've
added it or not.

                        -- Adam



> template <unsigned N>
> class set
> {
>      unsigned n;    // number of members in set
>      unsigned d[N]; // members are in d[0..n-1]
>      unsigned s[N]; // d[s[k]] == k if k is a member
>      // unspecified elements of d and s are arbitrary
>
> public:
>      set() : n(0) { }
>      bool has(unsigned k)
>          { return k < N && s[k] < n && d[s[k]] == k; }
>      void add(unsigned k)
>          { if (k < N && !has(k)) { d[n] = k; s[k] = n++; }
>      void del(unsigned k)
>          { if (has(k)) { unsigned i = s[k]; d[i] = d[--n]; s[d[i]] = i; }
>      void clr() { n = 0; }
>
>
>
> };




  reply	other threads:[~2011-03-28 21:16 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-23 21:37 Pascal Calling Convention Shark8
2011-03-23 23:25 ` Yannick Duchêne (Hibou57)
2011-03-24  0:24   ` Randy Brukardt
2011-03-24  0:43     ` Yannick Duchêne (Hibou57)
2011-03-24  2:04       ` Shark8
2011-03-25 15:40         ` Yannick Duchêne (Hibou57)
     [not found]       ` <F8mdnYCca6tRJBfQnZ2dnUVZ_s-dnZ2d@earthlink.com>
2011-03-24 19:20         ` Keith Thompson
2011-03-25 16:04           ` Robert A Duff
2011-03-25 17:02             ` Hyman Rosen
2011-03-25 17:09               ` Robert A Duff
2011-03-25 17:35                 ` Hyman Rosen
2011-03-26 19:51                   ` Robert A Duff
2011-03-25 17:51             ` Keith Thompson
2011-03-26 20:46               ` Robert A Duff
2011-03-27  2:24                 ` Randy Brukardt
2011-03-28 15:41                   ` Adam Beneschan
2011-03-28 19:52                   ` Robert A Duff
2011-03-29  2:32                     ` Randy Brukardt
2011-03-29  6:06                       ` Shark8
2011-03-29 23:45                         ` Randy Brukardt
2011-03-29 19:19                       ` Robert A Duff
2011-03-30  0:02                         ` Randy Brukardt
2011-03-30 12:40                           ` Robert A Duff
2011-03-30 19:40                             ` Randy Brukardt
2011-03-30 20:56                               ` tmoran
2011-03-30 22:34                                 ` Robert A Duff
2011-03-31 21:00                                   ` Randy Brukardt
2011-03-28 20:29                 ` Hyman Rosen
2011-03-28 21:16                   ` Adam Beneschan [this message]
2011-03-28 21:26                     ` Hyman Rosen
2011-03-28 22:08                       ` Adam Beneschan
2011-03-28 23:47                         ` Georg Bauhaus
2011-03-29 12:23                           ` stefan-lucks
2011-03-29 13:10                             ` Hyman Rosen
2011-03-30 13:42                             ` Phil Clayton
2011-03-31  7:40                               ` Phil Clayton
2011-03-29  2:48                         ` Hyman Rosen
2011-03-29 18:30                           ` Robert A Duff
2011-03-29 23:25                             ` Adam Beneschan
2011-03-30 12:50                               ` Robert A Duff
2011-03-30 14:47                                 ` Adam Beneschan
2011-03-30 18:10                                   ` Robert A Duff
2011-03-29  3:01                         ` Hyman Rosen
2011-03-29 18:22                           ` Robert A Duff
2011-03-26 21:30           ` Florian Weimer
2011-03-27 16:18             ` Robert A Duff
2011-03-27 16:38               ` Florian Weimer
2011-03-27 16:56                 ` Robert A Duff
2011-03-24  2:15   ` Shark8
2011-03-24  0:38 ` ytomino
2011-03-24  2:23   ` Shark8
2011-03-24 21:29 ` Gautier write-only
2011-03-25 12:47 ` Marco
2011-03-25 15:38   ` Yannick Duchêne (Hibou57)
2011-03-26  8:39     ` ObjectAda [was: Pascal Calling Convention] Gautier write-only
2011-03-26 14:05       ` Marco
2011-03-26 21:58         ` Gautier write-only
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox