From db0f660d080f2781887160ad830068fe0500c6d2 Mon Sep 17 00:00:00 2001 From: Zachary Johnson Date: Mon, 9 Mar 2026 14:09:58 -0400 Subject: [PATCH] enforce poll options between 1 and 100 characters; update documentation (#1965) pre-PR cleanup --- man/signal-cli.1.adoc | 1 + .../org/asamk/signal/commands/SendPollCreateCommand.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/man/signal-cli.1.adoc b/man/signal-cli.1.adoc index 787cdd9f..1c7d1b66 100644 --- a/man/signal-cli.1.adoc +++ b/man/signal-cli.1.adoc @@ -443,6 +443,7 @@ By default, recipients can select multiple options. *-o* OPTION [OPTION ...], *--option* OPTION [OPTION ...]*:: The options for the poll. Between 2 and 10 options must be specified. +Each option must be between 1 and 100 characters. === sendPollVote diff --git a/src/main/java/org/asamk/signal/commands/SendPollCreateCommand.java b/src/main/java/org/asamk/signal/commands/SendPollCreateCommand.java index 02b89e5e..08b24560 100644 --- a/src/main/java/org/asamk/signal/commands/SendPollCreateCommand.java +++ b/src/main/java/org/asamk/signal/commands/SendPollCreateCommand.java @@ -25,6 +25,7 @@ public class SendPollCreateCommand implements JsonRpcLocalCommand { private static final Logger logger = LoggerFactory.getLogger(SendPollCreateCommand.class); private static final int MAX_POLL_OPTIONS = 10; + private static final int MAX_POLL_OPTION_LENGTH = 100; @Override public String getName() { @@ -76,6 +77,14 @@ public class SendPollCreateCommand implements JsonRpcLocalCommand { if (options.size() > MAX_POLL_OPTIONS) { throw new UserErrorException("Poll cannot have more than " + MAX_POLL_OPTIONS + " options"); } + for (final var option : options) { + if (option.isEmpty()) { + throw new UserErrorException("Poll options must not be empty"); + } + if (option.length() > MAX_POLL_OPTION_LENGTH) { + throw new UserErrorException("Poll option \"" + option + "\" exceeds the maximum length of " + MAX_POLL_OPTION_LENGTH + " characters"); + } + } try { var results = m.sendPollCreateMessage(question, !noMulti, options, recipientIdentifiers, notifySelf);