key = malloc(sizeof(*key));
key = smalloc(sizeof(*key));
static void add_keyfile(char *filename) {    char passphrase[PASSPHRASE_MAXLEN];    struct RSAKey *key;    int needs_pass;    int ret;    int attempts;    char *comment;    struct PassphraseProcStruct pps;    needs_pass = rsakey_encrypted(filename, &comment);    attempts = 0;    key = malloc(sizeof(*key));    pps.passphrase = passphrase;    pps.comment = comment;    do {        if (needs_pass) {            int dlgret;            dlgret = DialogBoxParam(instance, MAKEINTRESOURCE(210),                                    NULL, PassphraseProc,                                    (LPARAM)&pps);            if (!dlgret) {                if (comment) free(comment);                free(key);                return;                /* operation cancelled */            }        } else            *passphrase = '\0';        ret = loadrsakey(filename, key, NULL, passphrase);        attempts++;    } while (ret == -1);    if (comment) free(comment);    if (ret == 0) {        MessageBox(NULL, "Couldn't load private key.", APPNAME,                   MB_OK | MB_ICONERROR);        free(key);        return;    }    if (add234(rsakeys, key) != key)        free(key);                     /* already present, don't waste RAM */}