tipc: Add check to prevent insertion of duplicate name table entries
authorAllan Stephens <allan.stephens@windriver.com>
Thu, 3 Nov 2011 15:12:01 +0000 (11:12 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Fri, 24 Feb 2012 22:05:14 +0000 (17:05 -0500)
Adds a new check to TIPC's name table logic to reject any attempt to
create a new name publication that is identical to an existing one.
(Such an attempt will never happen under normal circumstances, but
could arise if another network node malfunctions and issues a duplicate
name publication message.)

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>

net/tipc/name_table.c

index 1196f05..c2224f9 100644 (file)
@@ -268,6 +268,13 @@ static struct publication *tipc_nameseq_insert_publ(struct name_seq *nseq,
                }
 
                info = sseq->info;
+
+               /* Check if an identical publication already exists */
+               list_for_each_entry(publ, &info->zone_list, zone_list) {
+                       if ((publ->ref == port) && (publ->key == key) &&
+                           (!publ->node || (publ->node == node)))
+                               return NULL;
+               }
        } else {
                u32 inspos;
                struct sub_seq *freesseq;