X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=crypto%2Faf_alg.c;h=1fa7bc31be63b9fb774782ebe3fbdaed0b16ff72;hb=a54455766b9e3d3c27a6cef758355d2591d81d68;hp=6a3ad801158531435848a40936a9bd74a7a522e6;hpb=925e0ea47cacc285286550dd48ff4b51cdd911ef;p=deliverable%2Flinux.git diff --git a/crypto/af_alg.c b/crypto/af_alg.c index 6a3ad8011585..1fa7bc31be63 100644 --- a/crypto/af_alg.c +++ b/crypto/af_alg.c @@ -399,7 +399,7 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con) { struct cmsghdr *cmsg; - for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { + for_each_cmsghdr(cmsg, msg) { if (!CMSG_OK(msg, cmsg)) return -EINVAL; if (cmsg->cmsg_level != SOL_ALG) @@ -421,6 +421,12 @@ int af_alg_cmsg_send(struct msghdr *msg, struct af_alg_control *con) con->op = *(u32 *)CMSG_DATA(cmsg); break; + case ALG_SET_AEAD_ASSOCLEN: + if (cmsg->cmsg_len < CMSG_LEN(sizeof(u32))) + return -EINVAL; + con->aead_assoclen = *(u32 *)CMSG_DATA(cmsg); + break; + default: return -EINVAL; }