{"object_kind":"push","event_name":"push","before":"36f809fb501cdc6cb8f2f297e3889e3138be3e2c","after":"f3625bee61fa9a9f79de5c6057a4441b9f0bd1cd","ref":"refs/heads/master","ref_protected":true,"checkout_sha":"f3625bee61fa9a9f79de5c6057a4441b9f0bd1cd","message":null,"user_id":761,"user_name":"George Kiagiadakis","user_username":"gkiagia","user_email":"","user_avatar":"https://secure.gravatar.com/avatar/fef80de08e4b130d46f64ddfd085c154e4b8cd4c45f8ba9dc8f6dc3f3ce79986?s=80&d=identicon","project_id":2941,"project":{"id":2941,"name":"wireplumber","description":"Session / policy manager implementation for PipeWire","web_url":"https://gitlab.freedesktop.org/pipewire/wireplumber","avatar_url":null,"git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/wireplumber.git","git_http_url":"https://gitlab.freedesktop.org/pipewire/wireplumber.git","namespace":"PipeWire","visibility_level":20,"path_with_namespace":"pipewire/wireplumber","default_branch":"master","ci_config_path":"","homepage":"https://gitlab.freedesktop.org/pipewire/wireplumber","url":"git@ssh.gitlab.freedesktop.org:pipewire/wireplumber.git","ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/wireplumber.git","http_url":"https://gitlab.freedesktop.org/pipewire/wireplumber.git"},"commits":[{"id":"db755a6a19d1d8fe7567d65d77cdd09254e1f30a","message":"lua: use Lua extradata to store the reference count\n\nLua provides \"extra data\", which is some memory in each Lua state that\nthe application can use for its own purposes. Use this to store the\nreference count.\n","title":"lua: use Lua extradata to store the reference count","timestamp":"2025-07-24T12:36:29+03:00","url":"https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/db755a6a19d1d8fe7567d65d77cdd09254e1f30a","author":{"name":"Demi Marie Obenour","email":"demiobenour@gmail.com"},"added":[],"modified":["modules/module-lua-scripting/wplua/wplua.c"],"removed":[]},{"id":"2ea068de1b39fc6be2ac3c11f7219028f540e657","message":"_wplua_pcall: avoid Lua stack overflow\n\nC code must ensure that the Lua stack does not overflow. Ensure there\nare enough slots for both the error handler and for the return values.\n","title":"_wplua_pcall: avoid Lua stack overflow","timestamp":"2025-07-24T12:36:29+03:00","url":"https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/2ea068de1b39fc6be2ac3c11f7219028f540e657","author":{"name":"Demi Marie Obenour","email":"demiobenour@gmail.com"},"added":[],"modified":["modules/module-lua-scripting/wplua/wplua.c"],"removed":[]},{"id":"0cba7b9525fb1a11dfaedae4f563ae736d608333","message":"lua: Push \"_new\", not '_' and then \"new\".\n\nNo functional change intended.\n","title":"lua: Push \"_new\", not '_' and then \"new\".","timestamp":"2025-07-24T12:36:29+03:00","url":"https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/0cba7b9525fb1a11dfaedae4f563ae736d608333","author":{"name":"Demi Marie Obenour","email":"demiobenour@gmail.com"},"added":[],"modified":["modules/module-lua-scripting/wplua/wplua.c"],"removed":[]},{"id":"f3625bee61fa9a9f79de5c6057a4441b9f0bd1cd","message":"lua: fix SPA POD array and choice builders\n\nThese builders had many bugs:\n\n1. They would longjmp() across the destructor of a g_autoptr() if a Lua\n error was thrown. This will leak the memory in the g_autoptr()\n unless Lua is compiled with C++ exceptions.\n2. They depended on the iteration order of numerical keys in Lua tables.\n Lua explicitly does not specify this order.\n3. They would produce nonsensical SPA POD array or choice types with\n strings or bytes as values. These would cause undefined behavior if\n manipulated by naive C code, or assertion failures if\n spa_pod_is_array() and spa_pod_is_choice() are modified to check that\n the contents of arrays and choices have sensible types.\n4. They silently accepted extra arguments, potentially causing confusion\n and making it harder to extend the functions in a\n backwards-compatible way.\n\nSolve the first problem by calling functions that can raise a Lua error\nin a protected environment (with lua_pcall). If there is a Lua error,\nrethrow it after the g_autoptr() destructor has run.\n\nSolve the second problem by first obtaining the number of keys in the\ntable and then iterating over the keys that are expected to be present.\nIf any of the keys are not contiguious integers starting at 1, the range\n[1..number of keys] will include a number that is not a table key. This\nwill result in lua_rawgeti pushing a nil onto the Lua stack. An\nexplicit check throws a useful error in this case.\n\nSolve the third problem by explicitly checking that the type is\nreasonable before building an array or choice. If it is wrong,\na Lua error is thrown.\n\nSolve the fourth problem by using luaL_checktype (L, 2, LUA_TNONE) to\ncheck that no unwanted values were passed. The C function called with\nlua_pcall is passed every argument passed by Lua, followed by a light\nuserdata that stores a context pointer. After the light userdata is\npopped from the Lua stack, the Lua stack is identical to what Lua\ncreated when it called the outer C function, so the type-checking\nfunctions in the auxillary library can be used to enforce that only the\ncorrect number and type of arguments were passed.\n","title":"lua: fix SPA POD array and choice builders","timestamp":"2025-07-24T12:36:29+03:00","url":"https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/f3625bee61fa9a9f79de5c6057a4441b9f0bd1cd","author":{"name":"Demi Marie Obenour","email":"demiobenour@gmail.com"},"added":[],"modified":["modules/module-lua-scripting/api/pod.c"],"removed":[]}],"total_commits_count":4,"push_options":{},"repository":{"name":"wireplumber","url":"git@ssh.gitlab.freedesktop.org:pipewire/wireplumber.git","description":"Session / policy manager implementation for PipeWire","homepage":"https://gitlab.freedesktop.org/pipewire/wireplumber","git_http_url":"https://gitlab.freedesktop.org/pipewire/wireplumber.git","git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/wireplumber.git","visibility_level":20}}