Fix a long standing bug in pid_get_parent on OpenBSD where kp wasn't properly

allocated and the function could randomly fail.
Already merged upstream.

with robert@
This commit is contained in:
ajacoutot 2019-05-13 19:28:27 +00:00
parent 783b4d996a
commit 5ef2c9da4b
6 changed files with 105 additions and 17 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.225 2018/09/04 12:46:27 espie Exp $
# $OpenBSD: Makefile,v 1.226 2019/05/13 19:28:27 ajacoutot Exp $
# Everything is a Freaking GLib/GTK+ problem
CFLAGS += -g
@ -9,11 +9,12 @@ COMMENT-cups= gtk+2 CUPS print backend
GNOME_VERSION= 2.24.32
GNOME_PROJECT= gtk+
REVISION= 0
PKGNAME-main= gtk+2-${GNOME_VERSION}
PKGNAME-cups= gtk+2-cups-${GNOME_VERSION}
REVISION-main= 2
REVISION-main= 3
REVISION-cups= 1
CATEGORIES= x11 devel
@ -33,12 +34,12 @@ WANTLIB += Xrandr Xrender atk-1.0 cairo expat ffi fontconfig
WANTLIB += freetype gdk_pixbuf-2.0 gio-2.0 glib-2.0 gmodule-2.0
WANTLIB += gobject-2.0 graphite2 gthread-2.0 harfbuzz m pango-1.0
WANTLIB += pangocairo-1.0 pangoft2-1.0 pcre pixman-1 png pthread
WANTLIB += xcb xcb-render xcb-shm z iconv intl
WANTLIB += xcb xcb-render xcb-shm z iconv intl fribidi
WANTLIB-main += ${WANTLIB} c
WANTLIB-cups += ${WANTLIB}
WANTLIB-cups += avahi-client avahi-common cups dbus-1 gdk-x11-2.0 gmp
WANTLIB-cups += avahi-client avahi-common cups dbus-1 gdk-x11-2.0 gmp fribidi
WANTLIB-cups += gnutls gtk-x11-2.0 hogweed idn2 nettle p11-kit tasn1 unistring
MULTI_PACKAGES= -main -cups

View File

@ -1,4 +1,9 @@
$OpenBSD: patch-gtk_gtkmountoperation-x11_c,v 1.2 2014/04/25 15:11:55 ajacoutot Exp $
$OpenBSD: patch-gtk_gtkmountoperation-x11_c,v 1.3 2019/05/13 19:28:27 ajacoutot Exp $
From 0334ea1c889331adb02d361670e24b3f85b5b0d6 Mon Sep 17 00:00:00 2001
From: Antoine Jacoutot <ajacoutot@gnome.org>
Date: Mon, 13 May 2019 20:47:46 +0200
Subject: [PATCH] pid_get_parent: fix for OpenBSD
From ad9da2727d3e3243fd052c9feb0c55645e87d384 Mon Sep 17 00:00:00 2001
From: Jonathan Matthew <jmatthew@openbsd.org>
@ -25,8 +30,9 @@ From: Antoine Jacoutot <ajacoutot@gnome.org>
Date: Fri, 25 Apr 2014 14:37:59 +0200
Subject: openbsd: properly set len for gtkmountoperation-x11
--- gtk/gtkmountoperation-x11.c.orig Wed Apr 16 16:16:11 2014
+++ gtk/gtkmountoperation-x11.c Wed Apr 16 16:17:59 2014
Index: gtk/gtkmountoperation-x11.c
--- gtk/gtkmountoperation-x11.c.orig
+++ gtk/gtkmountoperation-x11.c
@@ -43,9 +43,6 @@
#include <errno.h>
@ -37,7 +43,7 @@ Subject: openbsd: properly set len for gtkmountoperation-x11
#include <sys/sysctl.h>
#endif
@@ -724,6 +721,100 @@ pid_get_command_line (GPid pid)
@@ -724,6 +721,103 @@ pid_get_command_line (GPid pid)
}
/* ---------------------------------------------------------------------------------------------------- */
@ -49,7 +55,7 @@ Subject: openbsd: properly set len for gtkmountoperation-x11
+static GPid
+pid_get_parent (GPid pid)
+{
+ struct kinfo_proc kp;
+ struct kinfo_proc *kp;
+ size_t len;
+ GPid ppid;
+
@ -60,11 +66,14 @@ Subject: openbsd: properly set len for gtkmountoperation-x11
+ return (-1);
+ mib[5] = (len / sizeof(struct kinfo_proc));
+
+ if (sysctl (mib, G_N_ELEMENTS (mib), &kp, &len, NULL, 0) < 0)
+ kp = g_malloc0 (len);
+
+ if (sysctl (mib, G_N_ELEMENTS (mib), kp, &len, NULL, 0) < 0)
+ return -1;
+
+ ppid = kp.p_ppid;
+ ppid = kp->p_ppid;
+
+ g_free (kp);
+ return ppid;
+}
+

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.210 2019/04/16 08:11:10 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.211 2019/05/13 19:28:28 ajacoutot Exp $
# XXX add support for libcloudproviders?
@ -21,6 +21,10 @@ PKGNAME-cups= gtk+3-cups-${GNOME_VERSION}
PKGNAME-cloudprint= gtk+3-cloudprint-${GNOME_VERSION}
PKGNAME-guic= gtk-update-icon-cache-${GNOME_VERSION}
REVISION-main= 0
REVISION-cups= 0
REVISION-cloudprint= 0
CATEGORIES= x11 devel
SHARED_LIBS += gdk-3 2201.1 # 2404.4
@ -59,7 +63,7 @@ WANTLIB-main += X11 Xcomposite Xcursor Xdamage Xext Xfixes Xi
WANTLIB-main += Xinerama Xrandr Xrender atk-1.0 atk-bridge-2.0 atspi
WANTLIB-main += cairo cairo-gobject dbus-1 expat fontconfig freetype
WANTLIB-main += graphite2 gthread-2.0 harfbuzz pango-1.0 pangocairo-1.0
WANTLIB-main += pangoft2-1.0 pixman-1 xcb xcb-render xcb-shm png16
WANTLIB-main += pangoft2-1.0 pixman-1 xcb xcb-render xcb-shm png
LIB_DEPENDS-cups= ${LIB_DEPENDS} \
print/cups,-libs \
@ -71,7 +75,7 @@ WANTLIB-cups += X11 Xcomposite Xcursor Xdamage Xext Xfixes Xi
WANTLIB-cups += Xinerama Xrandr Xrender atk-1.0 atk-bridge-2.0 atspi
WANTLIB-cups += cairo cairo-gobject dbus-1 expat fontconfig freetype
WANTLIB-cups += graphite2 gthread-2.0 harfbuzz pango-1.0 pangocairo-1.0
WANTLIB-cups += pangoft2-1.0 pixman-1 xcb xcb-render png16
WANTLIB-cups += pangoft2-1.0 pixman-1 xcb xcb-render png
WANTLIB-cups += avahi-client avahi-common cups gdk-3 gmp xcb-shm
WANTLIB-cups += gnutls gtk-3 hogweed nettle p11-kit tasn1 unistring
@ -88,7 +92,7 @@ WANTLIB-cloudprint += cairo cairo-gobject dbus-1 expat fontconfig freetype
WANTLIB-cloudprint += graphite2 gthread-2.0 harfbuzz pango-1.0 pangocairo-1.0
WANTLIB-cloudprint += pangoft2-1.0 pixman-1 xcb xcb-render
WANTLIB-cloudprint += gdk-3 gtk-3 json-glib-1.0 rest-0.7 soup-2.4 soup-gnome-2.4
WANTLIB-cloudprint += sqlite3 xml2 lzma xcb-shm png16
WANTLIB-cloudprint += sqlite3 xml2 lzma xcb-shm png
LIB_DEPENDS-guic= graphics/gdk-pixbuf2
RUN_DEPENDS-guic= x11/hicolor-icon-theme

View File

@ -0,0 +1,36 @@
$OpenBSD: patch-gtk_gtkmountoperation-x11_c,v 1.14 2019/05/13 19:28:28 ajacoutot Exp $
From 0334ea1c889331adb02d361670e24b3f85b5b0d6 Mon Sep 17 00:00:00 2001
From: Antoine Jacoutot <ajacoutot@gnome.org>
Date: Mon, 13 May 2019 20:47:46 +0200
Subject: [PATCH] pid_get_parent: fix for OpenBSD
Index: gtk/gtkmountoperation-x11.c
--- gtk/gtkmountoperation-x11.c.orig
+++ gtk/gtkmountoperation-x11.c
@@ -720,7 +720,7 @@ pid_get_command_line (GPid pid)
static GPid
pid_get_parent (GPid pid)
{
- struct kinfo_proc kp;
+ struct kinfo_proc *kp;
size_t len;
GPid ppid;
@@ -731,11 +731,14 @@ pid_get_parent (GPid pid)
return (-1);
mib[5] = (len / sizeof(struct kinfo_proc));
- if (sysctl (mib, G_N_ELEMENTS (mib), &kp, &len, NULL, 0) < 0)
+ kp = g_malloc0 (len);
+
+ if (sysctl (mib, G_N_ELEMENTS (mib), kp, &len, NULL, 0) < 0)
return -1;
- ppid = kp.p_ppid;
+ ppid = kp->p_ppid;
+ g_free (kp);
return ppid;
}

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.9 2019/05/09 13:42:04 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.10 2019/05/13 19:28:28 ajacoutot Exp $
# XXX: PORTROACH is set at the end of this file to override gnome.port.mk
@ -24,6 +24,8 @@ PKGNAME-cloudprint= gtk+4-cloudprint-${GNOME_VERSION}
PKGNAME-guic= gtk4-update-icon-cache-${GNOME_VERSION}
PKGNAME-media= gtk+4-media-${GNOME_VERSION}
REVISION-main= 0
CATEGORIES= x11 devel
SHARED_LIBS += gtk-4 1.0 # 0.9300.0

View File

@ -0,0 +1,36 @@
$OpenBSD: patch-gtk_gtkmountoperation-x11_c,v 1.1 2019/05/13 19:28:28 ajacoutot Exp $
From 0334ea1c889331adb02d361670e24b3f85b5b0d6 Mon Sep 17 00:00:00 2001
From: Antoine Jacoutot <ajacoutot@gnome.org>
Date: Mon, 13 May 2019 20:47:46 +0200
Subject: [PATCH] pid_get_parent: fix for OpenBSD
Index: gtk/gtkmountoperation-x11.c
--- gtk/gtkmountoperation-x11.c.orig
+++ gtk/gtkmountoperation-x11.c
@@ -736,7 +736,7 @@ pid_get_command_line (GPid pid)
static GPid
pid_get_parent (GPid pid)
{
- struct kinfo_proc kp;
+ struct kinfo_proc *kp;
size_t len;
GPid ppid;
@@ -747,11 +747,14 @@ pid_get_parent (GPid pid)
return (-1);
mib[5] = (len / sizeof(struct kinfo_proc));
- if (sysctl (mib, G_N_ELEMENTS (mib), &kp, &len, NULL, 0) < 0)
+ kp = g_malloc0 (len);
+
+ if (sysctl (mib, G_N_ELEMENTS (mib), kp, &len, NULL, 0) < 0)
return -1;
- ppid = kp.p_ppid;
+ ppid = kp->p_ppid;
+ g_free (kp);
return ppid;
}