mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-06-03 02:18:20 +02:00
With recent code starting dbus-daemon with an unsupported auth mechanism let dbus-daemon silently ignore this issue. Clients connecting to this server fails to connect without any descriptive explanation of the root cause, only the message 'Rejected client connection due to lack of memory' error is reported in dbus-daemon verbose log, which is disabled in production environments. With this patch dbus-daemon checks the supported auth mechanisms on startup and shuts down with a descriptive error message, which gives admins an immediate feedback on service startup/restart. Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de> Reviewed-by: Philip Withnall <withnall@endlessm.com> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=99622
102 lines
4.5 KiB
C
102 lines
4.5 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
/* dbus-auth.h Authentication
|
|
*
|
|
* Copyright (C) 2002 Red Hat Inc.
|
|
*
|
|
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
*/
|
|
#ifndef DBUS_AUTH_H
|
|
#define DBUS_AUTH_H
|
|
|
|
#include <dbus/dbus-macros.h>
|
|
#include <dbus/dbus-errors.h>
|
|
#include <dbus/dbus-string.h>
|
|
#include <dbus/dbus-sysdeps.h>
|
|
|
|
DBUS_BEGIN_DECLS
|
|
|
|
typedef struct DBusAuth DBusAuth;
|
|
|
|
typedef enum
|
|
{
|
|
DBUS_AUTH_STATE_WAITING_FOR_INPUT,
|
|
DBUS_AUTH_STATE_WAITING_FOR_MEMORY,
|
|
DBUS_AUTH_STATE_HAVE_BYTES_TO_SEND,
|
|
DBUS_AUTH_STATE_NEED_DISCONNECT,
|
|
DBUS_AUTH_STATE_AUTHENTICATED,
|
|
DBUS_AUTH_STATE_INVALID = -1
|
|
} DBusAuthState;
|
|
|
|
DBUS_PRIVATE_EXPORT
|
|
DBusAuth* _dbus_auth_server_new (const DBusString *guid);
|
|
DBUS_PRIVATE_EXPORT
|
|
DBusAuth* _dbus_auth_client_new (void);
|
|
DBUS_PRIVATE_EXPORT
|
|
DBusAuth* _dbus_auth_ref (DBusAuth *auth);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_unref (DBusAuth *auth);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_set_mechanisms (DBusAuth *auth,
|
|
const char **mechanisms);
|
|
DBUS_PRIVATE_EXPORT
|
|
DBusAuthState _dbus_auth_do_work (DBusAuth *auth);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_get_bytes_to_send (DBusAuth *auth,
|
|
const DBusString **str);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_bytes_sent (DBusAuth *auth,
|
|
int bytes_sent);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_get_buffer (DBusAuth *auth,
|
|
DBusString **buffer);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_return_buffer (DBusAuth *auth,
|
|
DBusString *buffer);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_get_unused_bytes (DBusAuth *auth,
|
|
const DBusString **str);
|
|
DBUS_PRIVATE_EXPORT
|
|
void _dbus_auth_delete_unused_bytes (DBusAuth *auth);
|
|
dbus_bool_t _dbus_auth_needs_encoding (DBusAuth *auth);
|
|
dbus_bool_t _dbus_auth_encode_data (DBusAuth *auth,
|
|
const DBusString *plaintext,
|
|
DBusString *encoded);
|
|
dbus_bool_t _dbus_auth_needs_decoding (DBusAuth *auth);
|
|
dbus_bool_t _dbus_auth_decode_data (DBusAuth *auth,
|
|
const DBusString *encoded,
|
|
DBusString *plaintext);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_set_credentials (DBusAuth *auth,
|
|
DBusCredentials *credentials);
|
|
DBUS_PRIVATE_EXPORT
|
|
DBusCredentials* _dbus_auth_get_identity (DBusAuth *auth);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_set_context (DBusAuth *auth,
|
|
const DBusString *context);
|
|
const char* _dbus_auth_get_guid_from_server(DBusAuth *auth);
|
|
|
|
void _dbus_auth_set_unix_fd_possible(DBusAuth *auth, dbus_bool_t b);
|
|
dbus_bool_t _dbus_auth_get_unix_fd_negotiated(DBusAuth *auth);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_is_supported_mechanism(DBusString *name);
|
|
DBUS_PRIVATE_EXPORT
|
|
dbus_bool_t _dbus_auth_dump_supported_mechanisms(DBusString *buffer);
|
|
|
|
DBUS_END_DECLS
|
|
|
|
#endif /* DBUS_AUTH_H */
|