DEBUG: Fix build without journald

Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Use KRB5_CFLAGS where appropriate

There are cases when MIT Kerberos is installed with includes in a subdirectory of /usr/include (or /usr/local/include).

In such case we have to properly use KRB5_CFLAGS to reach them.

https://fedorahosted.org/sssd/ticket/2226

Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
ad_account_can_shortcut(): return bool instead of errno

Resolves:
https://fedorahosted.org/sssd/ticket/2210

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
NSS: Continue if there is no port

Reviewed-by: Pavel Březina <pbrezina@redhat.com>
IPA: Don't call tevent_req_post outside _send

Reviewed-by: Pavel Březina <pbrezina@redhat.com>
SPEC: Fix packaging rpms on OSes without systemd

Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Use HW instead of processor name as build arch

Use "machine hardware name" instead of "processor name" as the build
architecture in bashrc_sssd.

This fixes determining architecture on systems where "processor name" is
not available and is reported by uname(1) as "unknown", e.g. Debian.

Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Michal Žídek <mzidek@redhat.com>
Use functions, not aliases in bashrc_sssd

Use functions instead of aliases as commands in bashrc_sssd.
This allows easier use of bashrc_sssd in scripts, since aliases are
disabled by default for non-interactive Bash shells.

Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Michal Žídek <mzidek@redhat.com>
Handle unbound variables in bashrc_sssd

Explicitly substitute empty strings for unbound variables in bashrc_sssd
to support its use in scripts with unbound variable detection enabled
(set -u).

Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Michal Žídek <mzidek@redhat.com>
Clarify CFLAGS handling in bashrc_sssd

Clarify comment on CFLAGS contents in "warn" description.

Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
Reviewed-by: Michal Žídek <mzidek@redhat.com>
DEBUG: Fix crash after fallback from journal log

if journal_send fail we should not use the same va_list in the fallback
functions. va_list can be modiefied and it may cause crashes im some
cases e.g. printing string.

This patch use copy of initialised va_list for debug_vprintf function.

Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
IPA: Don't fail if apply_subdomain_homedir returns ENOENT

Reviewed-by: Pavel Reichl <preichl@redhat.com>
Fix warning unused variable ap_fallback

The variable ap_fallback is used only if sssd is build with journald, but
this variable was declared outside of "#ifdef WITH_JOURNALD"

Reviewed-by: Pavel Březina <pbrezina@redhat.com>
sbus: Add meta data structures and code generator

These metadata structures hold the information about all the
details of a DBus interface. They are typically generated from
the canonical XML form of the DBus interface, although they
may also be hand crafted.

Add some handy functions for looking up methods, props, signals,
in the metadata of an interface. Currently lookups are just done
by looking through an array. If performance becomes an issue (ie:
very large interfaces) it would be really easy to sort things
and use bsearch().

Later commits will include some definitions using this metadata
and related functions.

DBus interfaces are defined here:

http://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format

The introspection data format has become the standard way to represent a
DBus interface. For many examples see /usr/share/dbus-1/interfaces/ on a
typical linux machine.

A word about annotations. These are extra flags or values that can be
assigned to anything. So far, the codegen supports this annotation:

org.freedesktop.DBus.GLib.CSymbol
 - An annotation specified in the specification that tells us what C symbol
   to generate for a given interface or method. By default the codegen will
   build up a symbol name from the DBus name.

It is possible to confuse the code generator into producing invalid
C code (with strange method names, for example), but the C compiler
catches such silliness right away.

Add tests testing basic features of the codegen and poking through
the metadata it creates. Also test the metadata lookup functions.

Generated code is checked in for easy discovery.

An example of the XML interface definitions can be found at:

  src/tests/sbus_codegen_tests.xml

And an example of the generated header can be found here:

  src/tests/sbus_codegen_tests_generated.h

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
sbus: Add sbus_vtable and update codegen to support it

Each interface is a vtable structure derived from
sbus_vtable, in the sense that it has an sbus_vtable
struct as its first argument. This lets us upcast the
interface vtable structure to an sbus_vtable and dispatch
to it dynamically and cleanly.

The interface metadata contains information about which
vtable offset in the interface metadata should be dispatched
to for a given function. This is a common scheme, not only
among dbus implementations, but also compiled languages.

Currently all the vtable functions are of type
sbus_msg_handler_fn. These are the handlers we are familiar
with and perform raw processing of the message. Later commits
will introduce type safe handlers that levelage compile checking
and automatic argument packing/unpacking.

Although this may seem contrived now, the remainder of the
dbus infrastructure work will build on this, including
ofd.Properties, ofd.ObjectManager, ofd.Introspect, compiler
checked type safe unpacking/packing, etc.

The codegen now generates vtable structures for each interface
along-side the metadata, and fills in vtable offsets
appropriately.

It is obviously still possible to hand-craft such vtables and
metadata if needed for a special case.

Once again examples output can be found at:

  src/tests/sbus_codegen_tests_generated.h

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
nss: Stop using one DBus interface with totally different methods

This is an incorrect use of DBus, where we use a single interface
name with completely different sets of methods.

Easily fixed.

Once the vtable stuff is in use then this would be automatically
detected and fail to build.

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
sbus: Rework sbus to use interface metadata and vtables

Previous commits added support for interface metadata and
handler vtables. This commit ports sbus_dbus_connection to
use them.

Port the internal uses of dbus to use the new scheme in a
very minimal way. Further cleanup is possible here.

This commit provides basic definitions of the internal
dbus interfaces. The interfaces aren't fully defined, as the
handlers will continue to unpack manually, and often overload
DBus methods with different arguments (which is rather
unorthodox, but not the end of the world).

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
sbus: Generate constants from interface definitions

This is not strictly necessary, but avoids duplicating data
in mulitple places, and makes the interface definitions
benefit dbus callers (a little).

After applying this commit you may need to 'make clean' as
the codegen has changed.

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
sbus: Use constants to make dbus calls

This allows us to remove duplicated information, and have the
compiler check that when an method name is changed or removed
the callers are updated.

Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Reviewed-by: Sumit Bose <sbose@redhat.com>
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
providers: Fix types passed to dbus varargs functions

Fix some incorrect types passed to dbus_message_get_args(),
dbus_message_append_args() or functions accepting similar
varargs and types.

In particular sizeof(bool) != sizeof(dbus_bool_t) on most
platforms. This probably only worked because the compiler
was aligning stack variables and so writing off the end of
one of them wasn't the end of the world.

In addition fix cases where int != int32_t != uint32_t.
Although these will work on many common platforms, assuming
these are interchangeable is not cross platform safe.