mirror of
https://github.com/flatpak/flatpak.git
synced 2026-03-28 03:45:10 -04:00
flatpak_close_fds_workaround() wasn't technically async-signal-safe, because the requirement for sysconf() to be async-signal-safe was removed in POSIX.1-2008. It could also leave high fds open in some cases: in practice sysconf(_SC_OPEN_MAX) returns the soft resource limit, but if our resource limit has been reduced by an ancestor process, we could conceivably still have fds open and inherited above that number. We can fix this by using g_fdwalk_set_cloexec() with GLib >= 2.79.2, or the backport in libglnx with older GLib. This uses close_range() if possible, falling back to rummaging in /proc with async-signal-safe syscalls. Signed-off-by: Simon McVittie <smcv@collabora.com>
41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
/*
|
|
* Copyright © 2019 Red Hat, Inc
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Authors:
|
|
* Alexander Larsson <alexl@redhat.com>
|
|
*/
|
|
|
|
#ifndef __FLATPAK_UTILS_BASE_H__
|
|
#define __FLATPAK_UTILS_BASE_H__
|
|
|
|
#include <glib.h>
|
|
#include <gio/gio.h>
|
|
|
|
#ifndef G_DBUS_METHOD_INVOCATION_HANDLED
|
|
# define G_DBUS_METHOD_INVOCATION_HANDLED TRUE
|
|
# define G_DBUS_METHOD_INVOCATION_UNHANDLED FALSE
|
|
#endif
|
|
|
|
char *flatpak_get_timezone (void);
|
|
|
|
char * flatpak_readlink (const char *path,
|
|
GError **error);
|
|
char * flatpak_resolve_link (const char *path,
|
|
GError **error);
|
|
char * flatpak_canonicalize_filename (const char *path);
|
|
|
|
#endif /* __FLATPAK_UTILS_BASE_H__ */
|