Пример #1
0
int get_acl(struct asfd *asfd, struct sbuf *sb,
	char **acltext, size_t *alen, struct cntr *cntr)
{
	acl_t acl=NULL;
	const char *path=sb->path.buf;

	if((acl=acl_contains_something(path, ACL_TYPE_ACCESS)))
	{
		if(get_acl_string(asfd, acl,
			acltext, alen, path, META_ACCESS_ACL, cntr))
		{
			acl_free(acl);
			return -1;
		}
		acl_free(acl);
	}

	if(S_ISDIR(sb->statp.st_mode))
	{
		if((acl=acl_contains_something(path, ACL_TYPE_DEFAULT)))
		{
			if(get_acl_string(asfd, acl,
				acltext, alen, path, META_DEFAULT_ACL, cntr))
			{
				acl_free(acl);
				return -1;
			}
			acl_free(acl);
		}
	}
	return 0;
}
Пример #2
0
Файл: acl.c Проект: grke/burp
int get_acl(struct asfd *asfd, const char *path, int isdir,
	char **acltext, size_t *alen, struct cntr *cntr)
{
	int ret=-1;
	acl_t acl=NULL;

	if((acl=acl_contains_something(path, ACL_TYPE_ACCESS)))
	{
		if(get_acl_string(asfd, acl,
			acltext, alen, path, META_ACCESS_ACL, cntr))
				goto end;
	}

	if(isdir)
	{
		if(acl) acl_free(acl);
		if((acl=acl_contains_something(path, ACL_TYPE_DEFAULT)))
		{
			if(get_acl_string(asfd, acl,
				acltext, alen, path, META_DEFAULT_ACL, cntr))
					goto end;
		}
	}
	ret=0;
end:
	if(acl) acl_free(acl);
	return ret;
}
Пример #3
0
int has_acl(const char *path, enum cmd cmd)
{
	acl_t acl=NULL;
	if(!(acl=acl_contains_something(path, ACL_TYPE_ACCESS))
	  || (cmd==CMD_DIRECTORY
	    && !(acl=acl_contains_something(path, ACL_TYPE_DEFAULT))))
		return 0;
	acl_free(acl);
	return 1;
}