From: Serge Petrenko <sergepetrenko@tarantool.org> To: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: tarantool-patches@freelists.org Subject: Re: [tarantool-patches] [PATCH] lua: fix assertion failure after improper box.schema.user:passwd() call Date: Mon, 17 Sep 2018 17:48:53 +0300 [thread overview] Message-ID: <B81E047D-2541-4413-AEE3-5951F6E4C1E7@tarantool.org> (raw) In-Reply-To: <20180914151752.f7f2nwa5dtpu334u@esperanza> [-- Attachment #1: Type: text/plain, Size: 2570 bytes --] > 14 сент. 2018 г., в 18:17, Vladimir Davydov <vdavydov.dev@gmail.com> написал(а): > > On Mon, Sep 10, 2018 at 04:36:43PM +0300, Serge Petrenko wrote: >> Calling box.schema.user:passwd() instead of box.schema.user.passwd() >> > > This isn't a proper fix, because the following command still crashes: > > box.schema.user.passwd(123) > > And this one crashes too: > > box.session.su('admin', function(x) return #x end, 123) > > Making error messages user-friendly is good, but I think that #3659 is > about invalid usage of luaT_error in lbox_session_su... Hi! I found the cause of this and fixed the issue. I also removed the type check since it seems to be outside of the patch scope now. New diff is below. --- src/box/lua/session.c | 5 ++++- test/box/misc.result | 9 +++++++++ test/box/misc.test.lua | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/box/lua/session.c b/src/box/lua/session.c index b2e1400b6..7541da0a7 100644 --- a/src/box/lua/session.c +++ b/src/box/lua/session.c @@ -201,8 +201,11 @@ lbox_session_su(struct lua_State *L) /* Restore the original credentials. */ fiber_set_user(fiber(), old_credentials); - if (error) + if (error) { + luaT_toerror(L); luaT_error(L); + } + return lua_gettop(L) - 1; } diff --git a/test/box/misc.result b/test/box/misc.result index 62376754e..4ee4797d0 100644 --- a/test/box/misc.result +++ b/test/box/misc.result @@ -1148,6 +1148,15 @@ s = box.schema.space.create('test', {user="no_such_user"}) --- - error: User 'no_such_user' is not found ... +-- +-- gh-3659 assertion failure after an error in code called from +-- box.session.su() +-- +box.session.su("admin", function(x) return #x end, 3) +--- +- error: '[string "return box.session.su("admin", function(x) re..."]:1: attempt to + get length of local ''x'' (a number value)' +... -- Too long WAL write warning (gh-2743). s = box.schema.space.create('test') --- diff --git a/test/box/misc.test.lua b/test/box/misc.test.lua index d6815645e..ee81c7be1 100644 --- a/test/box/misc.test.lua +++ b/test/box/misc.test.lua @@ -320,6 +320,12 @@ s:drop() -- s = box.schema.space.create('test', {user="no_such_user"}) +-- +-- gh-3659 assertion failure after an error in code called from +-- box.session.su() +-- +box.session.su("admin", function(x) return #x end, 3) + -- Too long WAL write warning (gh-2743). s = box.schema.space.create('test') _ = s:create_index('pk') -- 2.15.2 (Apple Git-101.1) [-- Attachment #2: Type: text/html, Size: 4729 bytes --]
next prev parent reply other threads:[~2018-09-17 14:48 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-10 13:36 Serge Petrenko 2018-09-14 15:17 ` Vladimir Davydov 2018-09-17 14:48 ` Serge Petrenko [this message] 2018-09-17 15:42 ` Vladimir Davydov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=B81E047D-2541-4413-AEE3-5951F6E4C1E7@tarantool.org \ --to=sergepetrenko@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=vdavydov.dev@gmail.com \ --subject='Re: [tarantool-patches] [PATCH] lua: fix assertion failure after improper box.schema.user:passwd() call' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox