86 - [SFL] 'random(num)' macro is wrong in sfl.h

Reported by fjardonfjardon (1270027409|%O ago)

testfind.c crashes with segmentation fault. This is due to the 'random(num)' macro in sfl.h.

The macro is defined as:

  1. define random(num) (int) ((float) num * rand () / (RAND_MAX + 1.0))

It should be:

  1. define random(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))

The crash is caused by the following lines in testfind.c:
fill_random (byte *block, int minimum, int maximum)
{
…..

block_size = minimum + random (maximum-minimum) + 1;
…..
}

Where the block size is computed as: minimum + (maximum - minimum*rand()/RAND_MAX), which is ALWAYS greater then maximum….

—- sfl.h 2009-05-23 19:11:14.000000000 +0200

../libsfl-3.31-patched/sfl.h 2010-03-31 11:16:50.000000000 +0200

-470,7 +470,7
#define tbllast(x) (x [tblsize (x) - 1])

#if (!defined (random))
-# define random(num) (int) ((float) num * rand () / (RAND_MAX + 1.0))
+# define random(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
# define randomize() srand ((unsigned) time (NULL))
#endif
#if (!defined (min))

—- prelude.h 2009-05-23 18:57:08.000000000 +0200

../libsfl-3.31-patched/prelude.h 2010-03-31 11:16:34.000000000 +0200

-430,7 +430,7
#define tbllast(x) (x [tblsize (x) - 1])

#if (!defined (random))
-# define random(num) (int) ((float) num * rand () / (RAND_MAX + 1.0))
+# define random(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
# define randomize() srand ((unsigned) time (NULL))
#endif
#if (!defined (min))

Attachments:

No files attached to this page.

Comments

Add a New Comment

Edit | Files | Tags | Print

rating: 0+x

Who's following this issue?

pieterhpieterh
martin_sustrikmartin_sustrik
fjardonfjardon
CybariteCybarite
Watch: site | category | page

Submitted by fjardonfjardon

Use one of these tags to say what kind of issue it is:

  • issue - a fault in the software or the packaging or the documentation.
  • change - a change or feature request.

Use one of these tags to say what state the issue is in:

  • open - a new, open issue.
  • closed - issue has been closed.
  • rejected - the issue has been rejected.

Use one of these tags to say how urgent the issue is:

  • fatal - the issue is stopping all work.
  • urgent - it's urgent.

All open

89 - multi-threaded client connection failure (17 Nov 2012 16:28) [open]
87 - Zyre returns incomplete XML (26 Apr 2010 08:15) [open]
86 - SFL 'random(num)' macro is wrong in sfl.h (31 Mar 2010 09:23) [open]
85 - Zyre does not start on Solaris (23 Mar 2010 01:29) [open]
84 - OpenAMQ JMS - AMQTopic constructor use HEADER name and class instead of TOPIC (28 Jan 2010 17:04) [open]
83 - WireAPI: How to 'override' signal handlers? (14 Jan 2010 17:33) [open]
82 - Opf Classes Cannot Accept Default Values With Characte (06 Jan 2010 09:34) [open]
81 - AMQP Topic Exhange Routing (29 Dec 2009 00:21) [open]
80 - OpenAMQ reports malformed frame on 0-9-1 queue.unbind (20 Nov 2009 12:33) [open]
79 - AMQ Server crashing if subscribe topic is set as #.# (30 Oct 2009 06:11) [open]
78 - Error while publishing the messages faster (30 Oct 2009 05:57) [open]
77 - Tuning for latency (28 Oct 2009 16:47) [open]
76 - New user forum (28 Oct 2009 11:29) [change open]
74 - Simulaneous connect/disconnect from multiple threads crashes (03 Sep 2009 15:32) [open]
73 - Topic Exchange not sending a message to XXX.* (25 Aug 2009 21:10) [open]
72 - amq_content_basic_new() causes seg fault if not connected to broker (12 Aug 2009 23:50) [open]
71 - zyre bugs (06 Aug 2009 09:33) [open]
69 - OpenAMQ and Zyre (15 Jul 2009 11:27) [open]
68 - Change names of max and min source code macros (10 Jul 2009 16:52) [open]
67 - Server crash when multiple consumers ack on shared queue (26 Jun 2009 11:35) [open]

page 1 of 212next »

Most recent