Again, sorry for the late notice, but this just came
to my attention.

+static struct crypto_instance *crypto_authenc_alloc(struct rtattr **tb)
+{
+       struct crypto_instance *inst;
+       struct crypto_alg *auth;
+       struct crypto_alg *enc;
+       struct authenc_instance_ctx *ctx;
+       unsigned int authsize;
+       unsigned int enckeylen;
+       int err;
+
+       err = crypto_check_attr_type(tb, CRYPTO_ALG_TYPE_AEAD);
+       if (err)
+               return ERR_PTR(err);
+
+       auth = crypto_attr_alg(tb[1], CRYPTO_ALG_TYPE_HASH,
+                              CRYPTO_ALG_TYPE_HASH_MASK);
+       if (IS_ERR(auth))
+               return ERR_PTR(PTR_ERR(auth));
+
+       err = crypto_attr_u32(tb[2], &authsize);
+       inst = ERR_PTR(err);
+       if (err)
+               goto out_put_auth;
+
+       enc = crypto_attr_alg(tb[3], CRYPTO_ALG_TYPE_BLKCIPHER,
+                             CRYPTO_ALG_TYPE_MASK);
+       inst = ERR_PTR(PTR_ERR(enc));
+       if (IS_ERR(enc))
+               goto out_put_auth;
+
+       err = crypto_attr_u32(tb[4], &enckeylen);
+       if (err)
+               goto out_put_enc;
+
+       inst = kzalloc(sizeof(*inst) + sizeof(*ctx), GFP_KERNEL);
+       err = -ENOMEM;
+       if (!inst)
+               goto out_put_enc;
+
+       err = -ENAMETOOLONG;
+       if (snprintf(inst->alg.cra_name, CRYPTO_MAX_ALG_NAME,
+                    "authenc(%s, %u, %s, %u)", auth->cra_name, authsize,

The parsing routine in cryptomg_schedule_probe() does
not appear to accomodate whitespaces in the template.

Thus if user enters template without whitespaces,
then the above would cause a problem because the 
name in the template would not match up with the name
in the instance above. 

I have not tested this with authenc, but did with 
ctr(aes,4,8) as opposed to ctr(aes, 4, 8).
With whitespaces, it failed.  Without whitespaces 
in either template or instance, it worked.

+                    enc->cra_name, enckeylen) >= CRYPTO_MAX_ALG_NAME)
+               goto err_free_inst;
+
+       if (snprintf(inst->alg.cra_driver_name, CRYPTO_MAX_ALG_NAME,
+                    "authenc(%s, %u, %s, %u)", auth->cra_driver_name,

Same thing...

+                    authsize, enc->cra_driver_name, enckeylen) >=
+           CRYPTO_MAX_ALG_NAME)
+               goto err_free_inst;
+

Regards,
Joy
-
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to