Don't rely on assertions and running out of memory to terminate if
an extremely large number of sources is added. Set the maximum number
to 65536 to have a practical limit where chronyd still has a chance to
appear functional with some operations having a quadratic time
complexity.
/* ================================================== */
+/* Maximum number of sources */
+#define MAX_SOURCES 65536
+
/* Record type private to this file, used to store information about
particular sources */
typedef struct {
} else if (!name && !UTI_IsIPReal(&remote_addr->ip_addr)) {
/* Name is required for non-real addresses */
return NSR_InvalidName;
+ } else if (n_sources >= MAX_SOURCES) {
+ return NSR_TooManySources;
} else {
if (remote_addr->ip_addr.family != IPADDR_INET4 &&
remote_addr->ip_addr.family != IPADDR_INET6 &&