diff --git a/cmd-find.c b/cmd-find.c index f9621b53e..183e5525d 100644 --- a/cmd-find.c +++ b/cmd-find.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-find.c,v 1.87 2026/07/17 12:42:51 nicm Exp $ */ +/* $OpenBSD: cmd-find.c,v 1.88 2026/09/07 12:05:12 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott @@ -388,9 +388,11 @@ cmd_find_get_window_with_session(struct cmd_find_state *fs, const char *window) /* Try as an offset. */ if (!exact && (window[0] == '+' || window[0] == '-')) { - if (window[1] != '\0') - n = strtonum(window + 1, 1, INT_MAX, NULL); - else + if (window[1] != '\0') { + n = strtonum(window + 1, 1, INT_MAX, &errstr); + if (errstr != NULL) + return (-1); + } else n = 1; s = fs->s; if (fs->flags & CMD_FIND_WINDOW_INDEX) { @@ -626,9 +628,11 @@ cmd_find_get_pane_with_window(struct cmd_find_state *fs, const char *pane) /* Try as an offset. */ if (pane[0] == '+' || pane[0] == '-') { - if (pane[1] != '\0') - n = strtonum(pane + 1, 1, INT_MAX, NULL); - else + if (pane[1] != '\0') { + n = strtonum(pane + 1, 1, INT_MAX, &errstr); + if (errstr != NULL) + return (-1); + } else n = 1; wp = fs->w->active; if (pane[0] == '+') diff --git a/monitor.c b/monitor.c index ff0c6e5ed..596e137a7 100644 --- a/monitor.c +++ b/monitor.c @@ -1,4 +1,4 @@ -/* $OpenBSD: monitor.c,v 1.7 2026/07/27 19:15:58 nicm Exp $ */ +/* $OpenBSD: monitor.c,v 1.8 2026/09/07 10:15:25 nicm Exp $ */ /* * Copyright (c) 2026 Nicholas Marriott @@ -614,8 +614,10 @@ monitor_parse(const char *value, char **name, enum monitor_type *type, int *id, *type = MONITOR_ALL_WINDOWS; else if (sscanf(what, "@%d", id) == 1 && *id >= 0) *type = MONITOR_WINDOW; - else + else if (*what == '\0') *type = MONITOR_SESSION; + else + goto fail; *name = xstrdup(copy); *format = xstrdup(split);