
---

---

 1 file changed, 21 insertions(+)


---


diff -puN net/sunrpc/auth_gss/auth_gss.c~gss-parse-new-keyring-downcall net/sunrpc/auth_gss/auth_gss.c
--- linux-2.6.18-rc5/net/sunrpc/auth_gss/auth_gss.c~gss-parse-new-keyring-downcall	2006-10-13 13:42:00.000000000 -0400
+++ linux-2.6.18-rc5-andros/net/sunrpc/auth_gss/auth_gss.c	2006-10-13 13:43:12.000000000 -0400
@@ -668,6 +668,10 @@ gss_pipe_downcall(struct file *filp, con
 	struct gss_cl_ctx *ctx;
 	char principal[32];
 	uid_t uid;
+#ifdef CONFIG_RPCSEC_GSS_KEYRING
+	key_serial_t skey, pkey, tkey;
+#endif
+
 	int err = -EFBIG;
 
 	if (mlen > MSG_BUF_MAXSIZE)
@@ -688,6 +692,23 @@ gss_pipe_downcall(struct file *filp, con
 		err = PTR_ERR(p);
 		goto err;
 	}
+#ifdef CONFIG_RPCSEC_GSS_KEYRING
+	p = simple_get_bytes(p, end, &skey, sizeof(skey));
+	if (IS_ERR(p)) {
+		err = PTR_ERR(p);
+		goto err;
+	}
+	p = simple_get_bytes(p, end, &pkey, sizeof(pkey));
+	if (IS_ERR(p)) {
+		err = PTR_ERR(p);
+		goto err;
+	}
+	p = simple_get_bytes(p, end, &tkey, sizeof(tkey));
+	if (IS_ERR(p)) {
+		err = PTR_ERR(p);
+		goto err;
+	}
+#endif
 
 	err = -ENOMEM;
 	snprintf(principal, sizeof(principal), "%u@%s", uid, clnt->cl_server);
_
