Fix bug 6136: New AFS syscall conventions
authorGeza Gemes <geza@kzsdabas.hu>
Sun, 3 May 2009 20:13:36 +0000 (22:13 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 26 May 2009 07:38:45 +0000 (09:38 +0200)
Haven't checked this myself, but as I've already got several reports that Samba
won't compile against current OpenAFS anymore, I just believe Geza Gemes. This
patch only affects AFS code, so it should not hurt anything else.

Volker
(cherry picked from commit 70231f2d88b96da365e56c8d077749366509a4e1)

source3/configure.in
source3/lib/afs.c
source3/lib/afs_settoken.c

index d44df14b3b35934cfb2352c0e658b2c04cbcf804..68474b1ef1a54562b9f32feba98d829bae032250 100644 (file)
@@ -2866,11 +2866,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)
index 7193f0e46d500cdd5c8f67a05a0ad2102f09279e..a76b74c6160efff811991bf48f706562d1d426d5 100644 (file)
@@ -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);
index 444f09efca09edaa6c064bbe0db26eaf177e1dac..6421c0a55b47454ad0c86a1f9854cdce1c346ef7 100644 (file)
@@ -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 {