Don't allow multiple buffers with the same name, from Thomas Adam.
authornicm <nicm@openbsd.org>
Tue, 13 May 2014 22:54:18 +0000 (22:54 +0000)
committernicm <nicm@openbsd.org>
Tue, 13 May 2014 22:54:18 +0000 (22:54 +0000)
usr.bin/tmux/paste.c

index 1f9626f..bfd531c 100644 (file)
@@ -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);
        }