git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
net
/
sunrpc
/
auth_gss
/
gss_krb5_crypto.c
diff --git
a/net/sunrpc/auth_gss/gss_krb5_crypto.c
b/net/sunrpc/auth_gss/gss_krb5_crypto.c
index
76b969e
..
97c981f
100644
(file)
--- a/
net/sunrpc/auth_gss/gss_krb5_crypto.c
+++ b/
net/sunrpc/auth_gss/gss_krb5_crypto.c
@@
-212,6
+212,7
@@
make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
char *cksumname;
struct crypto_tfm *tfm = NULL; /* XXX add to ctx? */
struct scatterlist sg[1];
char *cksumname;
struct crypto_tfm *tfm = NULL; /* XXX add to ctx? */
struct scatterlist sg[1];
+ u32 code = GSS_S_FAILURE;
switch (cksumtype) {
case CKSUMTYPE_RSA_MD5:
switch (cksumtype) {
case CKSUMTYPE_RSA_MD5:
@@
-220,11
+221,13
@@
make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
default:
dprintk("RPC: krb5_make_checksum:"
" unsupported checksum %d", cksumtype);
default:
dprintk("RPC: krb5_make_checksum:"
" unsupported checksum %d", cksumtype);
-
return GSS_S_FAILURE
;
+
goto out
;
}
if (!(tfm = crypto_alloc_tfm(cksumname, CRYPTO_TFM_REQ_MAY_SLEEP)))
}
if (!(tfm = crypto_alloc_tfm(cksumname, CRYPTO_TFM_REQ_MAY_SLEEP)))
-
return GSS_S_FAILURE
;
+
goto out
;
cksum->len = crypto_tfm_alg_digestsize(tfm);
cksum->len = crypto_tfm_alg_digestsize(tfm);
+ if ((cksum->data = kmalloc(cksum->len, GFP_KERNEL)) == NULL)
+ goto out;
crypto_digest_init(tfm);
sg_set_buf(sg, header, hdrlen);
crypto_digest_init(tfm);
sg_set_buf(sg, header, hdrlen);
@@
-232,8
+235,10
@@
make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
process_xdr_buf(body, body_offset, body->len - body_offset,
checksummer, tfm);
crypto_digest_final(tfm, cksum->data);
process_xdr_buf(body, body_offset, body->len - body_offset,
checksummer, tfm);
crypto_digest_final(tfm, cksum->data);
+ code = 0;
+out:
crypto_free_tfm(tfm);
crypto_free_tfm(tfm);
- return
0
;
+ return
code
;
}
EXPORT_SYMBOL(make_checksum);
}
EXPORT_SYMBOL(make_checksum);