END_TEST START_TEST (netacl_dup_test) { pr_netacl_t *acl, *res; res = pr_netacl_dup(NULL, NULL); fail_unless(res == NULL, "Failed to handle NULL arguments"); fail_unless(errno == EINVAL, "Failed to set errno to EINVAL"); res = pr_netacl_dup(p, NULL); fail_unless(res == NULL, "Failed to handle NULL ACL argument"); fail_unless(errno == EINVAL, "Failed to set errno to EINVAL"); acl = pr_netacl_create(p, "ALL"); fail_unless(acl != NULL, "Failed to create ALL ACL"); res = pr_netacl_dup(NULL, acl); fail_unless(res == NULL, "Failed to handle NULL pool"); fail_unless(errno == EINVAL, "Failed to set errno to EINVAL"); res = pr_netacl_dup(p, acl); fail_unless(res != NULL, "Failed to dup ACL: %s", strerror(errno)); fail_unless(strcmp(pr_netacl_get_str(p, res), pr_netacl_get_str(p, acl)) == 0, "Expected '%s', got '%s'", pr_netacl_get_str(p, acl), pr_netacl_get_str(p, res)); }
int pr_class_add_acl(pr_netacl_t *acl) { if (!acl) { errno = EINVAL; return -1; } if (!curr_cls) { errno = EPERM; return -1; } /* Add this ACL rule to the current Class. */ if (!curr_cls->cls_acls) curr_cls->cls_acls = make_array(curr_cls->cls_pool, 1, sizeof(pr_netacl_t *)); *((pr_netacl_t **) push_array(curr_cls->cls_acls)) = pr_netacl_dup(curr_cls->cls_pool, acl); return 0; }