⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gentest.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 5 页
字号:
	    options.smb2) {		level = RAW_FILEINFO_SMB2_ALL_INFORMATION;	}	switch (level) {	case RAW_FILEINFO_GENERIC:		return false;	case RAW_FILEINFO_GETATTR:		CHECK_ATTRIB(getattr.out.attrib);		CHECK_EQUAL(getattr.out.size);		CHECK_TIMES_EQUAL(getattr.out.write_time);		break;	case RAW_FILEINFO_GETATTRE:		CHECK_TIMES_EQUAL(getattre.out.create_time);		CHECK_TIMES_EQUAL(getattre.out.access_time);		CHECK_TIMES_EQUAL(getattre.out.write_time);		CHECK_EQUAL(getattre.out.size);		CHECK_EQUAL(getattre.out.alloc_size);		CHECK_ATTRIB(getattre.out.attrib);		break;	case RAW_FILEINFO_STANDARD:		CHECK_TIMES_EQUAL(standard.out.create_time);		CHECK_TIMES_EQUAL(standard.out.access_time);		CHECK_TIMES_EQUAL(standard.out.write_time);		CHECK_EQUAL(standard.out.size);		CHECK_EQUAL(standard.out.alloc_size);		CHECK_ATTRIB(standard.out.attrib);		break;	case RAW_FILEINFO_EA_SIZE:		CHECK_TIMES_EQUAL(ea_size.out.create_time);		CHECK_TIMES_EQUAL(ea_size.out.access_time);		CHECK_TIMES_EQUAL(ea_size.out.write_time);		CHECK_EQUAL(ea_size.out.size);		CHECK_EQUAL(ea_size.out.alloc_size);		CHECK_ATTRIB(ea_size.out.attrib);		CHECK_EQUAL(ea_size.out.ea_size);		break;	case RAW_FILEINFO_ALL_EAS:		CHECK_EQUAL(all_eas.out.num_eas);		for (i=0;i<parm[0].all_eas.out.num_eas;i++) {			CHECK_EQUAL(all_eas.out.eas[i].flags);			CHECK_WSTR_EQUAL(all_eas.out.eas[i].name);			CHECK_BLOB_EQUAL(all_eas.out.eas[i].value);		}		break;	case RAW_FILEINFO_IS_NAME_VALID:		break;			case RAW_FILEINFO_BASIC_INFO:	case RAW_FILEINFO_BASIC_INFORMATION:		CHECK_NTTIMES_EQUAL(basic_info.out.create_time);		CHECK_NTTIMES_EQUAL(basic_info.out.access_time);		CHECK_NTTIMES_EQUAL(basic_info.out.write_time);		CHECK_NTTIMES_EQUAL(basic_info.out.change_time);		CHECK_ATTRIB(basic_info.out.attrib);		break;	case RAW_FILEINFO_STANDARD_INFO:	case RAW_FILEINFO_STANDARD_INFORMATION:		CHECK_EQUAL(standard_info.out.alloc_size);		CHECK_EQUAL(standard_info.out.size);		CHECK_EQUAL(standard_info.out.nlink);		CHECK_EQUAL(standard_info.out.delete_pending);		CHECK_EQUAL(standard_info.out.directory);		break;	case RAW_FILEINFO_EA_INFO:	case RAW_FILEINFO_EA_INFORMATION:		CHECK_EQUAL(ea_info.out.ea_size);		break;	case RAW_FILEINFO_NAME_INFO:	case RAW_FILEINFO_NAME_INFORMATION:		CHECK_WSTR_EQUAL(name_info.out.fname);		break;	case RAW_FILEINFO_ALL_INFO:	case RAW_FILEINFO_ALL_INFORMATION:		CHECK_NTTIMES_EQUAL(all_info.out.create_time);		CHECK_NTTIMES_EQUAL(all_info.out.access_time);		CHECK_NTTIMES_EQUAL(all_info.out.write_time);		CHECK_NTTIMES_EQUAL(all_info.out.change_time);		CHECK_ATTRIB(all_info.out.attrib);		CHECK_EQUAL(all_info.out.alloc_size);		CHECK_EQUAL(all_info.out.size);		CHECK_EQUAL(all_info.out.nlink);		CHECK_EQUAL(all_info.out.delete_pending);		CHECK_EQUAL(all_info.out.directory);		CHECK_EQUAL(all_info.out.ea_size);		CHECK_WSTR_EQUAL(all_info.out.fname);		break;	case RAW_FILEINFO_ALT_NAME_INFO:	case RAW_FILEINFO_ALT_NAME_INFORMATION:		CHECK_WSTR_EQUAL(alt_name_info.out.fname);		break;	case RAW_FILEINFO_STREAM_INFO:	case RAW_FILEINFO_STREAM_INFORMATION:		CHECK_EQUAL(stream_info.out.num_streams);		for (i=0;i<parm[0].stream_info.out.num_streams;i++) {			CHECK_EQUAL(stream_info.out.streams[i].size);			CHECK_EQUAL(stream_info.out.streams[i].alloc_size);			CHECK_WSTR_EQUAL(stream_info.out.streams[i].stream_name);		}		break;	case RAW_FILEINFO_COMPRESSION_INFO:	case RAW_FILEINFO_COMPRESSION_INFORMATION:		CHECK_EQUAL(compression_info.out.compressed_size);		CHECK_EQUAL(compression_info.out.format);		CHECK_EQUAL(compression_info.out.unit_shift);		CHECK_EQUAL(compression_info.out.chunk_shift);		CHECK_EQUAL(compression_info.out.cluster_shift);		break;	case RAW_FILEINFO_INTERNAL_INFORMATION:		CHECK_EQUAL(internal_information.out.file_id);		break;	case RAW_FILEINFO_ACCESS_INFORMATION:		CHECK_EQUAL(access_information.out.access_flags);		break;	case RAW_FILEINFO_POSITION_INFORMATION:		CHECK_EQUAL(position_information.out.position);		break;	case RAW_FILEINFO_MODE_INFORMATION:		CHECK_EQUAL(mode_information.out.mode);		break;	case RAW_FILEINFO_ALIGNMENT_INFORMATION:		CHECK_EQUAL(alignment_information.out.alignment_requirement);		break;	case RAW_FILEINFO_NETWORK_OPEN_INFORMATION:		CHECK_NTTIMES_EQUAL(network_open_information.out.create_time);		CHECK_NTTIMES_EQUAL(network_open_information.out.access_time);		CHECK_NTTIMES_EQUAL(network_open_information.out.write_time);		CHECK_NTTIMES_EQUAL(network_open_information.out.change_time);		CHECK_EQUAL(network_open_information.out.alloc_size);		CHECK_EQUAL(network_open_information.out.size);		CHECK_ATTRIB(network_open_information.out.attrib);		break;	case RAW_FILEINFO_ATTRIBUTE_TAG_INFORMATION:		CHECK_ATTRIB(attribute_tag_information.out.attrib);		CHECK_EQUAL(attribute_tag_information.out.reparse_tag);		break;	case RAW_FILEINFO_SMB2_ALL_INFORMATION:		CHECK_NTTIMES_EQUAL(all_info2.out.create_time);		CHECK_NTTIMES_EQUAL(all_info2.out.access_time);		CHECK_NTTIMES_EQUAL(all_info2.out.write_time);		CHECK_NTTIMES_EQUAL(all_info2.out.change_time);		CHECK_ATTRIB(all_info2.out.attrib);		CHECK_EQUAL(all_info2.out.unknown1);		CHECK_EQUAL(all_info2.out.alloc_size);		CHECK_EQUAL(all_info2.out.size);		CHECK_EQUAL(all_info2.out.nlink);		CHECK_EQUAL(all_info2.out.delete_pending);		CHECK_EQUAL(all_info2.out.directory);		CHECK_EQUAL(all_info2.out.file_id);		CHECK_EQUAL(all_info2.out.ea_size);		CHECK_EQUAL(all_info2.out.access_mask);		CHECK_EQUAL(all_info2.out.position);		CHECK_EQUAL(all_info2.out.mode);		CHECK_EQUAL(all_info2.out.alignment_requirement);		CHECK_WSTR_EQUAL(all_info2.out.fname);		break;	case RAW_FILEINFO_SMB2_ALL_EAS:		CHECK_EQUAL(all_eas.out.num_eas);		for (i=0;i<parm[0].all_eas.out.num_eas;i++) {			CHECK_EQUAL(all_eas.out.eas[i].flags);			CHECK_WSTR_EQUAL(all_eas.out.eas[i].name);			CHECK_BLOB_EQUAL(all_eas.out.eas[i].value);		}		break;	case RAW_FILEINFO_SEC_DESC:		CHECK_SECDESC(query_secdesc.out.sd);		break;		/* Unhandled levels */	case RAW_FILEINFO_EA_LIST:	case RAW_FILEINFO_UNIX_BASIC:	case RAW_FILEINFO_UNIX_LINK:	case RAW_FILEINFO_UNIX_INFO2:		break;	}	return true;}/*  generate openx operations*/static bool handler_smb_openx(int instance){	union smb_open parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].openx.level = RAW_OPEN_OPENX;	parm[0].openx.in.flags = gen_openx_flags();	parm[0].openx.in.open_mode = gen_openx_mode();	parm[0].openx.in.search_attrs = gen_attrib();	parm[0].openx.in.file_attrs = gen_attrib();	parm[0].openx.in.write_time = gen_timet();	parm[0].openx.in.open_func = gen_openx_func();	parm[0].openx.in.size = gen_io_count();	parm[0].openx.in.timeout = gen_timeout();	parm[0].openx.in.fname = gen_fname_open(instance);	if (!options.use_oplocks) {		/* mask out oplocks */		parm[0].openx.in.flags &= ~(OPENX_FLAGS_REQUEST_OPLOCK|					    OPENX_FLAGS_REQUEST_BATCH_OPLOCK);	}		GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_open(tree, current_op.mem_ctx, &parm[i]));	CHECK_ATTRIB(openx.out.attrib);	CHECK_EQUAL(openx.out.size);	CHECK_EQUAL(openx.out.access);	CHECK_EQUAL(openx.out.ftype);	CHECK_EQUAL(openx.out.devstate);	CHECK_EQUAL(openx.out.action);	CHECK_EQUAL(openx.out.access_mask);	CHECK_EQUAL(openx.out.unknown);	CHECK_TIMES_EQUAL(openx.out.write_time);	/* open creates a new file handle */	ADD_HANDLE_SMB(parm[0].openx.in.fname, openx.out.file.fnum);	return true;}/*  generate open operations*/static bool handler_smb_open(int instance){	union smb_open parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].openold.level = RAW_OPEN_OPEN;	parm[0].openold.in.open_mode = gen_bits_mask2(0xF, 0xFFFF);	parm[0].openold.in.search_attrs = gen_attrib();	parm[0].openold.in.fname = gen_fname_open(instance);	if (!options.use_oplocks) {		/* mask out oplocks */		parm[0].openold.in.open_mode &= ~(OPENX_FLAGS_REQUEST_OPLOCK|						  OPENX_FLAGS_REQUEST_BATCH_OPLOCK);	}		GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_open(tree, current_op.mem_ctx, &parm[i]));	CHECK_ATTRIB(openold.out.attrib);	CHECK_TIMES_EQUAL(openold.out.write_time);	CHECK_EQUAL(openold.out.size);	CHECK_EQUAL(openold.out.rmode);	/* open creates a new file handle */	ADD_HANDLE_SMB(parm[0].openold.in.fname, openold.out.file.fnum);	return true;}/*  generate ntcreatex operations*/static bool handler_smb_ntcreatex(int instance){	union smb_open parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].ntcreatex.level = RAW_OPEN_NTCREATEX;	parm[0].ntcreatex.in.flags = gen_ntcreatex_flags();	parm[0].ntcreatex.in.root_fid = gen_root_fid(instance);	parm[0].ntcreatex.in.access_mask = gen_access_mask();	parm[0].ntcreatex.in.alloc_size = gen_alloc_size();	parm[0].ntcreatex.in.file_attr = gen_attrib();	parm[0].ntcreatex.in.share_access = gen_bits_mask2(0x7, 0xFFFFFFFF);	parm[0].ntcreatex.in.open_disposition = gen_open_disp();	parm[0].ntcreatex.in.create_options = gen_create_options();	parm[0].ntcreatex.in.impersonation = gen_bits_mask2(0, 0xFFFFFFFF);	parm[0].ntcreatex.in.security_flags = gen_bits_mask2(0, 0xFF);	parm[0].ntcreatex.in.fname = gen_fname_open(instance);	if (!options.use_oplocks) {		/* mask out oplocks */		parm[0].ntcreatex.in.flags &= ~(NTCREATEX_FLAGS_REQUEST_OPLOCK|						NTCREATEX_FLAGS_REQUEST_BATCH_OPLOCK);	}		GEN_COPY_PARM;	if (parm[0].ntcreatex.in.root_fid != 0) {		GEN_SET_FNUM_SMB(ntcreatex.in.root_fid);	}	GEN_CALL_SMB(smb_raw_open(tree, current_op.mem_ctx, &parm[i]));	CHECK_EQUAL(ntcreatex.out.oplock_level);	CHECK_EQUAL(ntcreatex.out.create_action);	CHECK_NTTIMES_EQUAL(ntcreatex.out.create_time);	CHECK_NTTIMES_EQUAL(ntcreatex.out.access_time);	CHECK_NTTIMES_EQUAL(ntcreatex.out.write_time);	CHECK_NTTIMES_EQUAL(ntcreatex.out.change_time);	CHECK_ATTRIB(ntcreatex.out.attrib);	CHECK_EQUAL(ntcreatex.out.alloc_size);	CHECK_EQUAL(ntcreatex.out.size);	CHECK_EQUAL(ntcreatex.out.file_type);	CHECK_EQUAL(ntcreatex.out.ipc_state);	CHECK_EQUAL(ntcreatex.out.is_directory);	/* ntcreatex creates a new file handle */	ADD_HANDLE_SMB(parm[0].ntcreatex.in.fname, ntcreatex.out.file.fnum);	return true;}/*  generate close operations*/static bool handler_smb_close(int instance){	union smb_close parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].close.level = RAW_CLOSE_CLOSE;	parm[0].close.in.file.fnum = gen_fnum_close(instance);	parm[0].close.in.write_time = gen_timet();	GEN_COPY_PARM;	GEN_SET_FNUM_SMB(close.in.file.fnum);	GEN_CALL_SMB(smb_raw_close(tree, &parm[i]));	REMOVE_HANDLE_SMB(close.in.file.fnum);	return true;}/*  generate unlink operations*/static bool handler_smb_unlink(int instance){	union smb_unlink parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].unlink.in.pattern = gen_pattern();	parm[0].unlink.in.attrib = gen_attrib();	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_unlink(tree, &parm[i]));	return true;}/*  generate chkpath operations*/static bool handler_smb_chkpath(int instance){	union smb_chkpath parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].chkpath.in.path = gen_fname_open(instance);	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_chkpath(tree, &parm[i]));	return true;}/*  generate mkdir operations*/static bool handler_smb_mkdir(int instance){	union smb_mkdir parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].mkdir.level = RAW_MKDIR_MKDIR;	parm[0].mkdir.in.path = gen_fname_open(instance);	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_mkdir(tree, &parm[i]));	return true;}/*  generate rmdir operations*/static bool handler_smb_rmdir(int instance){	struct smb_rmdir parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].in.path = gen_fname_open(instance);	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_rmdir(tree, &parm[i]));	return true;}/*  generate rename operations*/static bool handler_smb_rename(int instance){	union smb_rename parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].generic.level = RAW_RENAME_RENAME;	parm[0].rename.in.pattern1 = gen_pattern();	parm[0].rename.in.pattern2 = gen_pattern();	parm[0].rename.in.attrib = gen_attrib();	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_rename(tree, &parm[i]));	return true;}/*  generate ntrename operations*/static bool handler_smb_ntrename(int instance){	union smb_rename parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].generic.level = RAW_RENAME_NTRENAME;	parm[0].ntrename.in.old_name = gen_fname();	parm[0].ntrename.in.new_name = gen_fname();	parm[0].ntrename.in.attrib = gen_attrib();	parm[0].ntrename.in.cluster_size = gen_bits_mask2(0, 0xFFFFFFF);	parm[0].ntrename.in.flags = gen_rename_flags();	GEN_COPY_PARM;	GEN_CALL_SMB(smb_raw_rename(tree, &parm[i]));	return true;}/*  generate seek operations*/static bool handler_smb_seek(int instance){	union smb_seek parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].lseek.in.file.fnum = gen_fnum(instance);	parm[0].lseek.in.mode = gen_bits_mask2(0x3, 0xFFFF);	parm[0].lseek.in.offset = gen_offset();	GEN_COPY_PARM;	GEN_SET_FNUM_SMB(lseek.in.file.fnum);	GEN_CALL_SMB(smb_raw_seek(tree, &parm[i]));	CHECK_EQUAL(lseek.out.offset);	return true;}/*  generate readx operations*/static bool handler_smb_readx(int instance){	union smb_read parm[NSERVERS];	NTSTATUS status[NSERVERS];	parm[0].readx.level = RAW_READ_READX;	parm[0].readx.in.file.fnum = gen_fnum(instance);	parm[0].readx.in.offset = gen_offset();	parm[0].readx.in.mincnt = gen_io_count();	parm[0].readx.in.maxcnt = gen_io_count();	parm[0].readx.in.remaining = gen_io_count();	parm[0].readx.in.read_for_execute = gen_bool();	parm[0].readx.out.data = talloc_array(current_op.mem_ctx, uint8_t,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -