summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@dtucker.net>2023-03-09 18:24:54 +1100
committerDarren Tucker <dtucker@dtucker.net>2023-03-09 18:32:48 +1100
commitbfd1ad01d974a316b60622759ad17537fa2d92b4 (patch)
tree63a7a63bcd6e765c1a70dd1f81de41d9faf7385b
parenta231414970e01a35f45a295d5f93698fa1249b28 (diff)
Limit the number of PAM environment variables.
xcalloc has its own limits, but these are specific to PAM. From Coverity CID 405198, ok djm@
-rw-r--r--monitor.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/monitor.c b/monitor.c
index f856c873..fda4a366 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1097,6 +1097,10 @@ mm_answer_pam_respond(struct ssh *ssh, int sock, struct sshbuf *m)
sshpam_authok = NULL;
if ((r = sshbuf_get_u32(m, &num)) != 0)
fatal("%s: buffer error: %s", __func__, ssh_err(r));
+ if (num > PAM_MAX_NUM_MSG) {
+ fatal_f("Too many PAM messages, got %u, expected <= %u",
+ num, (unsigned)PAM_MAX_NUM_MSG);
+ }
if (num > 0) {
resp = xcalloc(num, sizeof(char *));
for (i = 0; i < num; ++i) {