Print this page
NEX-16818 Add fksmbcl development tool
NEX-17264 SMB client test tp_smbutil_013 fails after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (fix ref leaks)
        
*** 19,28 ****
--- 19,29 ----
   * CDDL HEADER END
   */
  
  /*
   * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
   */
  
  /*
   * ACL conversion support for smbfs
   * (To/from NT/ZFS-style ACLs.)
*** 31,69 ****
  #include <sys/types.h>
  #include <sys/errno.h>
  #include <sys/acl.h>
  #include <sys/byteorder.h>
  
! #ifdef _KERNEL
  
  #include <sys/cred.h>
  #include <sys/cmn_err.h>
  #include <sys/kmem.h>
  #include <sys/sunddi.h>
  #include <sys/vnode.h>
  #include <sys/vfs.h>
  
- #include <sys/kidmap.h>
- 
  #else   /* _KERNEL */
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <strings.h>
  
! #include <idmap.h>
  
  #endif  /* _KERNEL */
  
  #include <netsmb/mchain.h>
  #include <netsmb/smb.h>
  #include "smbfs_ntacl.h"
  
  #define NT_SD_REVISION  1
  #define NT_ACL_REVISION 2
  
! #ifdef _KERNEL
  #define MALLOC(size) kmem_alloc(size, KM_SLEEP)
  #define FREESZ(p, sz) kmem_free(p, sz)
  #else   /* _KERNEL */
  #define MALLOC(size) malloc(size)
  /*
--- 32,72 ----
  #include <sys/types.h>
  #include <sys/errno.h>
  #include <sys/acl.h>
  #include <sys/byteorder.h>
  
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
  
  #include <sys/cred.h>
  #include <sys/cmn_err.h>
  #include <sys/kmem.h>
  #include <sys/sunddi.h>
  #include <sys/vnode.h>
  #include <sys/vfs.h>
  
  #else   /* _KERNEL */
  
  #include <stdio.h>
  #include <stdlib.h>
  #include <strings.h>
  
! #endif  /* _KERNEL */
  
+ #ifdef _KERNEL
+ #include <sys/kidmap.h>
+ #else   /* _KERNEL */
+ #include <idmap.h>
  #endif  /* _KERNEL */
  
  #include <netsmb/mchain.h>
  #include <netsmb/smb.h>
  #include "smbfs_ntacl.h"
  
  #define NT_SD_REVISION  1
  #define NT_ACL_REVISION 2
  
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
  #define MALLOC(size) kmem_alloc(size, KM_SLEEP)
  #define FREESZ(p, sz) kmem_free(p, sz)
  #else   /* _KERNEL */
  #define MALLOC(size) malloc(size)
  /*
*** 885,895 ****
   * second building a ZFS-style ACL using the idmap results.
   */
  int
  smbfs_acl_sd2zfs(
          i_ntsd_t *sd,
! #ifdef  _KERNEL
          vsecattr_t *acl_info,
  #else /* _KERNEL */
          acl_t *acl_info,
  #endif /* _KERNEL */
          uid_t *uidp, gid_t *gidp)
--- 888,898 ----
   * second building a ZFS-style ACL using the idmap results.
   */
  int
  smbfs_acl_sd2zfs(
          i_ntsd_t *sd,
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
          vsecattr_t *acl_info,
  #else /* _KERNEL */
          acl_t *acl_info,
  #endif /* _KERNEL */
          uid_t *uidp, gid_t *gidp)
*** 906,921 ****
  
          /*
           * sanity checks
           */
          if (acl_info) {
! #ifndef _KERNEL
                  if (acl_info->acl_type != ACE_T ||
                      acl_info->acl_aclp != NULL ||
                      acl_info->acl_entry_size != sizeof (ace_t))
                          return (EINVAL);
! #endif /* _KERNEL */
                  if ((sd->sd_flags & SD_DACL_PRESENT) == 0)
                          return (EINVAL);
          }
  
          /*
--- 909,924 ----
  
          /*
           * sanity checks
           */
          if (acl_info) {
! #if !defined(_KERNEL) && !defined(_FAKE_KERNEL)
                  if (acl_info->acl_type != ACE_T ||
                      acl_info->acl_aclp != NULL ||
                      acl_info->acl_entry_size != sizeof (ace_t))
                          return (EINVAL);
! #endif /* !_KERNEL */
                  if ((sd->sd_flags & SD_DACL_PRESENT) == 0)
                          return (EINVAL);
          }
  
          /*
*** 1115,1125 ****
                      ACE_READ_ACL | ACE_WRITE_ACL;
                  zacep->a_flags = ACE_OWNER;
                  zacep->a_type = ACCESS_ALLOWED_ACE_TYPE;
          }
  
! #ifdef _KERNEL
          acl_info->vsa_aclcnt = zacecnt;
          acl_info->vsa_aclentp = zacep0;
          acl_info->vsa_aclentsz = zacl_size;
  #else   /* _KERNEL */
          acl_info->acl_cnt = zacecnt;
--- 1118,1128 ----
                      ACE_READ_ACL | ACE_WRITE_ACL;
                  zacep->a_flags = ACE_OWNER;
                  zacep->a_type = ACCESS_ALLOWED_ACE_TYPE;
          }
  
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
          acl_info->vsa_aclcnt = zacecnt;
          acl_info->vsa_aclentp = zacep0;
          acl_info->vsa_aclentsz = zacl_size;
  #else   /* _KERNEL */
          acl_info->acl_cnt = zacecnt;
*** 1224,1234 ****
                  if (*p != '-') {
                          err = EINVAL;
                          goto out;
                  }
                  p++;
! #ifdef  _KERNEL
                  err = ddi_strtoul(p, &np, 10, &sa);
                  if (err != 0)
                          goto out;
  #else   /* _KERNEL */
                  sa = strtoul(p, &np, 10);
--- 1227,1237 ----
                  if (*p != '-') {
                          err = EINVAL;
                          goto out;
                  }
                  p++;
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
                  err = ddi_strtoul(p, &np, 10, &sa);
                  if (err != 0)
                          goto out;
  #else   /* _KERNEL */
                  sa = strtoul(p, &np, 10);
*** 1407,1417 ****
   * "batch" request for idmap with results in mapinfo, and the
   * second builds the NT SD using the idmap SID results.
   */
  int
  smbfs_acl_zfs2sd(
! #ifdef  _KERNEL
          vsecattr_t *acl_info,
  #else /* _KERNEL */
          acl_t *acl_info,
  #endif /* _KERNEL */
          uid_t own_uid,
--- 1410,1420 ----
   * "batch" request for idmap with results in mapinfo, and the
   * second builds the NT SD using the idmap SID results.
   */
  int
  smbfs_acl_zfs2sd(
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
          vsecattr_t *acl_info,
  #else /* _KERNEL */
          acl_t *acl_info,
  #endif /* _KERNEL */
          uid_t own_uid,
*** 1453,1463 ****
                          return (EINVAL);
                  if (own_uid == (uid_t)-1)
                          return (EINVAL);
                  if (own_gid == (gid_t)-1)
                          return (EINVAL);
! #ifdef  _KERNEL
                  if ((acl_info->vsa_mask & VSA_ACE) == 0)
                          return (EINVAL);
                  zacecnt = acl_info->vsa_aclcnt;
                  zacevec = acl_info->vsa_aclentp;
  #else   /* _KERNEL */
--- 1456,1466 ----
                          return (EINVAL);
                  if (own_uid == (uid_t)-1)
                          return (EINVAL);
                  if (own_gid == (gid_t)-1)
                          return (EINVAL);
! #if defined(_KERNEL) || defined(_FAKE_KERNEL)
                  if ((acl_info->vsa_mask & VSA_ACE) == 0)
                          return (EINVAL);
                  zacecnt = acl_info->vsa_aclcnt;
                  zacevec = acl_info->vsa_aclentp;
  #else   /* _KERNEL */