1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00
samba-mirror/lib
Ralph Boehme f8f3b33ea5 lib/replace: prefer <sys/xattr.h> over <attr/xattr.h>
This prevents the following compile error that may happens if "system/filesys.h"
is included before "system/capability.h" on Ubuntu 16.04:

  [1802/4407] Compiling source3/lib/system.c
  In file included from ../../lib/replace/system/filesys.h:112:0,
                   from ../../source3/include/vfs.h:29,
                   from ../../source3/include/smb.h:150,
                   from ../../source3/include/includes.h:284,
                   from ../../source3/lib/system.c:23:
  /usr/include/x86_64-linux-gnu/sys/xattr.h:32:3: error: expected identifier before numeric constant
     XATTR_CREATE = 1, /* set value, fail if attr already exists.  */
     ^

The above error is from compiling a source tree which includes a change that
adds an include "system/filesys.h" to the top of "source3/include/vfs.h".

"source3/lib/system.c" has the following includes:

  #include "includes.h"
  #include "system/syslog.h"
  #include "system/capability.h"
  #include "system/passwd.h"
  #include "system/filesys.h"
  #include "../lib/util/setid.h"

The first include of "includes.h" pulls in "vfs.h" which will pull in
"system/filesys.h" with the mentioned change. "system/filesys.h" pulls in
<attr/xattr.h> which has this define

  #define XATTR_CREATE  0x1

Later in "source3/lib/system.c" "system/capability.h" is included which includes
<sys/xattr.h> on Ubuntu 16.04 (not in later versions of glibc). This defines the
XATTR_* values as an enum:

  enum {
    XATTR_CREATE = 1,     /* set value, fail if attr already exists.  */
    XATTR_REPLACE = 2     /* set value, fail if attr does not exist.  */
  };

The previous define of XATTR_CREATE as 1 makes this

  enum {
    1 = 1,     /* set value, fail if attr already exists.  */
    2 = 2     /* set value, fail if attr does not exist.  */
  };

which is invalid C. The compiler error diagnostic is a bit confusing, as it
prints the original enum from the include file.

See also:

<https://bugs.freedesktop.org/show_bug.cgi?id=78741>
<https://bugs.launchpad.net/ubuntu/+source/attr/+bug/1288091>
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=756097>

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Björn Baumbach <bb@samba.org>
2019-12-18 10:13:41 +00:00
..
addns lib/addns: clang: Fix 'Assigned value is garbage or undefined' 2019-07-24 21:33:21 +00:00
afs s3:param: make "servicename" a substituted option 2019-11-27 10:25:37 +00:00
async_req build: Do not build selftest binaries for builds without --enable-selftest 2019-11-22 11:48:59 +00:00
audit_logging build: Do not build selftest binaries for builds without --enable-selftest 2019-11-22 11:48:59 +00:00
compression lib:compression: Fix undefined behavior in lzxpress 2018-11-22 22:13:27 +01:00
crypto lib:crypto: Build intel aes-ni only if GnuTLS doesn't provide AES CMAC 2019-12-10 20:30:57 +00:00
dbwrap dbwrap: Don't set rec->value in dbwrap_do_locked() 2019-11-22 23:57:46 +00:00
fuzzing lib/fuzzing and librpc: Do not generate fuzzers for pointless targets 2019-12-18 06:39:26 +00:00
krb5_wrap lib/krb5_wrap: Remove unused smb_krb5_get_allowed_weak_crypto() 2019-12-11 22:18:47 +00:00
ldb lib ldb: fix use after free 2019-12-18 06:39:26 +00:00
ldb-samba pyldb: fork pyldb_Ldb_AsLdbContext macro to reflect unsafeness 2019-07-10 04:32:13 +00:00
mscat lib:mscat: Add missing return check for error in dumpsmcat 2019-05-24 06:07:08 +00:00
param param: remove now unused lp_string() 2019-11-27 10:25:38 +00:00
printer_driver lib:printer_driver: Retrieve Class value 2019-01-28 15:44:18 +01:00
pthreadpool build: Do not build selftest binaries for builds without --enable-selftest 2019-11-22 11:48:59 +00:00
replace lib/replace: prefer <sys/xattr.h> over <attr/xattr.h> 2019-12-18 10:13:41 +00:00
smbconf waf: add library dependency for sendfile on Solaris 2019-02-17 13:33:15 +01:00
socket lib:socket: If returning early, set ifaces 2018-10-28 00:35:34 +02:00
talloc talloc: Release talloc 2.3.1 2019-11-18 10:11:41 +00:00
tdb tdb: Release tdb 1.4.3 2019-11-18 10:11:41 +00:00
tdb_wrap tdb_wrap: Use a struct initializer 2015-07-23 14:39:18 +02:00
tdr lib: Fix 1354521 Unchecked return value 2016-03-01 21:49:44 +01:00
tevent tevent: Release tevent 0.10.2 2019-11-18 11:44:08 +00:00
texpect build: Do not build selftest binaries for builds without --enable-selftest 2019-11-22 11:48:59 +00:00
torture lib/torture: protect torture_assert[_goto]() with a do { } while(0) block 2019-09-10 17:38:40 +00:00
tsocket Spelling fixes s/implentation/implementation/ 2019-09-01 22:21:28 +00:00
util lib: spelling fix 2019-12-09 19:23:10 +00:00
README various: Remove references to about to be deleted thirdparty/dnspython 2018-12-11 20:07:18 +01:00
wscript_build Remove 'external' python module support code - use the third_party directory instead. 2015-03-06 04:41:48 +01:00

compression - Various compression algorithms (MSZIP, lzxpress)
popt - Command-line option parsing library
replace - Provides replacements for standard (POSIX, C99) functions 
          not provided by the host platform.
subunit - Utilities and bindings for working with the Subunit test result 
          reporting protocol.
talloc - Hierarchical pool based memory allocator 
tdb - Simple but fast key/value database library, supporting multiple writers
torture - Simple unit testing helper library