mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-12-26 03:42:07 +00:00
upstream: Fix PRINT macro, the suffix param to sshlog() was missing.
Also remove redundant __func__ prefix from PRINT calls as the macro already adds __FILE__, __func__ and __LINE__. From Christos Zoulas. OK dtucker@ OpenBSD-Commit-ID: 01fdfa9c5541151b5461d9d7d6ca186a3413d949
This commit is contained in:
parent
160db17fc6
commit
e99080c05d
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: sshkey-xmss.c,v 1.9 2020/10/19 22:49:23 dtucker Exp $ */
|
/* $OpenBSD: sshkey-xmss.c,v 1.10 2021/03/06 20:36:31 millert Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 Markus Friedl. All rights reserved.
|
* Copyright (c) 2017 Markus Friedl. All rights reserved.
|
||||||
*
|
*
|
||||||
@ -89,7 +89,7 @@ int sshkey_xmss_serialize_enc_key(const struct sshkey *, struct sshbuf *);
|
|||||||
int sshkey_xmss_deserialize_enc_key(struct sshkey *, struct sshbuf *);
|
int sshkey_xmss_deserialize_enc_key(struct sshkey *, struct sshbuf *);
|
||||||
|
|
||||||
#define PRINT(...) do { if (printerror) sshlog(__FILE__, __func__, __LINE__, \
|
#define PRINT(...) do { if (printerror) sshlog(__FILE__, __func__, __LINE__, \
|
||||||
0, SYSLOG_LEVEL_ERROR, __VA_ARGS__); } while (0)
|
0, SYSLOG_LEVEL_ERROR, NULL, __VA_ARGS__); } while (0)
|
||||||
|
|
||||||
int
|
int
|
||||||
sshkey_xmss_init(struct sshkey *key, const char *name)
|
sshkey_xmss_init(struct sshkey *key, const char *name)
|
||||||
@ -405,7 +405,7 @@ sshkey_xmss_get_state_from_file(struct sshkey *k, const char *filename,
|
|||||||
if ((fd = open(filename, O_RDONLY)) >= 0) {
|
if ((fd = open(filename, O_RDONLY)) >= 0) {
|
||||||
*have_file = 1;
|
*have_file = 1;
|
||||||
if (atomicio(read, fd, buf, sizeof(buf)) != sizeof(buf)) {
|
if (atomicio(read, fd, buf, sizeof(buf)) != sizeof(buf)) {
|
||||||
PRINT("%s: corrupt state file: %s", __func__, filename);
|
PRINT("corrupt state file: %s", filename);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
len = PEEK_U32(buf);
|
len = PEEK_U32(buf);
|
||||||
@ -414,7 +414,7 @@ sshkey_xmss_get_state_from_file(struct sshkey *k, const char *filename,
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (atomicio(read, fd, data, len) != len) {
|
if (atomicio(read, fd, data, len) != len) {
|
||||||
PRINT("%s: cannot read blob: %s", __func__, filename);
|
PRINT("cannot read blob: %s", filename);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if ((enc = sshbuf_from(data, len)) == NULL) {
|
if ((enc = sshbuf_from(data, len)) == NULL) {
|
||||||
@ -477,18 +477,18 @@ sshkey_xmss_get_state(const struct sshkey *k, int printerror)
|
|||||||
}
|
}
|
||||||
if ((lockfd = open(lockfile, O_CREAT|O_RDONLY, 0600)) == -1) {
|
if ((lockfd = open(lockfile, O_CREAT|O_RDONLY, 0600)) == -1) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: cannot open/create: %s", __func__, lockfile);
|
PRINT("cannot open/create: %s", lockfile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
while (flock(lockfd, LOCK_EX|LOCK_NB) == -1) {
|
while (flock(lockfd, LOCK_EX|LOCK_NB) == -1) {
|
||||||
if (errno != EWOULDBLOCK) {
|
if (errno != EWOULDBLOCK) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: cannot lock: %s", __func__, lockfile);
|
PRINT("cannot lock: %s", lockfile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (++tries > 10) {
|
if (++tries > 10) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: giving up on: %s", __func__, lockfile);
|
PRINT("giving up on: %s", lockfile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
usleep(1000*100*tries);
|
usleep(1000*100*tries);
|
||||||
@ -508,13 +508,13 @@ sshkey_xmss_get_state(const struct sshkey *k, int printerror)
|
|||||||
/* check that bds state is initialized */
|
/* check that bds state is initialized */
|
||||||
if (state->bds.auth == NULL)
|
if (state->bds.auth == NULL)
|
||||||
goto done;
|
goto done;
|
||||||
PRINT("%s: start from scratch idx 0: %u", __func__, state->idx);
|
PRINT("start from scratch idx 0: %u", state->idx);
|
||||||
} else if (r != 0) {
|
} else if (r != 0) {
|
||||||
ret = r;
|
ret = r;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (state->idx + 1 < state->idx) {
|
if (state->idx + 1 < state->idx) {
|
||||||
PRINT("%s: state wrap: %u", __func__, state->idx);
|
PRINT("state wrap: %u", state->idx);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
state->have_state = have_state;
|
state->have_state = have_state;
|
||||||
@ -589,8 +589,8 @@ sshkey_xmss_update_state(const struct sshkey *k, int printerror)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
goto done;
|
goto done;
|
||||||
} else if (idx != state->idx + 1) {
|
} else if (idx != state->idx + 1) {
|
||||||
PRINT("%s: more than one signature happened: idx %u state %u",
|
PRINT("more than one signature happened: idx %u state %u",
|
||||||
__func__, idx, state->idx);
|
idx, state->idx);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
state->idx = idx;
|
state->idx = idx;
|
||||||
@ -608,55 +608,54 @@ sshkey_xmss_update_state(const struct sshkey *k, int printerror)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if ((ret = sshkey_xmss_serialize_state(k, b)) != 0) {
|
if ((ret = sshkey_xmss_serialize_state(k, b)) != 0) {
|
||||||
PRINT("%s: SERLIALIZE FAILED: %d", __func__, ret);
|
PRINT("SERLIALIZE FAILED: %d", ret);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if ((ret = sshkey_xmss_encrypt_state(k, b, &enc)) != 0) {
|
if ((ret = sshkey_xmss_encrypt_state(k, b, &enc)) != 0) {
|
||||||
PRINT("%s: ENCRYPT FAILED: %d", __func__, ret);
|
PRINT("ENCRYPT FAILED: %d", ret);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if ((fd = open(nstatefile, O_CREAT|O_WRONLY|O_EXCL, 0600)) == -1) {
|
if ((fd = open(nstatefile, O_CREAT|O_WRONLY|O_EXCL, 0600)) == -1) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: open new state file: %s", __func__, nstatefile);
|
PRINT("open new state file: %s", nstatefile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
POKE_U32(buf, sshbuf_len(enc));
|
POKE_U32(buf, sshbuf_len(enc));
|
||||||
if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) {
|
if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: write new state file hdr: %s", __func__, nstatefile);
|
PRINT("write new state file hdr: %s", nstatefile);
|
||||||
close(fd);
|
close(fd);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (atomicio(vwrite, fd, sshbuf_mutable_ptr(enc), sshbuf_len(enc)) !=
|
if (atomicio(vwrite, fd, sshbuf_mutable_ptr(enc), sshbuf_len(enc)) !=
|
||||||
sshbuf_len(enc)) {
|
sshbuf_len(enc)) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: write new state file data: %s", __func__, nstatefile);
|
PRINT("write new state file data: %s", nstatefile);
|
||||||
close(fd);
|
close(fd);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (fsync(fd) == -1) {
|
if (fsync(fd) == -1) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: sync new state file: %s", __func__, nstatefile);
|
PRINT("sync new state file: %s", nstatefile);
|
||||||
close(fd);
|
close(fd);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (close(fd) == -1) {
|
if (close(fd) == -1) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: close new state file: %s", __func__, nstatefile);
|
PRINT("close new state file: %s", nstatefile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (state->have_state) {
|
if (state->have_state) {
|
||||||
unlink(ostatefile);
|
unlink(ostatefile);
|
||||||
if (link(statefile, ostatefile)) {
|
if (link(statefile, ostatefile)) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: backup state %s to %s", __func__, statefile,
|
PRINT("backup state %s to %s", statefile, ostatefile);
|
||||||
ostatefile);
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rename(nstatefile, statefile) == -1) {
|
if (rename(nstatefile, statefile) == -1) {
|
||||||
ret = SSH_ERR_SYSTEM_ERROR;
|
ret = SSH_ERR_SYSTEM_ERROR;
|
||||||
PRINT("%s: rename %s to %s", __func__, nstatefile, statefile);
|
PRINT("rename %s to %s", nstatefile, statefile);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user