tipc: Enhance error checking of published names
authorAllan Stephens <allan.stephens@windriver.com>
Thu, 26 Apr 2012 21:57:17 +0000 (17:57 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Thu, 26 Apr 2012 22:15:48 +0000 (18:15 -0400)
Consolidates validation of scope and name sequence range values into
a single routine where it applies both to local name publications
and to name publications issued by other nodes in the network. This
change means that the scope value for non-local publications is now
validated and the name sequence range for local publications is now
validated only once. Additionally, a publication attempt that fails
validation now creates an entry in the system log file only if debugging
capabilities have been enabled; this prevents the system log from being
cluttered up with messages caused by a defective application or network
node.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
net/tipc/name_table.c
net/tipc/port.c

index 42221219275c6f331a0d4f899e1f1956dfb6742b..4de58dece9b2caca3265cde49f5dff198ebb8991 100644 (file)
@@ -516,9 +516,10 @@ struct publication *tipc_nametbl_insert_publ(u32 type, u32 lower, u32 upper,
 {
        struct name_seq *seq = nametbl_find_seq(type);
 
-       if (lower > upper) {
-               warn("Failed to publish illegal {%u,%u,%u}\n",
-                    type, lower, upper);
+       if ((scope < TIPC_ZONE_SCOPE) || (scope > TIPC_NODE_SCOPE) ||
+           (lower > upper)) {
+               dbg("Failed to publish illegal {%u,%u,%u} with scope %u\n",
+                    type, lower, upper, scope);
                return NULL;
        }
 
index 4aede40e592f8c39d9dd9eab35839d8cf5f46269..e6841706967ccdf3a382dadb0c2458d54e8f7f5c 100644 (file)
@@ -992,10 +992,6 @@ int tipc_publish(u32 ref, unsigned int scope, struct tipc_name_seq const *seq)
 
        if (p_ptr->connected)
                goto exit;
-       if (seq->lower > seq->upper)
-               goto exit;
-       if ((scope < TIPC_ZONE_SCOPE) || (scope > TIPC_NODE_SCOPE))
-               goto exit;
        key = ref + p_ptr->pub_count + 1;
        if (key == ref) {
                res = -EADDRINUSE;