-/* $OpenBSD: ssh-keyscan.c,v 1.152 2023/03/31 04:21:56 djm Exp $ */
+/* $OpenBSD: ssh-keyscan.c,v 1.153 2023/06/21 05:06:04 djm Exp $ */
/*
* Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
*
#include <openssl/bn.h>
#endif
+#include <limits.h>
#include <netdb.h>
#include <errno.h>
#ifdef HAVE_POLL_H
#if defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE)
struct rlimit rlfd;
- if (getrlimit(RLIMIT_NOFILE, &rlfd) == -1)
- return (-1);
- if ((hard ? rlfd.rlim_max : rlfd.rlim_cur) == RLIM_INFINITY)
+ if (getrlimit(RLIMIT_NOFILE, &rlfd) == -1 ||
+ (hard ? rlfd.rlim_max : rlfd.rlim_cur) < 0)
+ return -1;
+ if ((hard ? rlfd.rlim_max : rlfd.rlim_cur) == RLIM_INFINITY ||
+ (hard ? rlfd.rlim_max : rlfd.rlim_cur) > INT_MAX)
return SSH_SYSFDMAX;
- else
- return hard ? rlfd.rlim_max : rlfd.rlim_cur;
+ return hard ? rlfd.rlim_max : rlfd.rlim_cur;
#else
return SSH_SYSFDMAX;
#endif