patch from elrond for rpcclient shareinfo command (netr_share_info) at
authorLuke Leighton <lkcl@samba.org>
Mon, 21 Feb 2000 20:45:10 +0000 (20:45 +0000)
committerLuke Leighton <lkcl@samba.org>
Mon, 21 Feb 2000 20:45:10 +0000 (20:45 +0000)
info level 502 (contains an SD!  cool!)

autoconf update to detect SETUIDX etc.

15 files changed:
source/configure
source/configure.in
source/include/config.h.in
source/include/proto.h
source/include/rpc_client_proto.h
source/include/rpc_parse_proto.h
source/include/rpc_srvsvc.h
source/include/winbindd_proto.h
source/rpc_client/cli_srvsvc.c
source/rpc_parse/parse_sec.c
source/rpc_parse/parse_srv.c
source/rpc_server/srv_srvsvc.c
source/rpcclient/cmd_srvsvc.c
source/rpcclient/net_cmds.c
source/tests/summary.c

index a07e2b55d2034a511c0b2c90a6845d9211aae575..88b90ffb821d431cd078bae9df5fd574f121a762 100755 (executable)
@@ -8501,8 +8501,181 @@ EOF
 
 fi
 
+################################################
+# look for a method of setting the effective uid
+seteuid=no;
+if test $seteuid = no; then
+echo $ac_n "checking for setresuid""... $ac_c" 1>&6
+echo "configure:8510: checking for setresuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETRESUID'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  samba_cv_USE_SETRESUID=cross
+else
+  cat > conftest.$ac_ext <<EOF
+#line 8519 "configure"
+#include "confdefs.h"
+
+#define AUTOCONF_TEST 1
+#define USE_SETRESUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"
+EOF
+if { (eval echo configure:8527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  samba_cv_USE_SETRESUID=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  samba_cv_USE_SETRESUID=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$samba_cv_USE_SETRESUID" 1>&6
+if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
+    seteuid=yes;cat >> confdefs.h <<\EOF
+#define USE_SETRESUID 1
+EOF
+
+fi
+fi
+
+
+if test $seteuid = no; then
+echo $ac_n "checking for setreuid""... $ac_c" 1>&6
+echo "configure:8553: checking for setreuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETREUID'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  samba_cv_USE_SETREUID=cross
+else
+  cat > conftest.$ac_ext <<EOF
+#line 8562 "configure"
+#include "confdefs.h"
+
+#define AUTOCONF_TEST 1
+#define USE_SETREUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"
+EOF
+if { (eval echo configure:8570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  samba_cv_USE_SETREUID=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  samba_cv_USE_SETREUID=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$samba_cv_USE_SETREUID" 1>&6
+if test x"$samba_cv_USE_SETREUID" = x"yes"; then
+    seteuid=yes;cat >> confdefs.h <<\EOF
+#define USE_SETREUID 1
+EOF
+
+fi
+fi
+
+if test $seteuid = no; then
+echo $ac_n "checking for seteuid""... $ac_c" 1>&6
+echo "configure:8595: checking for seteuid" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETEUID'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  samba_cv_USE_SETEUID=cross
+else
+  cat > conftest.$ac_ext <<EOF
+#line 8604 "configure"
+#include "confdefs.h"
+
+#define AUTOCONF_TEST 1
+#define USE_SETEUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"
+EOF
+if { (eval echo configure:8612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  samba_cv_USE_SETEUID=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  samba_cv_USE_SETEUID=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$samba_cv_USE_SETEUID" 1>&6
+if test x"$samba_cv_USE_SETEUID" = x"yes"; then
+    seteuid=yes;cat >> confdefs.h <<\EOF
+#define USE_SETEUID 1
+EOF
+
+fi
+fi
+
+if test $seteuid = no; then
+echo $ac_n "checking for setuidx""... $ac_c" 1>&6
+echo "configure:8637: checking for setuidx" >&5
+if eval "test \"`echo '$''{'samba_cv_USE_SETUIDX'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+if test "$cross_compiling" = yes; then
+  samba_cv_USE_SETUIDX=cross
+else
+  cat > conftest.$ac_ext <<EOF
+#line 8646 "configure"
+#include "confdefs.h"
+
+#define AUTOCONF_TEST 1
+#define USE_SETUIDX 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"
+EOF
+if { (eval echo configure:8654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  samba_cv_USE_SETUIDX=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  samba_cv_USE_SETUIDX=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$samba_cv_USE_SETUIDX" 1>&6
+if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
+    seteuid=yes;cat >> confdefs.h <<\EOF
+#define USE_SETUIDX 1
+EOF
+
+fi
+fi
+
+
 echo $ac_n "checking for shared mmap""... $ac_c" 1>&6
-echo "configure:8506: checking for shared mmap" >&5
+echo "configure:8679: checking for shared mmap" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_SHARED_MMAP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8511,11 +8684,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_SHARED_MMAP=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 8515 "configure"
+#line 8688 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/shared_mmap.c"
 EOF
-if { (eval echo configure:8519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_SHARED_MMAP=yes
 else
@@ -8533,12 +8706,16 @@ echo "$ac_t""$samba_cv_HAVE_SHARED_MMAP" 1>&6
 if test x"$samba_cv_HAVE_SHARED_MMAP" = x"yes"; then
     cat >> confdefs.h <<\EOF
 #define HAVE_SHARED_MMAP 1
+EOF
+
+    cat >> confdefs.h <<\EOF
+#define HAVE_MMAP 1
 EOF
 
 fi
 
 echo $ac_n "checking for fcntl locking""... $ac_c" 1>&6
-echo "configure:8542: checking for fcntl locking" >&5
+echo "configure:8719: checking for fcntl locking" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_FCNTL_LOCK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8547,11 +8724,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_FCNTL_LOCK=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 8551 "configure"
+#line 8728 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/fcntl_lock.c"
 EOF
-if { (eval echo configure:8555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_FCNTL_LOCK=yes
 else
@@ -8574,7 +8751,7 @@ EOF
 fi
 
 echo $ac_n "checking for 64 bit fcntl locking""... $ac_c" 1>&6
-echo "configure:8578: checking for 64 bit fcntl locking" >&5
+echo "configure:8755: checking for 64 bit fcntl locking" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_FLOCK64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8583,7 +8760,7 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_STRUCT_FLOCK64=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 8587 "configure"
+#line 8764 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -8604,7 +8781,7 @@ exit(1);
 #endif
 }
 EOF
-if { (eval echo configure:8608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_STRUCT_FLOCK64=yes
 else
@@ -8627,7 +8804,7 @@ EOF
 fi
 
 echo $ac_n "checking for sysv ipc""... $ac_c" 1>&6
-echo "configure:8631: checking for sysv ipc" >&5
+echo "configure:8808: checking for sysv ipc" >&5
 if eval "test \"`echo '$''{'samba_cv_HAVE_SYSV_IPC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8636,11 +8813,11 @@ if test "$cross_compiling" = yes; then
   samba_cv_HAVE_SYSV_IPC=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 8640 "configure"
+#line 8817 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/sysv_ipc.c"
 EOF
-if { (eval echo configure:8644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   samba_cv_HAVE_SYSV_IPC=yes
 else
@@ -8665,7 +8842,7 @@ fi
 #################################################
 # decide for the default sam-password-database
 echo $ac_n "checking which sam password database to use""... $ac_c" 1>&6
-echo "configure:8669: checking which sam password database to use" >&5
+echo "configure:8846: checking which sam password database to use" >&5
 # Check whether --with-sam_pwdb or --without-sam_pwdb was given.
 if test "${with_sam_pwdb+set}" = set; then
   withval="$with_sam_pwdb"
@@ -8701,7 +8878,7 @@ echo "$ac_t""$sampwlibname" 1>&6
 #################################################
 # check for libmsrpc support
 echo $ac_n "checking whether to use libmsrpc""... $ac_c" 1>&6
-echo "configure:8705: checking whether to use libmsrpc" >&5
+echo "configure:8882: checking whether to use libmsrpc" >&5
 # Check whether --with-libmsrpc or --without-libmsrpc was given.
 if test "${with_libmsrpc+set}" = set; then
   withval="$with_libmsrpc"
@@ -8741,7 +8918,7 @@ fi
 #################################################
 # check for libubiqx support
 echo $ac_n "checking whether to use libubiqx""... $ac_c" 1>&6
-echo "configure:8745: checking whether to use libubiqx" >&5
+echo "configure:8922: checking whether to use libubiqx" >&5
 # Check whether --with-libubiqx or --without-libubiqx was given.
 if test "${with_libubiqx+set}" = set; then
   withval="$with_libubiqx"
@@ -8781,7 +8958,7 @@ fi
 #################################################
 # check for libsamba support
 echo $ac_n "checking whether to use libsamba""... $ac_c" 1>&6
-echo "configure:8785: checking whether to use libsamba" >&5
+echo "configure:8962: checking whether to use libsamba" >&5
 # Check whether --with-libsamba or --without-libsamba was given.
 if test "${with_libsamba+set}" = set; then
   withval="$with_libsamba"
@@ -8821,7 +8998,7 @@ fi
 #################################################
 # check for libnmb support
 echo $ac_n "checking whether to use libnmb""... $ac_c" 1>&6
-echo "configure:8825: checking whether to use libnmb" >&5
+echo "configure:9002: checking whether to use libnmb" >&5
 # Check whether --with-libnmb or --without-libnmb was given.
 if test "${with_libnmb+set}" = set; then
   withval="$with_libnmb"
@@ -8861,7 +9038,7 @@ fi
 #################################################
 # check for libsmbpw support
 echo $ac_n "checking whether to use libsmbpw""... $ac_c" 1>&6
-echo "configure:8865: checking whether to use libsmbpw" >&5
+echo "configure:9042: checking whether to use libsmbpw" >&5
 # Check whether --with-libsmbpw or --without-libsmbpw was given.
 if test "${with_libsmbpw+set}" = set; then
   withval="$with_libsmbpw"
@@ -8902,7 +9079,7 @@ fi
 #################################################
 # check for libsmb support
 echo $ac_n "checking whether to use libsmb""... $ac_c" 1>&6
-echo "configure:8906: checking whether to use libsmb" >&5
+echo "configure:9083: checking whether to use libsmb" >&5
 # Check whether --with-libsmb or --without-libsmb was given.
 if test "${with_libsmb+set}" = set; then
   withval="$with_libsmb"
@@ -8943,7 +9120,7 @@ fi
 #################################################
 # check for smbwrapper support
 echo $ac_n "checking whether to use smbwrapper""... $ac_c" 1>&6
-echo "configure:8947: checking whether to use smbwrapper" >&5
+echo "configure:9124: checking whether to use smbwrapper" >&5
 # Check whether --with-smbwrapper or --without-smbwrapper was given.
 if test "${with_smbwrapper+set}" = set; then
   withval="$with_smbwrapper"
@@ -8987,7 +9164,7 @@ fi
 #################################################
 # check for the AFS filesystem
 echo $ac_n "checking whether to use AFS""... $ac_c" 1>&6
-echo "configure:8991: checking whether to use AFS" >&5
+echo "configure:9168: checking whether to use AFS" >&5
 # Check whether --with-afs or --without-afs was given.
 if test "${with_afs+set}" = set; then
   withval="$with_afs"
@@ -9013,7 +9190,7 @@ fi
 #################################################
 # check for the DFS auth system
 echo $ac_n "checking whether to use DFS auth""... $ac_c" 1>&6
-echo "configure:9017: checking whether to use DFS auth" >&5
+echo "configure:9194: checking whether to use DFS auth" >&5
 # Check whether --with-dfs or --without-dfs was given.
 if test "${with_dfs+set}" = set; then
   withval="$with_dfs"
@@ -9038,7 +9215,7 @@ fi
 #################################################
 # check for Kerberos IV auth system
 echo $ac_n "checking whether to use Kerberos IV""... $ac_c" 1>&6
-echo "configure:9042: checking whether to use Kerberos IV" >&5
+echo "configure:9219: checking whether to use Kerberos IV" >&5
 # Check whether --with-krb4 or --without-krb4 was given.
 if test "${with_krb4+set}" = set; then
   withval="$with_krb4"
@@ -9048,7 +9225,7 @@ if test "${with_krb4+set}" = set; then
 EOF
 
     echo $ac_n "checking for dn_expand in -lresolv""... $ac_c" 1>&6
-echo "configure:9052: checking for dn_expand in -lresolv" >&5
+echo "configure:9229: checking for dn_expand in -lresolv" >&5
 ac_lib_var=`echo resolv'_'dn_expand | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9056,7 +9233,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9060 "configure"
+#line 9237 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9067,7 +9244,7 @@ int main() {
 dn_expand()
 ; return 0; }
 EOF
-if { (eval echo configure:9071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9106,7 +9283,7 @@ fi
 #################################################
 # check for automount support
 echo $ac_n "checking whether to use AUTOMOUNT""... $ac_c" 1>&6
-echo "configure:9110: checking whether to use AUTOMOUNT" >&5
+echo "configure:9287: checking whether to use AUTOMOUNT" >&5
 # Check whether --with-automount or --without-automount was given.
 if test "${with_automount+set}" = set; then
   withval="$with_automount"
@@ -9131,7 +9308,7 @@ fi
 #################################################
 # check for smbmount support
 echo $ac_n "checking whether to use SMBMOUNT""... $ac_c" 1>&6
-echo "configure:9135: checking whether to use SMBMOUNT" >&5
+echo "configure:9312: checking whether to use SMBMOUNT" >&5
 # Check whether --with-smbmount or --without-smbmount was given.
 if test "${with_smbmount+set}" = set; then
   withval="$with_smbmount"
@@ -9159,7 +9336,7 @@ fi
 #################################################
 # check for a LDAP password database
 echo $ac_n "checking whether to use LDAP password database""... $ac_c" 1>&6
-echo "configure:9163: checking whether to use LDAP password database" >&5
+echo "configure:9340: checking whether to use LDAP password database" >&5
 # Check whether --with-ldap or --without-ldap was given.
 if test "${with_ldap+set}" = set; then
   withval="$with_ldap"
@@ -9185,7 +9362,7 @@ fi
 #################################################
 # check for a LDAP password database
 echo $ac_n "checking whether to use LDAP password database""... $ac_c" 1>&6
-echo "configure:9189: checking whether to use LDAP password database" >&5
+echo "configure:9366: checking whether to use LDAP password database" >&5
 # Check whether --with-nt5ldap or --without-nt5ldap was given.
 if test "${with_nt5ldap+set}" = set; then
   withval="$with_nt5ldap"
@@ -9211,7 +9388,7 @@ fi
 #################################################
 # check for a LDAP password database
 echo $ac_n "checking whether to use LDAP password database""... $ac_c" 1>&6
-echo "configure:9215: checking whether to use LDAP password database" >&5
+echo "configure:9392: checking whether to use LDAP password database" >&5
 # Check whether --with-nt5ldap or --without-nt5ldap was given.
 if test "${with_nt5ldap+set}" = set; then
   withval="$with_nt5ldap"
@@ -9237,7 +9414,7 @@ fi
 #################################################
 # check for a NISPLUS password database
 echo $ac_n "checking whether to use NISPLUS password database""... $ac_c" 1>&6
-echo "configure:9241: checking whether to use NISPLUS password database" >&5
+echo "configure:9418: checking whether to use NISPLUS password database" >&5
 # Check whether --with-nisplus or --without-nisplus was given.
 if test "${with_nisplus+set}" = set; then
   withval="$with_nisplus"
@@ -9262,7 +9439,7 @@ fi
 #################################################
 # check for a NISPLUS_HOME support 
 echo $ac_n "checking whether to use NISPLUS_HOME""... $ac_c" 1>&6
-echo "configure:9266: checking whether to use NISPLUS_HOME" >&5
+echo "configure:9443: checking whether to use NISPLUS_HOME" >&5
 # Check whether --with-nisplus-home or --without-nisplus-home was given.
 if test "${with_nisplus_home+set}" = set; then
   withval="$with_nisplus_home"
@@ -9287,7 +9464,7 @@ fi
 #################################################
 # check for the secure socket layer
 echo $ac_n "checking whether to use SSL""... $ac_c" 1>&6
-echo "configure:9291: checking whether to use SSL" >&5
+echo "configure:9468: checking whether to use SSL" >&5
 # Check whether --with-ssl or --without-ssl was given.
 if test "${with_ssl+set}" = set; then
   withval="$with_ssl"
@@ -9312,7 +9489,7 @@ fi
 #################################################
 # check for experimental mmap support
 echo $ac_n "checking whether to use MMAP""... $ac_c" 1>&6
-echo "configure:9316: checking whether to use MMAP" >&5
+echo "configure:9493: checking whether to use MMAP" >&5
 # Check whether --with-mmap or --without-mmap was given.
 if test "${with_mmap+set}" = set; then
   withval="$with_mmap"
@@ -9337,7 +9514,7 @@ fi
 #################################################
 # check for syslog logging
 echo $ac_n "checking whether to use syslog logging""... $ac_c" 1>&6
-echo "configure:9341: checking whether to use syslog logging" >&5
+echo "configure:9518: checking whether to use syslog logging" >&5
 # Check whether --with-syslog or --without-syslog was given.
 if test "${with_syslog+set}" = set; then
   withval="$with_syslog"
@@ -9362,7 +9539,7 @@ fi
 #################################################
 # check for a shared memory profiling support
 echo $ac_n "checking whether to use profiling""... $ac_c" 1>&6
-echo "configure:9366: checking whether to use profiling" >&5
+echo "configure:9543: checking whether to use profiling" >&5
 # Check whether --with-profile or --without-profile was given.
 if test "${with_profile+set}" = set; then
   withval="$with_profile"
@@ -9388,7 +9565,7 @@ fi
 #################################################
 # check for experimental netatalk resource fork support
 echo $ac_n "checking whether to support netatalk""... $ac_c" 1>&6
-echo "configure:9392: checking whether to support netatalk" >&5
+echo "configure:9569: checking whether to support netatalk" >&5
 # Check whether --with-netatalk or --without-netatalk was given.
 if test "${with_netatalk+set}" = set; then
   withval="$with_netatalk"
@@ -9415,7 +9592,7 @@ fi
 QUOTAOBJS=noquotas.o
 
 echo $ac_n "checking whether to support disk-quotas""... $ac_c" 1>&6
-echo "configure:9419: checking whether to support disk-quotas" >&5
+echo "configure:9596: checking whether to support disk-quotas" >&5
 # Check whether --with-quotas or --without-quotas was given.
 if test "${with_quotas+set}" = set; then
   withval="$with_quotas"
@@ -9438,14 +9615,14 @@ fi
 #################################################
 # these tests are taken from the GNU fileutils package
 echo "checking how to get filesystem space usage" 1>&6
-echo "configure:9442: checking how to get filesystem space usage" >&5
+echo "configure:9619: checking how to get filesystem space usage" >&5
 space=no
 
 # Test for statvfs64.
 if test $space = no; then
   # SVR4
   echo $ac_n "checking statvfs64 function (SVR4)""... $ac_c" 1>&6
-echo "configure:9449: checking statvfs64 function (SVR4)" >&5
+echo "configure:9626: checking statvfs64 function (SVR4)" >&5
 if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9453,7 +9630,7 @@ else
   fu_cv_sys_stat_statvfs64=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9457 "configure"
+#line 9634 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9464,7 +9641,7 @@ else
     exit (statfs64 (".", &fsd));
   }
 EOF
-if { (eval echo configure:9468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statvfs64=yes
 else
@@ -9497,12 +9674,12 @@ fi
 if test $space = no; then
   # SVR4
   echo $ac_n "checking statvfs function (SVR4)""... $ac_c" 1>&6
-echo "configure:9501: checking statvfs function (SVR4)" >&5
+echo "configure:9678: checking statvfs function (SVR4)" >&5
 if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9506 "configure"
+#line 9683 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/statvfs.h>
@@ -9510,7 +9687,7 @@ int main() {
 struct statvfs fsd; statvfs (0, &fsd);
 ; return 0; }
 EOF
-if { (eval echo configure:9514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   fu_cv_sys_stat_statvfs=yes
 else
@@ -9535,7 +9712,7 @@ fi
 if test $space = no; then
   # DEC Alpha running OSF/1
   echo $ac_n "checking for 3-argument statfs function (DEC OSF/1)""... $ac_c" 1>&6
-echo "configure:9539: checking for 3-argument statfs function (DEC OSF/1)" >&5
+echo "configure:9716: checking for 3-argument statfs function (DEC OSF/1)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs3_osf1'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9543,7 +9720,7 @@ else
   fu_cv_sys_stat_statfs3_osf1=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 9547 "configure"
+#line 9724 "configure"
 #include "confdefs.h"
 
 #include <sys/param.h>
@@ -9556,7 +9733,7 @@ else
     exit (statfs (".", &fsd, sizeof (struct statfs)));
   }
 EOF
-if { (eval echo configure:9560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs3_osf1=yes
 else
@@ -9583,7 +9760,7 @@ fi
 if test $space = no; then
 # AIX
   echo $ac_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)""... $ac_c" 1>&6
-echo "configure:9587: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+echo "configure:9764: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_bsize'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9591,7 +9768,7 @@ else
   fu_cv_sys_stat_statfs2_bsize=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 9595 "configure"
+#line 9772 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_PARAM_H
@@ -9610,7 +9787,7 @@ else
   exit (statfs (".", &fsd));
   }
 EOF
-if { (eval echo configure:9614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs2_bsize=yes
 else
@@ -9637,7 +9814,7 @@ fi
 if test $space = no; then
 # SVR3
   echo $ac_n "checking for four-argument statfs (AIX-3.2.5, SVR3)""... $ac_c" 1>&6
-echo "configure:9641: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+echo "configure:9818: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs4'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9645,7 +9822,7 @@ else
   fu_cv_sys_stat_statfs4=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 9649 "configure"
+#line 9826 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/statfs.h>
@@ -9655,7 +9832,7 @@ else
   exit (statfs (".", &fsd, sizeof fsd, 0));
   }
 EOF
-if { (eval echo configure:9659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs4=yes
 else
@@ -9682,7 +9859,7 @@ fi
 if test $space = no; then
 # 4.4BSD and NetBSD
   echo $ac_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)""... $ac_c" 1>&6
-echo "configure:9686: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+echo "configure:9863: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_fsize'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9690,7 +9867,7 @@ else
   fu_cv_sys_stat_statfs2_fsize=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 9694 "configure"
+#line 9871 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
@@ -9706,7 +9883,7 @@ else
   exit (statfs (".", &fsd));
   }
 EOF
-if { (eval echo configure:9710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_statfs2_fsize=yes
 else
@@ -9733,7 +9910,7 @@ fi
 if test $space = no; then
   # Ultrix
   echo $ac_n "checking for two-argument statfs with struct fs_data (Ultrix)""... $ac_c" 1>&6
-echo "configure:9737: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+echo "configure:9914: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
   if eval "test \"`echo '$''{'fu_cv_sys_stat_fs_data'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9741,7 +9918,7 @@ else
   fu_cv_sys_stat_fs_data=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 9745 "configure"
+#line 9922 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_SYS_PARAM_H
@@ -9761,7 +9938,7 @@ else
   exit (statfs (".", &fsd) != 1);
   }
 EOF
-if { (eval echo configure:9765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   fu_cv_sys_stat_fs_data=yes
 else
@@ -9790,11 +9967,11 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 9794 "configure"
+#line 9971 "configure"
 #include "confdefs.h"
 #include "${srcdir-.}/tests/summary.c"
 EOF
-if { (eval echo configure:9798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "configure OK";
 else
index 109ca7f6497e3ac13cc2e3c4562832c4bd59a07d..68f1d9b6379a8348f9b1696443bf27a6e90ecf67 100644 (file)
@@ -625,11 +625,69 @@ if test x"$samba_cv_HAVE_TRAPDOOR_UID" = x"yes"; then
     AC_DEFINE(HAVE_TRAPDOOR_UID)
 fi
 
+################################################
+# look for a method of setting the effective uid
+seteuid=no;
+if test $seteuid = no; then
+AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
+AC_TRY_RUN([
+#define AUTOCONF_TEST 1
+#define USE_SETRESUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"],
+           samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
+if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETRESUID)
+fi
+fi
+
+
+if test $seteuid = no; then
+AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
+AC_TRY_RUN([
+#define AUTOCONF_TEST 1
+#define USE_SETREUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"],
+           samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
+if test x"$samba_cv_USE_SETREUID" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETREUID)
+fi
+fi
+
+if test $seteuid = no; then
+AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
+AC_TRY_RUN([
+#define AUTOCONF_TEST 1
+#define USE_SETEUID 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"],
+           samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
+if test x"$samba_cv_USE_SETEUID" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETEUID)
+fi
+fi
+
+if test $seteuid = no; then
+AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
+AC_TRY_RUN([
+#define AUTOCONF_TEST 1
+#define USE_SETUIDX 1
+#include "confdefs.h"
+#include "${srcdir-.}/lib/util_sec.c"],
+           samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
+if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETUIDX)
+fi
+fi
+
+
 AC_CACHE_CHECK([for shared mmap],samba_cv_HAVE_SHARED_MMAP,[
 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
            samba_cv_HAVE_SHARED_MMAP=yes,samba_cv_HAVE_SHARED_MMAP=no,samba_cv_HAVE_SHARED_MMAP=cross)])
 if test x"$samba_cv_HAVE_SHARED_MMAP" = x"yes"; then
     AC_DEFINE(HAVE_SHARED_MMAP)
+    AC_DEFINE(HAVE_MMAP)
 fi
 
 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
index f5292ecf22a261bd8d68ed37d6820798cb0f2851..f13e0f165ac10c812a5d7675d427bbee6e03e303 100644 (file)
 
 #undef WITH_NT5LDAP
 
+#undef USE_SETEUID
+#undef USE_SETRESUID
+#undef USE_SETREUID
+#undef USE_SETUIDX
+
 /* The number of bytes in a int.  */
 #undef SIZEOF_INT
 
index abfd9eb66920855d6845e5c482e008e4ba2928d5..6bbb03c48666208df1e53bac06c501fa0dcfc49d 100644 (file)
@@ -1177,11 +1177,12 @@ void exit_server(char *reason);
 
 /*The following definitions come from  msrpc/msrpcd_process.c  */
 
-BOOL get_user_creds(int c, vuser_key *uk);
-void close_srv_auth_array(rpcsrv_struct *l);
-void add_srv_auth_fn(rpcsrv_struct *l, srv_auth_fns *fn);
-BOOL msrpcd_init(int c, rpcsrv_struct **l);
-void msrpcd_process(msrpc_service_fns *fn, rpcsrv_struct *l, const char* name);
+BOOL get_user_creds(int c, vuser_key * uk);
+void close_srv_auth_array(rpcsrv_struct * l);
+void add_srv_auth_fn(rpcsrv_struct * l, srv_auth_fns * fn);
+BOOL msrpcd_init(int c, rpcsrv_struct ** l);
+void msrpcd_process(msrpc_service_fns * fn, rpcsrv_struct * l,
+                   const char *name);
 
 /*The following definitions come from  netlogond/creds_db.c  */
 
@@ -2467,6 +2468,9 @@ BOOL srv_net_srv_share_enum( char *srv_name,
                        uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
+BOOL srv_net_srv_share_get_info(const char *srv_name,
+                               const char *share_name,
+                               uint32 info_level);
 BOOL srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
                        uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
                        uint32 preferred_len,
@@ -2551,7 +2555,7 @@ BOOL msrpc_lsa_query_trust_passwd(const char *srv_name,
 
 /*The following definitions come from  rpc_client/msrpc_netlogon.c  */
 
-BOOL modify_trust_password(const char *domain, const char *remote_machine,
+BOOL modify_trust_password(const char *domain, const char *srv_name,
                           const uchar orig_trust_passwd_hash[16],
                           const uchar new_trust_passwd_hash[16],
                           uint16 sec_chan);
@@ -3210,6 +3214,7 @@ int make_sec_desc(SEC_DESC *t, uint16 revision, uint16 type,
                        DOM_SID *owner_sid, DOM_SID *grp_sid,
                                SEC_ACL *sacl, SEC_ACL *dacl);
 void free_sec_desc(SEC_DESC *t);
+BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth);
 BOOL make_sec_desc_buf(SEC_DESC_BUF *buf, int len, SEC_DESC *data);
 void free_sec_desc_buf(SEC_DESC_BUF *buf);
 BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF *sec, prs_struct *ps, int depth);
@@ -3420,6 +3425,7 @@ BOOL msrpc_srv_enum_tprt( const char* dest_srv,
 void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]);
 void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]);
 void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]);
+void cmd_srv_share_get_info(struct client_info *info, int argc, char *argv[]);
 void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]);
 void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]);
 void cmd_time(struct client_info *info, int argc, char *argv[]);
index 63cd81a2ca6777f8b07c3dd808fd5cca96e12b08..ea17dc4f4ce6e0458aaa31adf1697e7bba309a40 100644 (file)
@@ -400,6 +400,9 @@ BOOL srv_net_srv_share_enum( char *srv_name,
                        uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
+BOOL srv_net_srv_share_get_info(const char *srv_name,
+                               const char *share_name,
+                               uint32 info_level);
 BOOL srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
                        uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
                        uint32 preferred_len,
@@ -484,7 +487,7 @@ BOOL msrpc_lsa_query_trust_passwd(const char *srv_name,
 
 /*The following definitions come from  rpc_client/msrpc_netlogon.c  */
 
-BOOL modify_trust_password(const char *domain, const char *remote_machine,
+BOOL modify_trust_password(const char *domain, const char *srv_name,
                           const uchar orig_trust_passwd_hash[16],
                           const uchar new_trust_passwd_hash[16],
                           uint16 sec_chan);
index 7a29c4f1564ddea80fe79aff52e0f6579d7cf5d0..d5dca98baa3c5cbbadb71e191d8bebdae4f035b6 100644 (file)
@@ -749,6 +749,7 @@ int make_sec_desc(SEC_DESC *t, uint16 revision, uint16 type,
                        DOM_SID *owner_sid, DOM_SID *grp_sid,
                                SEC_ACL *sacl, SEC_ACL *dacl);
 void free_sec_desc(SEC_DESC *t);
+BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth);
 BOOL make_sec_desc_buf(SEC_DESC_BUF *buf, int len, SEC_DESC *data);
 void free_sec_desc_buf(SEC_DESC_BUF *buf);
 BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF *sec, prs_struct *ps, int depth);
@@ -922,6 +923,18 @@ BOOL make_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM *q_n,
                                ENUM_HND *hnd);
 BOOL srv_io_q_net_share_enum(char *desc,  SRV_Q_NET_SHARE_ENUM *q_n, prs_struct *ps, int depth);
 BOOL srv_io_r_net_share_enum(char *desc,  SRV_R_NET_SHARE_ENUM *r_n, prs_struct *ps, int depth);
+BOOL make_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO *q_n,
+                                  const UNISTR2 *srv_name,
+                                  const UNISTR2 *share_name,
+                                  uint32 info_level);
+BOOL srv_io_q_net_share_get_info(char *desc, SRV_Q_NET_SHARE_GET_INFO *q_n,
+                                prs_struct *ps, int depth);
+BOOL make_srv_r_net_share_get_info(SRV_R_NET_SHARE_GET_INFO *r_n,
+                                  uint32 info_level,
+                                  SHARE_INFO_CTR *ctr,
+                                  uint32 status);
+BOOL srv_io_r_net_share_get_info(char *desc, SRV_R_NET_SHARE_GET_INFO *r_n,
+                                prs_struct *ps, int depth);
 BOOL make_srv_sess_info0_str(SESS_INFO_0_STR *ss0, char *name);
 BOOL make_srv_sess_info0(SESS_INFO_0 *ss0, char *name);
 BOOL make_srv_sess_info1_str(SESS_INFO_1_STR *ss1, char *name, char *user);
index 9ef16d0dce9386e509f335b5d9afeadeaf0687c4..f6ad15386a1945b7174f301809c2c56f4958f077 100644 (file)
 #define SRV_NETFILEENUM      0x09
 #define SRV_NETSESSENUM      0x0c
 #define SRV_NETSHAREENUM     0x0f
-#define SRV_NETSHAREENUM2    0x24
+#define SRV_NETSHAREGETINFO  0x10
+#define SRV_NETSHAREDEL      0x12
 #define SRV_NETTRANSPORTENUM 0x1a
 #define SRV_NET_SRV_GET_INFO 0x15
 #define SRV_NET_SRV_SET_INFO 0x16
 #define        SRV_NET_REMOTE_TOD   0x1c
+#define SRV_NETSHAREENUM2    0x24
 
 /* SESS_INFO_0 (pointers to level 0 session info strings) */
 typedef struct ptr_sess_info0
@@ -388,6 +390,36 @@ typedef struct str_share_info2
 
 } SH_INFO_2_STR;
 
+
+typedef struct _sh_info_502_hdr
+{
+       SH_INFO_2   info2_hdr;
+       uint32      sd_size; /* how useless... */
+       uint32      sd_ptr;  /* for sd? */
+} SH_INFO_502_HDR;
+
+typedef struct _sh_info_502_data
+{
+       SH_INFO_2_STR info2_str;
+
+       uint32        sd_size2;
+       SEC_DESC      sd; /* security descriptor */
+} SH_INFO_502_DATA;
+
+/* SHARE_INFO_502 (level 502 share info) */
+typedef struct _share_info_502
+{
+       SH_INFO_502_HDR  info502_hdr;
+       SH_INFO_502_DATA info502_data;
+} SHARE_INFO_502;
+
+
+typedef union _share_info_ctr
+{
+       SHARE_INFO_502 info502;
+} SHARE_INFO_CTR;
+
+
 /* SRV_SHARE_INFO_2 */
 typedef struct share_info_2_info
 {
@@ -430,7 +462,6 @@ typedef struct q_net_share_enum_info
 
 } SRV_Q_NET_SHARE_ENUM;
 
-
 /* SRV_R_NET_SHARE_ENUM */
 typedef struct r_net_share_enum_info
 {
@@ -444,6 +475,28 @@ typedef struct r_net_share_enum_info
 
 } SRV_R_NET_SHARE_ENUM;
 
+
+/* SRV_Q_NET_SHARE_GET_INFO */
+typedef struct q_net_share_get_info
+{
+       uint32 ptr_srv_name;         /* pointer (to server name?) */
+       UNISTR2 uni_srv_name;        /* server name */
+
+       UNISTR2 share_name;
+       uint32  info_level;
+} SRV_Q_NET_SHARE_GET_INFO;
+
+/* SRV_R_NET_SHARE_GET_INFO */
+typedef struct r_net_share_get_info
+{
+       uint32 info_level;
+       uint32 info_ptr;
+       SHARE_INFO_CTR info;
+
+       uint32 status;
+} SRV_R_NET_SHARE_GET_INFO;
+
+
 /* FILE_INFO_3 (level 3 file info strings) */
 typedef struct file_info3_info
 {
index b281c659c2836635f6c57e0682b21671bfa31105..9bc30db0f087703f22373fe5fb3d25f15fb01e33 100644 (file)
@@ -2561,6 +2561,7 @@ int make_sec_desc(SEC_DESC *t, uint16 revision, uint16 type,
                        DOM_SID *owner_sid, DOM_SID *grp_sid,
                                SEC_ACL *sacl, SEC_ACL *dacl);
 void free_sec_desc(SEC_DESC *t);
+BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth);
 BOOL make_sec_desc_buf(SEC_DESC_BUF *buf, int len, SEC_DESC *data);
 void free_sec_desc_buf(SEC_DESC_BUF *buf);
 BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF *sec, prs_struct *ps, int depth);
index 0df52009562043d617332460e107d714a742e514..327db0086f426a1ae6e58b017489c75d10d9280a 100644 (file)
@@ -363,6 +363,60 @@ BOOL srv_net_srv_share_enum( char *srv_name,
        return valid_enum;
 }
 
+/****************************************************************************
+do a share get info
+****************************************************************************/
+BOOL srv_net_srv_share_get_info(const char *srv_name,
+                               const char *share_name,
+                               uint32 info_level)
+{
+       prs_struct data; 
+       prs_struct rdata;
+       SRV_Q_NET_SHARE_GET_INFO q_o;
+       struct cli_connection *con = NULL;
+       UNISTR2 uni_srv_name;
+       UNISTR2 uni_share_name;
+       BOOL valid_result = False;
+
+       if (srv_name == NULL || share_name == NULL) return False;
+
+       if (!cli_connection_init(srv_name, PIPE_SRVSVC, &con))
+       {
+               return False;
+       }
+
+       prs_init(&data , 0, 4, False);
+       prs_init(&rdata, 0, 4, True );
+
+       DEBUG(4, ("SRV Get Share Info, share:%s, level %d\n",
+                 share_name, info_level));
+                               
+       make_unistr2(&uni_srv_name,   srv_name,   strlen(srv_name) + 1);
+       make_unistr2(&uni_share_name, share_name, strlen(share_name) + 1);
+
+       /* store the parameters */
+       make_srv_q_net_share_get_info(&q_o, &uni_srv_name, &uni_share_name,
+                                     info_level);
+
+       /* turn parameters into data stream */
+       if (srv_io_q_net_share_get_info("", &q_o, &data, 0) &&
+           rpc_con_pipe_req(con, SRV_NETSHAREGETINFO, &data, &rdata))
+       {
+               SRV_R_NET_SHARE_GET_INFO r_o;
+
+               srv_io_r_net_share_get_info("", &r_o, &rdata, 0);
+
+               valid_result = False;
+       }
+
+       prs_free_data(&data   );
+       prs_free_data(&rdata  );
+       
+       cli_connection_unlink(con);
+
+       return valid_result;
+}
+
 /****************************************************************************
 do a server net file enum
 ****************************************************************************/
index 935545781ae7dbbf8255f929e204534c695cd6b7..7a71a777ae12d0cef325588c355e150f05c927a9 100644 (file)
@@ -285,7 +285,7 @@ void free_sec_desc(SEC_DESC *t)
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
-static BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth)
+BOOL sec_io_desc(char *desc, SEC_DESC *t, prs_struct *ps, int depth)
 {
 #if 0
        uint32 off_owner_sid;
index 6550de799ec7bdf8ba5a33bdce4b444135ea0fc0..6aeed1cd6c77e2ae1582d79cf13aeb625c3b1e91 100644 (file)
@@ -6,6 +6,7 @@
  *  Copyright (C) Andrew Tridgell              1992-1999,
  *  Copyright (C) Luke Kenneth Casson Leighton 1996-1999,
  *  Copyright (C) Paul Ashton                  1997-1999.
+ *  Copyright (C) Elrond                            2000
  *  
  *  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
@@ -24,6 +25,7 @@
 
 
 #include "includes.h"
+#include "nterr.h"
 #include "rpc_parse.h"
 
 extern int DEBUGLEVEL;
@@ -238,13 +240,13 @@ static BOOL srv_io_share_info2_str(char *desc,  SH_INFO_2_STR *ss2, SH_INFO_2 *s
 
        prs_align(ps);
 
-       smb_io_unistr2("", &(ss2->uni_netname), sh2->ptr_netname, ps, depth); 
+       smb_io_unistr2("netname", &(ss2->uni_netname), sh2->ptr_netname, ps, depth); 
        prs_align(ps);
-       smb_io_unistr2("", &(ss2->uni_remark ), sh2->ptr_remark , ps, depth); 
+       smb_io_unistr2("remark ", &(ss2->uni_remark ), sh2->ptr_remark , ps, depth); 
        prs_align(ps);
-       smb_io_unistr2("", &(ss2->uni_path   ), sh2->ptr_path   , ps, depth); 
+       smb_io_unistr2("path   ", &(ss2->uni_path   ), sh2->ptr_path   , ps, depth); 
        prs_align(ps);
-       smb_io_unistr2("", &(ss2->uni_passwd ), sh2->ptr_passwd , ps, depth); 
+       smb_io_unistr2("passwd ", &(ss2->uni_passwd ), sh2->ptr_passwd , ps, depth); 
        prs_align(ps);
 
        return True;
@@ -305,6 +307,80 @@ static BOOL srv_io_share_info2(char *desc,  SH_INFO_2 *sh2, prs_struct *ps, int
        return True;
 }
 
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+static BOOL srv_io_share_info502_hdr(char *desc, SH_INFO_502_HDR *sh502,
+                                    prs_struct *ps, int depth)
+{
+       if (sh502 == NULL) return False;
+
+       prs_debug(ps, depth, desc, "srv_io_share_info502_hdr");
+       depth++;
+
+       prs_align(ps);
+
+       srv_io_share_info2("", &(sh502->info2_hdr), ps, depth);
+
+       prs_uint32("sd_size", ps, depth, &(sh502->sd_size));
+       prs_uint32("sd_ptr ", ps, depth, &(sh502->sd_ptr));
+
+       return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+static BOOL srv_io_share_info502_data(char *desc,
+                                     SH_INFO_502_DATA *sh502,
+                                     SH_INFO_502_HDR *si502,
+                                     prs_struct *ps, int depth)
+{
+       if (sh502 == NULL) return False;
+
+       prs_debug(ps, depth, desc, "srv_io_share_info502_data");
+       depth++;
+
+       prs_align(ps);
+
+       srv_io_share_info2_str("", &(sh502->info2_str), &(si502->info2_hdr),
+                              ps, depth);
+       prs_align(ps);
+
+       if (si502->sd_ptr)
+       {
+               prs_uint32("sd_size2", ps, depth, &(sh502->sd_size2));
+
+               sec_io_desc("", &(sh502->sd), ps, depth);
+       }
+
+       return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+static BOOL srv_io_share_info502(char *desc,
+                                SHARE_INFO_502 *sh502,
+                                prs_struct *ps, int depth)
+{
+       if (sh502 == NULL) return False;
+
+       prs_debug(ps, depth, desc, "srv_io_share_info502");
+       depth++;
+
+       prs_align(ps);
+
+       srv_io_share_info502_hdr("", &(sh502->info502_hdr), ps, depth);
+       srv_io_share_info502_data("",
+                                 &(sh502->info502_data),
+                                 &(sh502->info502_hdr),
+                                 ps, depth);
+
+       return True;
+}
+
+
 /*******************************************************************
 reads or writes a structure.
 ********************************************************************/
@@ -528,6 +604,115 @@ BOOL srv_io_r_net_share_enum(char *desc,  SRV_R_NET_SHARE_ENUM *r_n, prs_struct
        return True;
 }
 
+
+/*******************************************************************
+ makes a structure
+********************************************************************/
+BOOL make_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO *q_n,
+                                  const UNISTR2 *srv_name,
+                                  const UNISTR2 *share_name,
+                                  uint32 info_level)
+{
+       if (q_n == NULL) return False;
+
+       q_n->ptr_srv_name = (srv_name != NULL);
+       copy_unistr2(&(q_n->uni_srv_name), srv_name);
+       copy_unistr2(&(q_n->share_name), share_name);
+       q_n->info_level = info_level;
+
+       return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL srv_io_q_net_share_get_info(char *desc, SRV_Q_NET_SHARE_GET_INFO *q_n,
+                                prs_struct *ps, int depth)
+{
+       if (q_n == NULL) return False;
+
+       prs_debug(ps, depth, desc, "srv_io_q_net_share_get_info");
+       depth++;
+
+       prs_align(ps);
+
+       prs_uint32("ptr_srv_name", ps, depth, &(q_n->ptr_srv_name));
+       smb_io_unistr2("uni_srv_name", &(q_n->uni_srv_name), True, ps, depth);
+       prs_align(ps);
+
+       smb_io_unistr2("share_name", &(q_n->share_name), True, ps, depth);
+       prs_align(ps);
+
+       prs_uint32("info_level", ps, depth, &(q_n->info_level));
+
+       return True;
+}
+
+/*******************************************************************
+ makes a structure
+********************************************************************/
+BOOL make_srv_r_net_share_get_info(SRV_R_NET_SHARE_GET_INFO *r_n,
+                                  uint32 info_level,
+                                  SHARE_INFO_CTR *ctr,
+                                  uint32 status)
+{
+       if (r_n == NULL) return False;
+
+       r_n->info_level = info_level;
+
+       if (status == NT_STATUS_NOPROBLEMO)
+       {
+               r_n->info_ptr = (ctr != NULL ? 1 : 0);
+       }
+       else
+       {
+               r_n->info_ptr = 0;
+       }
+
+       r_n->status = status;
+
+       return True;
+}
+
+/*******************************************************************
+reads or writes a structure.
+********************************************************************/
+BOOL srv_io_r_net_share_get_info(char *desc, SRV_R_NET_SHARE_GET_INFO *r_n,
+                                prs_struct *ps, int depth)
+{
+       if (r_n == NULL) return False;
+
+       prs_debug(ps, depth, desc, "srv_io_r_net_share_get_info");
+       depth++;
+
+       prs_align(ps);
+
+       prs_uint32("info_level", ps, depth, &(r_n->info_level));
+       prs_uint32("info_ptr  ", ps, depth, &(r_n->info_ptr));
+
+       if (r_n->info_ptr)
+       {
+               switch (r_n->info_level)
+               {
+                       case 502:
+                               srv_io_share_info502("info",
+                                                    &(r_n->info.info502),
+                                                    ps, depth);
+                               break;
+                       default:
+                               DEBUG(1, ("srv_io_r_net_share_get_info: Unsupported info level %d\n",
+                                         r_n->info_level));
+                               return False;
+                               break;
+               }
+       }
+
+       prs_uint32("status    ", ps, depth, &(r_n->status));
+
+       return True;
+}
+
+
 /*******************************************************************
  makes a SESS_INFO_0_STR structure
 ********************************************************************/
index 177a3d976db9f6ea9f59778d3eb79a5105689b8a..f7ba3c86113df6f8a6b978672e2737392570cb85 100644 (file)
@@ -158,7 +158,6 @@ static BOOL api_srv_net_sess_enum( rpcsrv_struct *p, prs_struct *data,
                return False;
        }
 
-
        r_n.sess_level = q_n.sess_level;
 
        r_n.status = _srv_net_sess_enum( &q_n.uni_srv_name,
@@ -175,29 +174,28 @@ static BOOL api_srv_net_sess_enum( rpcsrv_struct *p, prs_struct *data,
 
 /*******************************************************************
 ********************************************************************/
-static BOOL api_srv_net_share_enum( rpcsrv_struct *p, prs_struct *data,
-                                    prs_struct *rdata )
+static BOOL api_srv_net_share_enum(rpcsrv_struct *p, prs_struct *data,
+                                  prs_struct *rdata )
 {
-        SRV_Q_NET_SHARE_ENUM q_n;
+       SRV_Q_NET_SHARE_ENUM q_n;
        SRV_R_NET_SHARE_ENUM r_n;
-        SRV_SHARE_INFO_CTR ctr;
+       SRV_SHARE_INFO_CTR ctr;
 
-        BOOL ret;
+       BOOL ret;
 
        ZERO_STRUCT(q_n);
        ZERO_STRUCT(r_n);
        ZERO_STRUCT(ctr);
 
-        q_n.ctr = &ctr;
+       q_n.ctr = &ctr;
        r_n.ctr = &ctr;
 
-        /* grab the net server get enum */
-        if (!srv_io_q_net_share_enum("", &q_n, data, 0))
+       /* grab the net server get enum */
+       if (!srv_io_q_net_share_enum("", &q_n, data, 0))
        {
                return False;
        }
 
-
        r_n.share_level = q_n.share_level;
 
        r_n.status = _srv_net_share_enum( &q_n.uni_srv_name, 
@@ -214,6 +212,27 @@ static BOOL api_srv_net_share_enum( rpcsrv_struct *p, prs_struct *data,
        return ret;
 }
 
+/*******************************************************************
+********************************************************************/
+static BOOL api_srv_net_share_get_info(rpcsrv_struct *p, prs_struct *data,
+                                      prs_struct *rdata )
+{
+       SRV_Q_NET_SHARE_GET_INFO q_n;
+       /* SRV_R_NET_SHARE_GET_INFO r_n; */
+
+       ZERO_STRUCT(q_n);
+       /* ZERO_STRUCT(r_n); */
+
+       /* grab the request */
+       if (!srv_io_q_net_share_get_info("", &q_n, data, 0))
+       {
+               return False;
+       }
+
+       /* Don't know yet, how to answer, next */
+       return False;
+}
+
 /*******************************************************************
 ********************************************************************/
 static BOOL api_srv_net_remote_tod( rpcsrv_struct *p, prs_struct *data,
@@ -250,14 +269,15 @@ static BOOL api_srv_net_remote_tod( rpcsrv_struct *p, prs_struct *data,
 ********************************************************************/
 static const struct api_struct api_srv_cmds[] =
 {
-       { "SRV_NETCONNENUM"     , SRV_NETCONNENUM     , api_srv_net_conn_enum    },
-       { "SRV_NETSESSENUM"     , SRV_NETSESSENUM     , api_srv_net_sess_enum    },
-       { "SRV_NETSHAREENUM"    , SRV_NETSHAREENUM    , api_srv_net_share_enum   },
-       { "SRV_NETSHAREENUM2"   , SRV_NETSHAREENUM2   , api_srv_net_share_enum   },
-       { "SRV_NETFILEENUM"     , SRV_NETFILEENUM     , api_srv_net_file_enum    },
-       { "SRV_NET_SRV_GET_INFO", SRV_NET_SRV_GET_INFO, api_srv_net_srv_get_info },
-       { "SRV_NET_REMOTE_TOD"  , SRV_NET_REMOTE_TOD  , api_srv_net_remote_tod   },
-       { NULL                  , 0                   , NULL                     }
+       { "SRV_NETCONNENUM"     , SRV_NETCONNENUM     , api_srv_net_conn_enum     },
+       { "SRV_NETSESSENUM"     , SRV_NETSESSENUM     , api_srv_net_sess_enum     },
+       { "SRV_NETSHAREENUM"    , SRV_NETSHAREENUM    , api_srv_net_share_enum    },
+       { "SRV_NETSHAREENUM2"   , SRV_NETSHAREENUM2   , api_srv_net_share_enum    },
+       { "SRV_NETSHAREGETINFO" , SRV_NETSHAREGETINFO , api_srv_net_share_get_info},
+       { "SRV_NETFILEENUM"     , SRV_NETFILEENUM     , api_srv_net_file_enum     },
+       { "SRV_NET_SRV_GET_INFO", SRV_NET_SRV_GET_INFO, api_srv_net_srv_get_info  },
+       { "SRV_NET_REMOTE_TOD"  , SRV_NET_REMOTE_TOD  , api_srv_net_remote_tod    },
+       { NULL                  , 0                   , NULL                      }
 };
 
 /*******************************************************************
index 65065a782b1e46c47209243bea0625e8102f7fc0..c5e1e699723307c256cb41f7540750d2b4e0e6f3 100644 (file)
@@ -260,6 +260,53 @@ void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[])
        }
 }
 
+/****************************************************************************
+share get info
+****************************************************************************/
+void cmd_srv_share_get_info(struct client_info *info, int argc, char *argv[])
+{
+       fstring dest_srv;
+       const char *share_name;
+       uint32 info_level = 502;
+
+       BOOL res = True;
+
+       fstrcpy(dest_srv, "\\\\");
+       fstrcat(dest_srv, info->dest_host);
+       strupper(dest_srv);
+
+       if (argc < 2)
+       {
+               report(out_hnd, "srvshareinfo SHARE [502|1|2]\n");
+               return;
+       }
+
+       share_name = argv[1];
+
+       if (argc > 2)
+       {
+               info_level = (uint32)strtol(argv[2], (char**)NULL, 10);
+       }
+
+       DEBUG(4,
+             ("cmd_srv_share_get_info: server:%s, share:%s, info level:%d\n",
+              dest_srv, share_name, (int)info_level));
+
+       /* enumerate shares_files on server */
+       res = res
+               ? srv_net_srv_share_get_info(dest_srv, share_name, info_level)
+               : False;
+
+       if (res)
+       {
+               DEBUG(5,("cmd_srv_share_get_info: query succeeded\n"));
+       }
+       else
+       {
+               DEBUG(5,("cmd_srv_share_get_info: query failed\n"));
+       }
+}
+
 /****************************************************************************
 server enum sessions
 ****************************************************************************/
index 1831c1b177697679eca685dfbebfb2bc2adee408..fdc2b549bfbc1af1181efd3dafffe385f418420a 100644 (file)
@@ -68,6 +68,12 @@ static const struct command_set net_commands[] =
                "List shares on a server",
                {NULL, NULL}
        },
+       {
+               "srvshareinfo",
+               cmd_srv_share_get_info,
+               "SHARE [1|2|502]\tGet info for share",
+               {NULL, NULL}
+       },
        {
                "srvtransports",
                cmd_srv_enum_tprt,
index 3db510495aebf0a9e5ae8964c8e4ed8d879ba25e..7ff9ea61c9587b6abe003fd3ecabb5e021f52593 100644 (file)
@@ -2,7 +2,7 @@
 
 main()
 {
-#ifndef HAVE_FCNTL_LOCK
+#if !(defined(HAVE_FCNTL_LOCK) || defined(HAVE_STRUCT_FLOCK64))
        printf("ERROR: No locking available. Running Samba would be unsafe\n");
        exit(1);
 #endif
@@ -11,12 +11,13 @@ main()
        printf("WARNING: no shared memory. Running with slow locking code\n");
 #endif
 
-#ifdef HAVE_TRAPDOOR_UID
-       printf("WARNING: trapdoor uid system - Samba may not operate correctly\n");
+#if !(defined(HAVE_IFACE_IFCONF) || defined(HAVE_IFACE_IFREQ) || defined(HAVE_IFACE_AIX))
+       printf("WARNING: No automated network interface determination\n");
 #endif
 
-#if !(defined(HAVE_NETMASK_IFCONF) || defined(HAVE_NETMASK_IFREQ) || defined(HAVE_NETMASK_AIX))
-       printf("WARNING: No automated netmask determination - use an interfaces line\n");
+#if !(defined(USE_SETEUID) || defined(USE_SETREUID) || defined(USE_SETRESUID) || defined(USE_SETUIDX))
+       printf("ERROR: no seteuid method available\n");
+       exit(1);
 #endif
 
 #if !(defined(STAT_STATVFS) || defined(STAT_STATVFS64) || defined(STAT_STATFS3_OSF1) || defined(STAT_STATFS2_BSIZE) || defined(STAT_STATFS4) || defined(STAT_STATFS2_FSIZE) || defined(STAT_STATFS2_FS_DATA))