Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package prosody for openSUSE:Factory checked in at 2026-06-03 20:25:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/prosody (Old) and /work/SRC/openSUSE:Factory/.prosody.new.1937 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "prosody" Wed Jun 3 20:25:04 2026 rev:44 rq:1356867 version:13.0.6 Changes: -------- --- /work/SRC/openSUSE:Factory/prosody/prosody.changes 2026-04-30 20:28:44.342746102 +0200 +++ /work/SRC/openSUSE:Factory/.prosody.new.1937/prosody.changes 2026-06-03 20:28:29.872330629 +0200 @@ -1,0 +2,33 @@ +Wed Jun 3 05:55:46 UTC 2026 - Michael Vetter <[email protected]> + +- Update to 13.0.6: + Fixes and improvements: + * mod_cloud_notify: Use correct stanza id when clearing table entries (mem leak) + * mod_admin_shell: Don’t echo new password back to the client + * util.pubsub: Remove JIDs not permitted to be subscribed on affiliation change (fixes #1709) + Minor changes: + * mod_account_activity: Don’t traceback when called without options + * util.jsonschema: Always accept 0 for multipleOf properties + * util.paths: Fix check for adding installer path to package.cpath + * util.datamanager: Fix listing of host stores + * util.crypto: Use post-Lua 5.1 buffer API for improved memory safety + * util.dataforms: Don’t treat invalid jid-multi fields as missing + * util.crypto: Ensure signing parameter is a string + * util.poll: Reject unsupported file descriptors when using select() backend + * util.pubsub: Ensure deleted node stays in memory store deletion failed + * util.ringbuffer: Fix incorrect returned position from :find() for #needle~=1 + * util.pposix: Fix incorrect syslog facility mapping + * util.ringbuffer: find(): Fix find logic bugs + * util.signal: Fix signalfd closure on non-Linux systems + * net.websocket: Fix traceback in client if server doesn’t respond with Connection header + * net.server_event: Fix incorrect flag logic for watchfd handles + * mod_debug_stanzas: Only clear active_filters when there are no subscribers + * mod_carbons: Fix ‘to’ attribute of stanzas to own account + * net.stun: Fix parsing of STUN packets with 0-length attributes + * mod_storage_memory: Fix assignment to ‘with’ when calling archive:set() + * net.http.parser: Include final component in path normalization check + * mod_register_ibr: Use set_password() instead of create_user() for resets + * mod_vcard: Ignore invalid photo data + * util.timer: Fix incorrect rescheduling of some kinds of timers + +------------------------------------------------------------------- Old: ---- prosody-13.0.5.tar.gz prosody-13.0.5.tar.gz.asc New: ---- prosody-13.0.6.tar.gz prosody-13.0.6.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ prosody.spec ++++++ --- /var/tmp/diff_new_pack.CV3RD3/_old 2026-06-03 20:28:30.660363264 +0200 +++ /var/tmp/diff_new_pack.CV3RD3/_new 2026-06-03 20:28:30.664363429 +0200 @@ -18,7 +18,7 @@ %define _piddir /run Name: prosody -Version: 13.0.5 +Version: 13.0.6 Release: 0 Summary: Communications server for Jabber/XMPP License: MIT ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.CV3RD3/_old 2026-06-03 20:28:30.696364755 +0200 +++ /var/tmp/diff_new_pack.CV3RD3/_new 2026-06-03 20:28:30.704365086 +0200 @@ -1,6 +1,6 @@ -mtime: 1777528532 -commit: 13fc2188781ec18c7b64ed3eb40802aa88bece2124848eed8e9b950264e4a828 +mtime: 1780466263 +commit: 96f6b9288d6a2f05d732feffc5e482b5a105dd1b0fc8d7ebfafa5b60f9420f9a url: https://src.opensuse.org/lua/prosody -revision: 13fc2188781ec18c7b64ed3eb40802aa88bece2124848eed8e9b950264e4a828 +revision: 96f6b9288d6a2f05d732feffc5e482b5a105dd1b0fc8d7ebfafa5b60f9420f9a projectscmsync: https://src.opensuse.org/lua/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-06-03 07:57:43.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ prosody-13.0.5.tar.gz -> prosody-13.0.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/.hg_archival.txt new/prosody-13.0.6/.hg_archival.txt --- old/prosody-13.0.5/.hg_archival.txt 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/.hg_archival.txt 2026-05-27 15:57:49.731381928 +0200 @@ -1,4 +1,4 @@ repo: 3e3171b59028ee70122cfec6ecf98f518f946b59 -node: 2a66728d9e298653f9ab30e5874b7ba15a53ace7 +node: 8eac8de97bca1ed5debe7a1366ab4414e4ea4dfe branch: 13.0 -tag: 13.0.5 +tag: 13.0.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/net/http/parser.lua new/prosody-13.0.6/net/http/parser.lua --- old/prosody-13.0.5/net/http/parser.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/net/http/parser.lua 2026-05-27 15:57:49.731381928 +0200 @@ -4,13 +4,17 @@ local urldecode = require "prosody.util.http".urldecode; local dbuffer = require "prosody.util.dbuffer"; + +-- This is a basic check, and does *not* fully prevent path traversal (CWE-22). +-- If the path will be mapped to a filesystem, further processing and checks +-- are needed for safety and compliance. This is handled by net.http.files. local function preprocess_path(path) path = urldecode((path:gsub("//+", "/"))); if path:sub(1,1) ~= "/" then path = "/"..path; end local level = 0; - for component in path:gmatch("([^/]+)/") do + for component in path:gmatch("([^/]+)") do if component == ".." then level = level - 1; elseif component ~= "." then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/net/server_event.lua new/prosody-13.0.6/net/server_event.lua --- old/prosody-13.0.5/net/server_event.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/net/server_event.lua 2026-05-27 15:57:49.731381928 +0200 @@ -947,7 +947,7 @@ self.wantwrite = base:addevent(fd, EV_WRITE, function () onwriteable(self); end); - elseif not r and self.wantread then + elseif not w and self.wantwrite then self.wantwrite:close(); self.wantwrite = nil; end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/net/stun.lua new/prosody-13.0.6/net/stun.lua --- old/prosody-13.0.5/net/stun.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/net/stun.lua 2026-05-27 15:57:49.731381928 +0200 @@ -185,7 +185,7 @@ local attr_type, attr_len = struct.unpack(">I2I2", attr_hdr); --luacheck: ignore 211/attr_type if attr_len == 0 then table.insert(self.attributes, attr_hdr); - pos = pos + 20; + pos = pos + 4; else local data = bytes:sub(pos + 4, pos + 3 + attr_len); assert(#data == attr_len, "packet truncated in attribute value"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/net/websocket.lua new/prosody-13.0.6/net/websocket.lua --- old/prosody-13.0.5/net/websocket.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/net/websocket.lua 2026-05-27 15:57:49.731381928 +0200 @@ -240,7 +240,7 @@ insecure = ex.insecure; }, function(b, c, r, http_req) if c ~= 101 - or r.headers["connection"]:lower() ~= "upgrade" + or (r.headers["connection"] or ""):lower() ~= "upgrade" or r.headers["upgrade"] ~= "websocket" or r.headers["sec-websocket-accept"] ~= base64.encode(sha1(key .. "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")) or (protocol and not protocol[r.headers["sec-websocket-protocol"]]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_admin_shell.lua new/prosody-13.0.6/plugins/mod_admin_shell.lua --- old/prosody-13.0.5/plugins/mod_admin_shell.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_admin_shell.lua 2026-05-27 15:57:49.731381928 +0200 @@ -1880,9 +1880,6 @@ return promise.reject("Unacceptable password"); end - self.session.print(("PW: %q"):format(raw_password)); - self.session.print(("PW2: %q"):format(prepped_password)); - local ok, err = um.create_user_with_role(username, prepped_password, host, role); if not ok then return promise.reject("Could not create user: "..err); @@ -1954,9 +1951,6 @@ return promise.reject("Unacceptable password"); end - self.session.print(("PW: %q"):format(raw_password)); - self.session.print(("PW2: %q"):format(prepped_password)); - local ok, err = um.set_password(username, prepped_password, host, nil); if ok then return "User password changed"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_carbons.lua new/prosody-13.0.6/plugins/mod_carbons.lua --- old/prosody-13.0.5/plugins/mod_carbons.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_carbons.lua 2026-05-27 15:57:49.731381928 +0200 @@ -141,7 +141,7 @@ -- Create the carbon copy and wrap it as per the Stanza Forwarding XEP local copy = st.clone(stanza); if c2s and not orig_to then - stanza.attr.to = bare_from; + copy.attr.to = bare_from; end copy.attr.xmlns = "jabber:client"; carbon = st.message{ from = bare_jid, type = orig_type, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_cloud_notify.lua new/prosody-13.0.6/plugins/mod_cloud_notify.lua --- old/prosody-13.0.5/plugins/mod_cloud_notify.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_cloud_notify.lua 2026-05-27 15:57:49.731381928 +0200 @@ -397,8 +397,8 @@ id2identifier[stanza_id] = push_identifier; module:send_iq(push_publish):next(handle_push_success, handle_push_error):finally(function () -- unhook iq handlers for this identifier (if possible) - id2node[stanza.attr.id] = nil; - id2identifier[stanza.attr.id] = nil; + id2node[stanza_id] = nil; + id2identifier[stanza_id] = nil; end); pushes = pushes + 1; end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_debug_stanzas/watcher.lib.lua new/prosody-13.0.6/plugins/mod_debug_stanzas/watcher.lib.lua --- old/prosody-13.0.5/plugins/mod_debug_stanzas/watcher.lib.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_debug_stanzas/watcher.lib.lua 2026-05-27 15:57:49.731381928 +0200 @@ -59,8 +59,8 @@ if #active_filter.downstream == 0 then filters.remove_filter(session, "stanzas/in", active_filter.filter_in); filters.remove_filter(session, "stanzas/out", active_filter.filter_out); + active_filters[session] = nil; end - active_filters[session] = nil; end local function unsubscribe_all_from_session(session, reason) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_register_ibr.lua new/prosody-13.0.6/plugins/mod_register_ibr.lua --- old/prosody-13.0.5/plugins/mod_register_ibr.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_register_ibr.lua 2026-05-27 15:57:49.731381928 +0200 @@ -11,7 +11,7 @@ local dataform_new = require "prosody.util.dataforms".new; local usermanager_user_exists = require "prosody.core.usermanager".user_exists; local usermanager_create_user_with_role = require "prosody.core.usermanager".create_user_with_role; -local usermanager_set_password = require "prosody.core.usermanager".create_user; +local usermanager_set_password = require "prosody.core.usermanager".set_password; local usermanager_delete_user = require "prosody.core.usermanager".delete_user; local nodeprep = require "prosody.util.encodings".stringprep.nodeprep; local util_error = require "prosody.util.error"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_storage_memory.lua new/prosody-13.0.6/plugins/mod_storage_memory.lua --- old/prosody-13.0.5/plugins/mod_storage_memory.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_storage_memory.lua 2026-05-27 15:57:49.731381928 +0200 @@ -206,7 +206,7 @@ item.when = new_when; end if new_with then - item.with = new_when; + item.with = new_with; end return true; end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/plugins/mod_vcard.lua new/prosody-13.0.6/plugins/mod_vcard.lua --- old/prosody-13.0.5/plugins/mod_vcard.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/plugins/mod_vcard.lua 2026-05-27 15:57:49.731381928 +0200 @@ -68,5 +68,6 @@ local photo_b64 = photo:get_child_text("BINVAL"); local photo_raw = photo_b64 and base64.decode(photo_b64); + if not photo_raw then return end return (sha1(photo_raw, true)); end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/prosody.release new/prosody-13.0.6/prosody.release --- old/prosody-13.0.5/prosody.release 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/prosody.release 2026-05-27 15:57:49.731381928 +0200 @@ -1 +1 @@ -13.0.5 +13.0.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/spec/util_ringbuffer_spec.lua new/prosody-13.0.6/spec/util_ringbuffer_spec.lua --- old/prosody-13.0.5/spec/util_ringbuffer_spec.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/spec/util_ringbuffer_spec.lua 2026-05-27 15:57:49.731381928 +0200 @@ -35,6 +35,51 @@ end); end); + describe(":find", function () + local function test_find(b, str, expected) + if expected ~= nil then + assert.equal(expected, b:find(str)); + else + assert.is_nil(b:find(str)); + end + end + + it("works", function () + local b = rb.new(); + assert.truthy(b:write("hello world")); + test_find(b, "world", 7); + end); + + it("works across wraps", function () + local b = rb.new(5); + assert.truthy(b:write("12345")); + assert.equal("123", b:read(3)); + assert.truthy(b:write("678")); + test_find(b, "45678", 1); + test_find(b, "567", 2); + test_find(b, "56", 2); + test_find(b, "5", 2); + test_find(b, "6", 3); + test_find(b, "7", 4); + test_find(b, "8", 5); + test_find(b, "9", nil); + end); + + it("no match when the needle is larger than the buffer", function () + for i = 5, 11 do + local b = rb.new(i); + assert.truthy(b:write("hello")); + test_find(b, "hello world", nil); + end + end); + + it("no match when the needle is an empty string", function () + local b = rb.new(5); + assert.truthy(b:write("hello")); + test_find(b, "", nil); + end); + end); + describe(":sub", function () -- Helper function to compare buffer:sub() with string:sub() local function test_sub(b, x, y) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/dataforms.lua new/prosody-13.0.6/util/dataforms.lua --- old/prosody-13.0.5/util/dataforms.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/dataforms.lua 2026-05-27 15:57:49.731381928 +0200 @@ -252,7 +252,7 @@ err[#err+1] = ("Invalid JID: " .. raw_value); end end - if #result > 0 then + if #result > 0 or #err > 0 then return result, (#err > 0 and t_concat(err, "\n") or nil); elseif required then return nil, "Required value missing"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/datamanager.lua new/prosody-13.0.6/util/datamanager.lua --- old/prosody-13.0.5/util/datamanager.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/datamanager.lua 2026-05-27 15:57:49.731381928 +0200 @@ -668,7 +668,7 @@ if lfs.attributes(getpath(username, host, store_name, typ), "mode") then return store_name; end - elseif lfs.attributes(node, "mode") == "file" then + elseif lfs.attributes(store_dir..node, "mode") == "file" then local file, ext = node:match("^(.*)%.([dalist]+)$"); if ext == typ then return decode(file) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/jsonschema.lua new/prosody-13.0.6/util/jsonschema.lua --- old/prosody-13.0.5/util/jsonschema.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/jsonschema.lua 2026-05-27 15:57:49.731381928 +0200 @@ -126,7 +126,7 @@ end if type(data) == "number" then - if schema.multipleOf and (data == 0 or data % schema.multipleOf ~= 0) then + if schema.multipleOf and data ~= 0 and data % schema.multipleOf ~= 0 then table.insert(errs, mkerr(sloc .. "/luaPattern", iloc, "not a multiple")) return false, errs end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/paths.lua new/prosody-13.0.6/util/paths.lua --- old/prosody-13.0.5/util/paths.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/paths.lua 2026-05-27 15:57:49.731381928 +0200 @@ -62,7 +62,7 @@ package.path = package.path..lua_path_sep..installer_plugin_path..dir_sep.."share"..sub_path.."?.lua"; package.path = package.path..lua_path_sep..installer_plugin_path..dir_sep.."share"..sub_path.."?"..dir_sep.."init.lua"; end - if not string.find(package.path, installer_plugin_path, 1, true) then + if not string.find(package.cpath, installer_plugin_path, 1, true) then package.cpath = package.cpath..lua_path_sep..installer_plugin_path..dir_sep.."lib"..sub_path.."?.so"; end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/pubsub.lua new/prosody-13.0.6/util/pubsub.lua --- old/prosody-13.0.5/util/pubsub.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/pubsub.lua 2026-05-27 15:57:49.731381928 +0200 @@ -305,7 +305,7 @@ return ok, err; end elseif jid_sub and not self:may(node, jid, "be_subscribed") then - local ok, err = self:add_subscription(node, true, jid); + local ok, err = self:remove_subscription(node, true, jid); if not ok then return ok, err; end @@ -511,7 +511,7 @@ if self.config.nodestore then local ok, err = delete_node_in_store(self, node); if not ok then - self.nodes[node] = nil; + self.nodes[node] = node_obj; return ok, err; end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util/timer.lua new/prosody-13.0.6/util/timer.lua --- old/prosody-13.0.5/util/timer.lua 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util/timer.lua 2026-05-27 15:57:49.731381928 +0200 @@ -109,7 +109,7 @@ local function reschedule(id, delay) local current_time = get_time(); local event_time = current_time + delay; - h:reprioritize(id, delay); + h:reprioritize(id, event_time); if next_time == nil or event_time < next_time then next_time = event_time; _add_task(next_time - current_time, _on_timer); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util-src/crypto.c new/prosody-13.0.6/util-src/crypto.c --- old/prosody-13.0.5/util-src/crypto.c 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util-src/crypto.c 2026-05-27 15:57:49.731381928 +0200 @@ -132,7 +132,7 @@ luaL_Buffer sigbuf; size_t msg_len; - const unsigned char* msg = (unsigned char*)lua_tolstring(L, 2, &msg_len); + const unsigned char* msg = (unsigned char*)luaL_checklstring(L, 2, &msg_len); size_t sig_len; unsigned char *sig = NULL; @@ -150,16 +150,13 @@ return 1; } - // COMPAT w/ Lua 5.1 - luaL_buffinit(L, &sigbuf); - sig = memset(luaL_prepbuffer(&sigbuf), 0, sig_len); + sig = (unsigned char *)luaL_buffinitsize(L, &sigbuf, sig_len); if(EVP_DigestSign(md_ctx, sig, &sig_len, msg, msg_len) != 1) { lua_pushnil(L); } else { - luaL_addsize(&sigbuf, sig_len); - luaL_pushresult(&sigbuf); + luaL_pushresultsize(&sigbuf, sig_len); return 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util-src/poll.c new/prosody-13.0.6/util-src/poll.c --- old/prosody-13.0.5/util-src/poll.c 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util-src/poll.c 2026-05-27 15:57:49.731381928 +0200 @@ -139,7 +139,7 @@ #endif #ifdef USE_SELECT - if(fd > FD_SETSIZE) { + if(fd >= FD_SETSIZE) { luaL_pushfail(L); lua_pushstring(L, strerror(EBADF)); lua_pushinteger(L, EBADF); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util-src/pposix.c new/prosody-13.0.6/util-src/pposix.c --- old/prosody-13.0.5/util-src/pposix.c 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util-src/pposix.c 2026-05-27 15:57:49.731381928 +0200 @@ -169,6 +169,7 @@ "local7", "lpr", "mail", + "news", "syslog", "user", "uucp", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util-src/ringbuffer.c new/prosody-13.0.6/util-src/ringbuffer.c --- old/prosody-13.0.5/util-src/ringbuffer.c 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util-src/ringbuffer.c 2026-05-27 15:57:49.731381928 +0200 @@ -82,7 +82,7 @@ size_t i, j; int m; - if(b->rpos == b->wpos) { /* empty */ + if(l > b->blen || l == 0) { /* needle is too large or too small */ return 0; } @@ -99,7 +99,7 @@ } if(m) { - return i + l; + return i + 1; } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prosody-13.0.5/util-src/signal.c new/prosody-13.0.6/util-src/signal.c --- old/prosody-13.0.5/util-src/signal.c 2026-04-29 13:35:49.419142653 +0200 +++ new/prosody-13.0.6/util-src/signal.c 2026-05-27 15:57:49.731381928 +0200 @@ -498,9 +498,10 @@ return 1; } - for(int i = signalfd_num; i > 0; i--) { + for(int i = signalfd_num - 1; i >= 0; i--) { if(signalfds[i].fd == sfd->fd) { - signalfds[i] = signalfds[signalfd_num--]; + signalfds[i] = signalfds[--signalfd_num]; + break; } }
