hx509/hxtool.c: ensure parse_bytes() result does not overflow
This commit is contained in:

committed by
Nico Williams

parent
37cd2c16b8
commit
e8e8b78d65
@@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include "hx_locl.h"
|
#include "hx_locl.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <hxtool-commands.h>
|
#include <hxtool-commands.h>
|
||||||
#include <sl.h>
|
#include <sl.h>
|
||||||
#include <rtbl.h>
|
#include <rtbl.h>
|
||||||
@@ -1661,13 +1662,15 @@ random_data(void *opt, int argc, char **argv)
|
|||||||
{
|
{
|
||||||
void *ptr;
|
void *ptr;
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
int64_t bytes;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
len = parse_bytes(argv[0], "byte");
|
bytes = parse_bytes(argv[0], "byte");
|
||||||
if (len <= 0) {
|
if (bytes <= 0 || bytes > SSIZE_MAX) {
|
||||||
fprintf(stderr, "bad argument to random-data\n");
|
fprintf(stderr, "bad argument to random-data\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
len = bytes;
|
||||||
|
|
||||||
ptr = malloc(len);
|
ptr = malloc(len);
|
||||||
if (ptr == NULL) {
|
if (ptr == NULL) {
|
||||||
|
Reference in New Issue
Block a user