Add missing _permit_setugid for swaylock.

Not sure if placed in the most ascetically pleasing place, but will do
for a dirty fix. Saw this broke after updating the home computer,
laptop, and the router/ap and doing some testing for sddm.

Concerns, comments, testing and/or okays welcome.

Hope this helps. Happy hacking everyone. May you have a good one.
--
yaydn


Index: Makefile
===================================================================
RCS file: /cvs/ports/wayland/swaylock/Makefile,v
diff -u -p -u -p -r1.8 Makefile
--- Makefile    6 May 2026 13:03:19 -0000       1.8
+++ Makefile    19 Oct 2026 17:55:45 -0000
@@ -1,6 +1,7 @@
 COMMENT =      screen locker for Wayland
 
 V =            1.8.5
+REVISION =     0
 DISTNAME =     swaylock-${V}
 SITES =                
https://github.com/swaywm/swaylock/releases/download/v${V}/
 
Index: patches/patch-main_c
===================================================================
RCS file: /cvs/ports/wayland/swaylock/patches/patch-main_c,v
diff -u -p -u -p -r1.4 patch-main_c
--- patches/patch-main_c        10 Nov 2025 12:05:44 -0000      1.4
+++ patches/patch-main_c        19 Oct 2026 17:55:45 -0000
@@ -11,7 +11,25 @@ Index: main.c
  #include "background-image.h"
  #include "cairo.h"
  #include "comm.h"
-@@ -322,23 +321,6 @@ static cairo_surface_t *select_image(struct swaylock_s
+@@ -26,6 +25,17 @@
+ #include "swaylock.h"
+ #include "ext-session-lock-v1-client-protocol.h"
+ 
++#if defined(__OpenBSD__)
++#include <sys/stat.h>
++
++/* OpenBSD: set[ug]id binary MUST say so in this var */
++__attribute__((visibility("default"))) mode_t _permit_setugid = S_ISGID;
++#endif
++
++/*!
++ * Params sent by the peer.
++ */
++
+ static uint32_t parse_color(const char *color) {
+       if (color[0] == '#') {
+               ++color;
+@@ -322,23 +332,6 @@ static cairo_surface_t *select_image(struct swaylock_s
        return default_image;
  }
  
@@ -35,7 +53,7 @@ Index: main.c
  static void load_image(char *arg, struct swaylock_state *state) {
        // [[<output>]:]<path>
        struct swaylock_image *image = calloc(1, sizeof(struct swaylock_image));
-@@ -372,21 +354,12 @@ static void load_image(char *arg, struct swaylock_stat
+@@ -372,21 +365,12 @@ static void load_image(char *arg, struct swaylock_stat
                }
        }
  
@@ -57,7 +75,7 @@ Index: main.c
  
        // Load the actual image
        image->cairo_surface = load_background_image(image->path);
-@@ -956,32 +929,57 @@ static bool file_exists(const char *path) {
+@@ -956,32 +940,57 @@ static bool file_exists(const char *path) {
        return path && access(path, R_OK) != -1;
  }
  

Attachment: swaylock-1.8.5p0.diff
Description: Binary data

Reply via email to