examples: random: avoid stack overflows
This commit is contained in:
parent
1c05e26ef6
commit
4d09ebcaec
@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
APPNAME = rand
|
APPNAME = rand
|
||||||
PRIORITY = SCHED_PRIORITY_DEFAULT
|
PRIORITY = SCHED_PRIORITY_DEFAULT
|
||||||
STACKSIZE = 1024
|
STACKSIZE = 2048
|
||||||
|
|
||||||
ASRCS =
|
ASRCS =
|
||||||
CSRCS =
|
CSRCS =
|
||||||
|
@ -92,12 +92,16 @@ int rand_main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
nsamples = atoi(argv[1]);
|
nsamples = atoi(argv[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clip the number of samples to the configured buffer size */
|
/* Clip the number of samples to the configured buffer size */
|
||||||
|
|
||||||
if (nsamples > CONFIG_EXAMPLES_MAXSAMPLES)
|
if (nsamples < 0)
|
||||||
|
{
|
||||||
|
nsamples = 0;
|
||||||
|
}
|
||||||
|
else if (nsamples > CONFIG_EXAMPLES_MAXSAMPLES)
|
||||||
{
|
{
|
||||||
nsamples = CONFIG_EXAMPLES_MAXSAMPLES;
|
nsamples = CONFIG_EXAMPLES_MAXSAMPLES;
|
||||||
}
|
}
|
||||||
@ -124,14 +128,14 @@ int rand_main(int argc, char *argv[])
|
|||||||
if (nread < 0)
|
if (nread < 0)
|
||||||
{
|
{
|
||||||
int errcode = errno;
|
int errcode = errno;
|
||||||
fprintf(stderr, "ERROR: Read from /dev/randon failed: %d\n", errcode);
|
fprintf(stderr, "ERROR: Read from /dev/random failed: %d\n", errcode);
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nread != nsamples * sizeof(uint32_t))
|
if (nread != nsamples * sizeof(uint32_t))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: Read from /dev/randon only produced %d bytes\n",
|
fprintf(stderr, "ERROR: Read from /dev/random only produced %d bytes\n",
|
||||||
(int)nread);
|
(int)nread);
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
Loading…
Reference in New Issue
Block a user