示例#1
0
文件: utils.c 项目: stetre/moonassimp
int freeuserdata(lua_State *L, void *ptr)
    {
    ud_t *ud = userdata(ptr);
    if(!ud || !IsValid(ud))
        return 0; /* already deleted */
    CancelValid(ud);
    udata_free(L, ptr);
    return 1;
    }
示例#2
0
static int test_alloc_free(void)
{
	struct udata *udata;

	udata = udata_create_default();
	EXPECT_NOT_ERRPTR(udata);
	udata_free(udata);
	return 0;
}
示例#3
0
static int test_pack(void)
{
	uint32_t off, off2;
	char buf[32765];
	struct udata *udata, *udata2;

	udata = udata_create_default();
	EXPECT_NOT_ERRPTR(udata);
	EXPECT_ZERO(do_test_lookups(udata));
	memset(buf, 0, sizeof(buf));
	off = 0;
	EXPECT_EQ(pack_udata(udata, buf, &off, 1), -ENAMETOOLONG);
	EXPECT_ZERO(pack_udata(udata, buf, &off, sizeof(buf)));
	off2 = 0;
	udata2 = unpack_udata(buf, &off2, off / 2);
	EXPECT_ERRPTR(udata2);
	udata2 = unpack_udata(buf, &off2, off);
	EXPECT_NOT_ERRPTR(udata2);
	EXPECT_ZERO(do_test_lookups(udata2));
	udata_free(udata);
	udata_free(udata2);
	return 0;
}
示例#4
0
static int test_lookups(void)
{
	struct udata *udata;
	struct user *u;

	udata = udata_create_default();
	EXPECT_NOT_ERRPTR(udata);
	EXPECT_ZERO(do_test_lookups(udata));
	u = udata_lookup_user(udata, RF_NOBODY_NAME);
	if (IS_ERR(u))
		return PTR_ERR(u);
	EXPECT_EQ(user_in_gid(u, RF_SUPERUSER_GID), 0);
	EXPECT_ZERO(user_add_segid(udata, RF_NOBODY_NAME, 0));
	u = udata_lookup_user(udata, RF_NOBODY_NAME);
	if (IS_ERR(u))
		return PTR_ERR(u);
	EXPECT_EQ(user_in_gid(u, RF_SUPERUSER_GID), 1);
	udata_free(udata);
	return 0;
}