summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source3/configure.in5
-rw-r--r--source3/lib/afs.c5
-rw-r--r--source3/lib/afs_settoken.c18
3 files changed, 24 insertions, 4 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 0796ff2d7d2..0e972e766b4 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2868,11 +2868,12 @@ AC_ARG_WITH(fake-kaserver,
if test x"$samba_cv_WITH_AFS" != x"no" ||
test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
+ # see if this box has the OpenSSL DES libraries
+ AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
+
# see if this box has the afs-headers in /usr/include/afs
AC_MSG_CHECKING(for /usr/include/afs)
if test -d /usr/include/afs; then
- CFLAGS="$CFLAGS -I/usr/include/afs"
- CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
diff --git a/source3/lib/afs.c b/source3/lib/afs.c
index 7193f0e46d5..a76b74c6160 100644
--- a/source3/lib/afs.c
+++ b/source3/lib/afs.c
@@ -23,6 +23,7 @@
#define NO_ASN1_TYPEDEFS 1
+#include <afs/param.h>
#include <afs/stds.h>
#include <afs/afs.h>
#include <afs/auth.h>
@@ -230,8 +231,8 @@ bool afs_login(connection_struct *conn)
}
afs_username = talloc_sub_advanced(ctx,
- SNUM(conn), conn->user,
- conn->connectpath, conn->gid,
+ SNUM(conn), conn->server_info->unix_name,
+ conn->connectpath, conn->server_info->utok.gid,
conn->server_info->sanitized_username,
pdb_get_domain(conn->server_info->sam_account),
afs_username);
diff --git a/source3/lib/afs_settoken.c b/source3/lib/afs_settoken.c
index 444f09efca0..6421c0a55b4 100644
--- a/source3/lib/afs_settoken.c
+++ b/source3/lib/afs_settoken.c
@@ -23,6 +23,7 @@
#define NO_ASN1_TYPEDEFS 1
+#include <afs/param.h>
#include <afs/stds.h>
#include <afs/afs.h>
#include <afs/auth.h>
@@ -37,7 +38,24 @@ int afs_syscall( int subcall,
char * cmarg,
int follow)
{
+/*
return( syscall( SYS_afs_syscall, subcall, path, cmd, cmarg, follow));
+*/
+ int errcode;
+ struct afsprocdata afs_syscall_data;
+ afs_syscall_data.syscall = subcall;
+ afs_syscall_data.param1 = (long)path;
+ afs_syscall_data.param2 = cmd;
+ afs_syscall_data.param3 = (long)cmarg;
+ afs_syscall_data.param4 = follow;
+ int proc_afs_file = open(PROC_SYSCALL_FNAME, O_RDWR);
+ if (proc_afs_file < 0)
+ proc_afs_file = open(PROC_SYSCALL_ARLA_FNAME, O_RDWR);
+ if (proc_afs_file < 0)
+ return -1;
+ errcode = ioctl(proc_afs_file, VIOC_SYSCALL, &afs_syscall_data);
+ close(proc_afs_file);
+ return errcode;
}
struct ClearToken {