aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server-fn.c2
-rw-r--r--tty-keys.c19
2 files changed, 12 insertions, 9 deletions
diff --git a/server-fn.c b/server-fn.c
index 1bd727d4..f5ede2c2 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -164,7 +164,7 @@ server_lock_client(struct client *c)
return;
cmd = options_get_string(c->session->options, "lock-command");
- if (strlen(cmd) + 1 > MAX_IMSGSIZE - IMSG_HEADER_SIZE)
+ if (*cmd == '\0' || strlen(cmd) + 1 > MAX_IMSGSIZE - IMSG_HEADER_SIZE)
return;
tty_stop_tty(&c->tty);
diff --git a/tty-keys.c b/tty-keys.c
index 6e02bdc1..7c0455f0 100644
--- a/tty-keys.c
+++ b/tty-keys.c
@@ -595,7 +595,17 @@ tty_keys_next(struct tty *tty)
}
first_key:
- /* Handle keys starting with escape. */
+ /* Try to lookup complete key. */
+ n = tty_keys_next1(tty, buf, len, &key, &size, expired);
+ if (n == 0) /* found */
+ goto complete_key;
+ if (n == 1)
+ goto partial_key;
+
+ /*
+ * If not a complete key, look for key with an escape prefix (meta
+ * modifier).
+ */
if (*buf == '\033') {
/* Look for a key without the escape. */
n = tty_keys_next1(tty, buf + 1, len - 1, &key, &size, expired);
@@ -620,13 +630,6 @@ first_key:
goto partial_key;
}
- /* Try to lookup key. */
- n = tty_keys_next1(tty, buf, len, &key, &size, expired);
- if (n == 0) /* found */
- goto complete_key;
- if (n == 1)
- goto partial_key;
-
/*
* At this point, we know the key is not partial (with or without
* escape). So pass it through even if the timer has not expired.