X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/378c65045e2d11ac91dcdf16ca6a69382e9b3090..14ec1d8392d27cd5f9dc923ff7dc6416827d4060:/sshdss.c diff --git a/sshdss.c b/sshdss.c index 6487d75a..e634b984 100644 --- a/sshdss.c +++ b/sshdss.c @@ -89,8 +89,6 @@ static void *dss_newkey(char *data, int len) struct dss_key *dss; dss = snew(struct dss_key); - if (!dss) - return NULL; getstring(&data, &len, &p, &slen); #ifdef DEBUG_DSS @@ -111,6 +109,7 @@ static void *dss_newkey(char *data, int len) dss->q = getmp(&data, &len); dss->g = getmp(&data, &len); dss->y = getmp(&data, &len); + dss->x = NULL; return dss; } @@ -118,10 +117,16 @@ static void *dss_newkey(char *data, int len) static void dss_freekey(void *key) { struct dss_key *dss = (struct dss_key *) key; - freebn(dss->p); - freebn(dss->q); - freebn(dss->g); - freebn(dss->y); + if (dss->p) + freebn(dss->p); + if (dss->q) + freebn(dss->q); + if (dss->g) + freebn(dss->g); + if (dss->y) + freebn(dss->y); + if (dss->x) + freebn(dss->x); sfree(dss); } @@ -423,8 +428,6 @@ static void *dss_openssh_createkey(unsigned char **blob, int *len) struct dss_key *dss; dss = snew(struct dss_key); - if (!dss) - return NULL; dss->p = getmp(b, len); dss->q = getmp(b, len);