Forbid empty session names, GitHub issue 2758.

This commit is contained in:
nicm 2021-07-06 08:18:38 +00:00
parent 1d4296f17f
commit 35c2958ae4
3 changed files with 19 additions and 1 deletions

View File

@ -102,6 +102,11 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item)
if (tmp != NULL) { if (tmp != NULL) {
name = format_single(item, tmp, c, NULL, NULL, NULL); name = format_single(item, tmp, c, NULL, NULL, NULL);
newname = session_check_name(name); newname = session_check_name(name);
if (newname == NULL) {
cmdq_error(item, "invalid session: %s", name);
free(name);
return (CMD_RETURN_ERROR);
}
free(name); free(name);
} }
if (args_has(args, 'A')) { if (args_has(args, 'A')) {
@ -134,8 +139,14 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item)
prefix = xstrdup(sg->name); prefix = xstrdup(sg->name);
else if (groupwith != NULL) else if (groupwith != NULL)
prefix = xstrdup(groupwith->name); prefix = xstrdup(groupwith->name);
else else {
prefix = session_check_name(group); prefix = session_check_name(group);
if (prefix == NULL) {
cmdq_error(item, "invalid session group: %s",
group);
goto fail;
}
}
} }
/* Set -d if no client. */ /* Set -d if no client. */

View File

@ -53,6 +53,11 @@ cmd_rename_session_exec(struct cmd *self, struct cmdq_item *item)
tmp = format_single_from_target(item, args->argv[0]); tmp = format_single_from_target(item, args->argv[0]);
newname = session_check_name(tmp); newname = session_check_name(tmp);
if (newname == NULL) {
cmdq_error(item, "invalid session: %s", tmp);
free(tmp);
return (CMD_RETURN_ERROR);
}
free(tmp); free(tmp);
if (strcmp(newname, s->name) == 0) { if (strcmp(newname, s->name) == 0) {
free(newname); free(newname);

View File

@ -237,6 +237,8 @@ session_check_name(const char *name)
{ {
char *copy, *cp, *new_name; char *copy, *cp, *new_name;
if (*name == '\0')
return (NULL);
copy = xstrdup(name); copy = xstrdup(name);
for (cp = copy; *cp != '\0'; cp++) { for (cp = copy; *cp != '\0'; cp++) {
if (*cp == ':' || *cp == '.') if (*cp == ':' || *cp == '.')