Unverified Commit a786a35e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!7137 v2 SUNRPC: fix a memleak in gss_import_v2_context

parents f070b14c def52e20
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -588,6 +588,7 @@ gss_import_v2_context(const void *p, const void *end, struct krb5_ctx *ctx,
{
	int keylen;
	u32 time32;
	int ret;

	p = simple_get_bytes(p, end, &ctx->flags, sizeof(ctx->flags));
	if (IS_ERR(p))
@@ -644,16 +645,28 @@ gss_import_v2_context(const void *p, const void *end, struct krb5_ctx *ctx,

	switch (ctx->enctype) {
	case ENCTYPE_DES3_CBC_RAW:
		return context_derive_keys_des3(ctx, gfp_mask);
		ret = context_derive_keys_des3(ctx, gfp_mask);
		break;
	case ENCTYPE_ARCFOUR_HMAC:
		return context_derive_keys_rc4(ctx);
		ret = context_derive_keys_rc4(ctx);
		break;
	case ENCTYPE_AES128_CTS_HMAC_SHA1_96:
	case ENCTYPE_AES256_CTS_HMAC_SHA1_96:
		return context_derive_keys_new(ctx, gfp_mask);
		ret = context_derive_keys_new(ctx, gfp_mask);
		break;
	default:
		return -EINVAL;
		ret = -EINVAL;
	}

	if (ret) {
		p = ERR_PTR(ret);
		goto out_free;
	}

	return 0;

out_free:
	kfree(ctx->mech_used.data);
out_err:
	return PTR_ERR(p);
}