From ec9ec9466c943e943fabe52f58906f4dd4beac64 Mon Sep 17 00:00:00 2001 From: Alexander Turenko <alexander.turenko@tarantool.org> Date: Tue, 15 May 2018 13:47:52 +0300 Subject: [PATCH] Add test case for fiber safety of digest.pbkdf2 Follows up #3396. --- test/app/digest.result | 60 ++++++++++++++++++++++++++++++++++++++++ test/app/digest.test.lua | 19 +++++++++++++ 2 files changed, 79 insertions(+) diff --git a/test/app/digest.result b/test/app/digest.result index bf18151367..d41efde3fa 100644 --- a/test/app/digest.result +++ b/test/app/digest.result @@ -5,6 +5,9 @@ test_run:cmd("push filter ".."'\\.lua.*:[0-9]+: ' to '.lua:<line>\"]: '") --- - true ... +fiber = require('fiber') +--- +... digest = require('digest') --- ... @@ -576,3 +579,60 @@ test_run:cmd("clear filter") --- - true ... +-- gh-3396: fiber-safe pbkdf2 +res = {} +--- +... +sentry = fiber.channel() +--- +... +_ = test_run:cmd("setopt delimiter ';'") +--- +... +function test_pbkdf2() + local digest = require('digest') + for i = 1, 10 do + table.insert(res, digest.pbkdf2('', 'salt', 100, 32):hex()) + end + sentry:put(fiber.id()) +end; +--- +... +_ = test_run:cmd("setopt delimiter ''"); +--- +... +_ = fiber.create(test_pbkdf2) +--- +... +_ = fiber.create(test_pbkdf2) +--- +... +_ = sentry:get() +--- +... +_ = sentry:get() +--- +... +res +--- +- - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 + - bafac115a0022b2894f2983b5b5102455bdd3ba7cfbeb09f219a9fde8f3ee6a9 +... diff --git a/test/app/digest.test.lua b/test/app/digest.test.lua index 3134efc92c..7ecda91bcb 100644 --- a/test/app/digest.test.lua +++ b/test/app/digest.test.lua @@ -1,6 +1,7 @@ test_run = require('test_run').new() test_run:cmd("push filter ".."'\\.lua.*:[0-9]+: ' to '.lua:<line>\"]: '") +fiber = require('fiber') digest = require('digest') type(digest) @@ -184,3 +185,21 @@ s err:match("number") digest = nil test_run:cmd("clear filter") + +-- gh-3396: fiber-safe pbkdf2 +res = {} +sentry = fiber.channel() +_ = test_run:cmd("setopt delimiter ';'") +function test_pbkdf2() + local digest = require('digest') + for i = 1, 10 do + table.insert(res, digest.pbkdf2('', 'salt', 100, 32):hex()) + end + sentry:put(fiber.id()) +end; +_ = test_run:cmd("setopt delimiter ''"); +_ = fiber.create(test_pbkdf2) +_ = fiber.create(test_pbkdf2) +_ = sentry:get() +_ = sentry:get() +res -- GitLab