diff options
Diffstat (limited to 'monitor_wrap.c')
-rw-r--r-- | monitor_wrap.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/monitor_wrap.c b/monitor_wrap.c index 8cfc8cc08..332652895 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c | |||
@@ -776,8 +776,11 @@ mm_sshpam_query(void *ctx, char **name, char **info, | |||
776 | *name = buffer_get_string(&m, NULL); | 776 | *name = buffer_get_string(&m, NULL); |
777 | *info = buffer_get_string(&m, NULL); | 777 | *info = buffer_get_string(&m, NULL); |
778 | *num = buffer_get_int(&m); | 778 | *num = buffer_get_int(&m); |
779 | *prompts = xmalloc((*num + 1) * sizeof(char *)); | 779 | if (*num > PAM_MAX_NUM_MSG) |
780 | *echo_on = xmalloc((*num + 1) * sizeof(u_int)); | 780 | fatal("%s: recieved %u PAM messages, expected <= %u", |
781 | __func__, *num, PAM_MAX_NUM_MSG); | ||
782 | *prompts = xcalloc((*num + 1), sizeof(char *)); | ||
783 | *echo_on = xcalloc((*num + 1), sizeof(u_int)); | ||
781 | for (i = 0; i < *num; ++i) { | 784 | for (i = 0; i < *num; ++i) { |
782 | (*prompts)[i] = buffer_get_string(&m, NULL); | 785 | (*prompts)[i] = buffer_get_string(&m, NULL); |
783 | (*echo_on)[i] = buffer_get_int(&m); | 786 | (*echo_on)[i] = buffer_get_int(&m); |