--- smbd/posix_acls.c.old Tue Aug 31 10:51:19 2004 +++ smbd/posix_acls.c Thu Oct 21 09:24:38 2004 @@ -3195,6 +3195,7 @@ int get_acl_group_bits( connection_struc int entry_id = SMB_ACL_FIRST_ENTRY; SMB_ACL_ENTRY_T entry; SMB_ACL_T posix_acl; + int result = -1; posix_acl = SMB_VFS_SYS_ACL_GET_FILE(conn, fname, SMB_ACL_TYPE_ACCESS); if (posix_acl == (SMB_ACL_T)NULL) @@ -3209,21 +3210,24 @@ int get_acl_group_bits( connection_struc entry_id = SMB_ACL_NEXT_ENTRY; if (SMB_VFS_SYS_ACL_GET_TAG_TYPE(conn, entry, &tagtype) ==-1) - return -1; + break; if (tagtype == SMB_ACL_GROUP_OBJ) { if (SMB_VFS_SYS_ACL_GET_PERMSET(conn, entry, &permset) == -1) { - return -1; + break; } else { *mode &= ~(S_IRGRP|S_IWGRP|S_IXGRP); *mode |= (SMB_VFS_SYS_ACL_GET_PERM(conn, permset, SMB_ACL_READ) ? S_IRGRP : 0); *mode |= (SMB_VFS_SYS_ACL_GET_PERM(conn, permset, SMB_ACL_WRITE) ? S_IWGRP : 0); *mode |= (SMB_VFS_SYS_ACL_GET_PERM(conn, permset, SMB_ACL_EXECUTE) ? S_IXGRP : 0); - return 0;; + result = 0; + break; } } } - return -1; + SMB_VFS_SYS_ACL_FREE_ACL(conn, posix_acl); + + return result; } /****************************************************************************