summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJames Morris <jmorris@namei.org>2011-03-16 09:41:17 +1100
committerJames Morris <jmorris@namei.org>2011-03-16 09:41:17 +1100
commita002951c97ff8da49938c982a4c236bf2fafdc9f (patch)
treed43e7885ea7376df0a47a0fc8ceca66dc5bfa357 /net
parent521cb40b0c44418a4fd36dc633f575813d59a43d (diff)
parentc151694b2c48d956ac8c8c59c6927f89cc29ef70 (diff)
downloadlwn-a002951c97ff8da49938c982a4c236bf2fafdc9f.tar.gz
lwn-a002951c97ff8da49938c982a4c236bf2fafdc9f.zip
Merge branch 'next' into for-linus
Diffstat (limited to 'net')
-rw-r--r--net/rxrpc/ar-key.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/net/rxrpc/ar-key.c b/net/rxrpc/ar-key.c
index d763793d39de..43ea7de2fc8e 100644
--- a/net/rxrpc/ar-key.c
+++ b/net/rxrpc/ar-key.c
@@ -25,6 +25,7 @@
#include <keys/user-type.h>
#include "ar-internal.h"
+static int rxrpc_vet_description_s(const char *);
static int rxrpc_instantiate(struct key *, const void *, size_t);
static int rxrpc_instantiate_s(struct key *, const void *, size_t);
static void rxrpc_destroy(struct key *);
@@ -52,6 +53,7 @@ EXPORT_SYMBOL(key_type_rxrpc);
*/
struct key_type key_type_rxrpc_s = {
.name = "rxrpc_s",
+ .vet_description = rxrpc_vet_description_s,
.instantiate = rxrpc_instantiate_s,
.match = user_match,
.destroy = rxrpc_destroy_s,
@@ -59,6 +61,23 @@ struct key_type key_type_rxrpc_s = {
};
/*
+ * Vet the description for an RxRPC server key
+ */
+static int rxrpc_vet_description_s(const char *desc)
+{
+ unsigned long num;
+ char *p;
+
+ num = simple_strtoul(desc, &p, 10);
+ if (*p != ':' || num > 65535)
+ return -EINVAL;
+ num = simple_strtoul(p + 1, &p, 10);
+ if (*p || num < 1 || num > 255)
+ return -EINVAL;
+ return 0;
+}
+
+/*
* parse an RxKAD type XDR format token
* - the caller guarantees we have at least 4 words
*/