summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/paste.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2014-05-13 22:54:18 +0000
committernicm <nicm@openbsd.org>2014-05-13 22:54:18 +0000
commitb736ab228166f2d8e052b7d4d34c75ac76a04b7e (patch)
tree8a70cdad5e4a4cee21dbad4693a6174520dc4429 /usr.bin/tmux/paste.c
parentsync some of the text of ENVIRONMENT with more(1), and cut some (diff)
downloadwireguard-openbsd-b736ab228166f2d8e052b7d4d34c75ac76a04b7e.tar.xz
wireguard-openbsd-b736ab228166f2d8e052b7d4d34c75ac76a04b7e.zip
Don't allow multiple buffers with the same name, from Thomas Adam.
Diffstat (limited to 'usr.bin/tmux/paste.c')
-rw-r--r--usr.bin/tmux/paste.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/usr.bin/tmux/paste.c b/usr.bin/tmux/paste.c
index 1f9626fa56f..bfd531c9bfd 100644
--- a/usr.bin/tmux/paste.c
+++ b/usr.bin/tmux/paste.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: paste.c,v 1.19 2014/05/13 07:34:35 nicm Exp $ */
+/* $OpenBSD: paste.c,v 1.20 2014/05/13 22:54:18 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -176,7 +176,7 @@ paste_add(char *data, size_t size)
int
paste_rename(const char *oldname, const char *newname, char **cause)
{
- struct paste_buffer *pb;
+ struct paste_buffer *pb, *pb_new;
if (cause != NULL)
*cause = NULL;
@@ -195,7 +195,14 @@ paste_rename(const char *oldname, const char *newname, char **cause)
pb = paste_get_name(oldname);
if (pb == NULL) {
if (cause != NULL)
- xasprintf(cause, "no buffer %s", oldname);
+ xasprintf(cause, "no buffer %s", oldname);
+ return (-1);
+ }
+
+ pb_new = paste_get_name(newname);
+ if (pb_new != NULL) {
+ if (cause != NULL)
+ xasprintf(cause, "buffer %s already exists", newname);
return (-1);
}