mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-04-25 00:20:48 +02:00
If we combine the dbus_new0, populating the DBusString members and the actual creation of the file, RAII-style, then we never need to worry about a partially-initialized or uninitialized DBusNonceFile becoming visible to a caller. Similarly, if we combine deletion of the file, freeing of the DBusString members, freeing the structure and clearing the pointer to the structure, then we can never be in an inconsistent situation, except during the actual implementation of _dbus_noncefile_delete(). Note that there are two implementations each of _dbus_noncefile_create() and _dbus_noncefile_delete(). This is because on Unix we must use a subdirectory of _dbus_get_tmpdir() (the nonce filename is not created atomically, so that would not be safe), while on Windows we use the directory directly (the Windows temp directory is private to a user, so this is OK). Signed-off-by: Simon McVittie <smcv@collabora.com> Reviewed-by: Philip Withnall <withnall@endlessm.com> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=103597
67 lines
2.3 KiB
C
67 lines
2.3 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
/* dbus-nonce.h Nonce handling functions used by nonce-tcp (internal to D-Bus implementation)
|
|
*
|
|
* Copyright (C) 2009 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
|
|
*
|
|
* Licensed under the Academic Free License version 2.1
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
*/
|
|
#ifndef DBUS_NONCE_H
|
|
#define DBUS_NONCE_H
|
|
|
|
#include <dbus/dbus-macros.h>
|
|
#include <dbus/dbus-types.h>
|
|
#include <dbus/dbus-errors.h>
|
|
#include <dbus/dbus-string.h>
|
|
#include <dbus/dbus-sysdeps.h>
|
|
|
|
DBUS_BEGIN_DECLS
|
|
|
|
typedef struct DBusNonceFile DBusNonceFile;
|
|
|
|
// server
|
|
|
|
dbus_bool_t _dbus_noncefile_create (DBusNonceFile **noncefile_out,
|
|
DBusError *error);
|
|
|
|
dbus_bool_t _dbus_noncefile_delete (DBusNonceFile **noncefile_location,
|
|
DBusError *error);
|
|
|
|
dbus_bool_t _dbus_noncefile_check_nonce (DBusSocket fd,
|
|
const DBusNonceFile *noncefile,
|
|
DBusError *error);
|
|
|
|
const DBusString* _dbus_noncefile_get_path (const DBusNonceFile *noncefile);
|
|
|
|
DBusSocket _dbus_accept_with_noncefile(DBusSocket listen_fd,
|
|
const DBusNonceFile *noncefile);
|
|
|
|
// shared
|
|
|
|
dbus_bool_t _dbus_read_nonce (const DBusString *fname,
|
|
DBusString *nonce,
|
|
DBusError *error);
|
|
|
|
// client
|
|
|
|
dbus_bool_t _dbus_send_nonce (DBusSocket fd,
|
|
const DBusString *noncefile,
|
|
DBusError *error);
|
|
|
|
DBUS_END_DECLS
|
|
|
|
#endif /* DBUS_NONCE_H */
|