comp.lang.ada
 help / color / mirror / Atom feed
From: Hyman Rosen <hyrosen@mail.com>
Subject: Re: Pascal Calling Convention
Date: Mon, 28 Mar 2011 16:29:25 -0400
Date: 2011-03-28T16:29:25-04:00	[thread overview]
Message-ID: <4d90efdd$1$14806$882e7ee2@usenet-news.net> (raw)
In-Reply-To: <wccbp0xy5hu.fsf@shell01.TheWorld.com>

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:

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; }
};



  parent reply	other threads:[~2011-03-28 20:29 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 [this message]
2011-03-28 21:16                   ` Adam Beneschan
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