[Samba] SmartOS: nss_wrapper: conflicting types

Nigel W nigel.w at nosun.ca
Sun Jan 25 10:50:27 MST 2015


Hello,

I am attempting to build Samba 4.2.0 RC4 (I have not tried previous
versions yet) and after applying attached patches the build fails with
(full build and configure output attached).

[2006/3812] Compiling lib/nss_wrapper/nss_wrapper.c
../lib/nss_wrapper/nss_wrapper.c:2405:5: error: conflicting types for
'gethostby
name_r'
In file included from ../lib/nss_wrapper/nss_wrapper.c:65:0:
/usr/include/netdb.h:238:17: note: previous declaration of
'gethostbyname_r' was
 here

The prototype in Samba source is:

int gethostbyname_r(const char *name,
                    struct hostent *ret,
                    char *buf, size_t buflen,
                    struct hostent **result, int *h_errnop)

Whereas the prototype in the system header is:

struct hostent  *gethostbyname_r
        (const char *, struct hostent *, char *, int, int *h_errnop);

I see that this has been discussed before on samba-technical for Solaris
11.1 which shares a common ancestor with SmartOS/illumos.
https://lists.samba.org/archive/samba-technical/2014-October/102829.html

I have checked the uid_wrapper git repo (the 1.1.0 tag) and do not see
tests of the prototype as indicated in the message.  Am I missing where
this was done?  If it is not done, how do we proceed in getting this issue
fixed, because as far as I can tell this is a show stopper for 4.2 on
SmartOS and presumably the illumos family and with 3.6 being EOL'd SmartOS
will not have any supported Samba version available.

Thanks,
-------------- next part --------------
--- ../orig/samba-4.2.0rc4/lib/texpect/texpect.c        2014-10-01 09:17:32.000000000 +0000
+++ lib/texpect/texpect.c       2015-01-25 02:47:54.666545647 +0000
@@ -63,6 +63,8 @@
 #include <errno.h>
 #include <err.h>

+#include <signal.h>
+
 struct command {
        enum { CMD_EXPECT = 0, CMD_SEND, CMD_PASSWORD } type;
        unsigned int lineno;
-------------- next part --------------
--- ../orig/samba-4.2.0rc4/source3/lib/unix_msg/unix_msg.c      2014-10-01 09:17:32.000000000 +0000
+++ source3/lib/unix_msg/unix_msg.c     2015-01-25 02:59:29.958547508 +0000
@@ -505,7 +505,9 @@
         * Note: No need to check for overflow here,
         * since cmsg will store <= INT8_MAX fds.
         */
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
        msglen += cmsg_space;
+#endif

        data_len = iov_buflen(iov, iovlen);
        if (data_len == -1) {
@@ -593,7 +595,9 @@
        return 0;

 fail:
+#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
        close_fd_array(fds_copy, num_fds);
+#endif
        return ret;
 }




More information about the samba mailing list