Fix some new errors and a warning in cryptotest.

- Use a new 'char *key' to allocate storage for keys and assign the
  pointer to the session2_op 'const char *' members after the key is
  initialized.
- Mark the 'find' variable used in crfind() static so that crfind()
  doesn't return a pointer to stack garbage.

Reported by:	olivier (1)
MFC after:	2 weeks
Sponsored by:	Chelsio Communications
This commit is contained in:
John Baldwin 2017-06-01 21:07:32 +00:00
parent c8de781de7
commit f1a35c16b3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=319475

View File

@ -216,7 +216,7 @@ crlookup(const char *devname)
const char *
crfind(int crid)
{
struct crypt_find_op find;
static struct crypt_find_op find;
bzero(&find, sizeof(find));
find.crid = crid;
@ -252,7 +252,7 @@ runtest(struct alg *alg, int count, int size, u_long cmd, struct timeval *tv)
{
int i, fd = crget();
struct timeval start, stop, dt;
char *cleartext, *ciphertext, *originaltext;
char *cleartext, *ciphertext, *originaltext, *key;
struct session2_op sop;
struct crypt_op cop;
char iv[EALG_MAX_BLOCK_LEN];
@ -260,19 +260,21 @@ runtest(struct alg *alg, int count, int size, u_long cmd, struct timeval *tv)
bzero(&sop, sizeof(sop));
if (!alg->ishash) {
sop.keylen = (alg->minkeylen + alg->maxkeylen)/2;
sop.key = (char *) malloc(sop.keylen);
if (sop.key == NULL)
key = (char *) malloc(sop.keylen);
if (key == NULL)
err(1, "malloc (key)");
for (i = 0; i < sop.keylen; i++)
sop.key[i] = rdigit();
key[i] = rdigit();
sop.key = key;
sop.cipher = alg->code;
} else {
sop.mackeylen = (alg->minkeylen + alg->maxkeylen)/2;
sop.mackey = (char *) malloc(sop.mackeylen);
if (sop.mackey == NULL)
key = (char *) malloc(sop.mackeylen);
if (key == NULL)
err(1, "malloc (mac)");
for (i = 0; i < sop.mackeylen; i++)
sop.mackey[i] = rdigit();
key[i] = rdigit();
sop.mackey = key;
sop.mac = alg->code;
}
sop.crid = crid;