mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Forbid empty session names, GitHub issue 2758.
This commit is contained in:
		| @@ -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. */ | ||||||
|   | |||||||
| @@ -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); | ||||||
|   | |||||||
| @@ -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 == '.') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nicm
					nicm