4
4
5
5
use std:: { mem, slice} ;
6
6
7
- use zerocopy:: { AsBytes , FromBytes } ;
7
+ use zerocopy:: { AsBytes , FromBytes , FromZeroes } ;
8
8
9
9
#[ repr( C , packed( 1 ) ) ]
10
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
10
+ #[ derive(
11
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
12
+ ) ]
11
13
pub struct VersionU8 {
12
14
pub major : u8 ,
13
15
pub minor : u8 ,
14
16
}
15
17
#[ repr( C , packed( 2 ) ) ]
16
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
18
+ #[ derive(
19
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
20
+ ) ]
17
21
pub struct VersionU16 {
18
22
pub major : u16 ,
19
23
pub minor : u16 ,
20
24
}
21
25
#[ repr( C , packed( 4 ) ) ]
22
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
26
+ #[ derive(
27
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
28
+ ) ]
23
29
pub struct VersionU32 {
24
30
pub major : u32 ,
25
31
pub minor : u32 ,
26
32
}
27
33
#[ repr( C , packed( 2 ) ) ]
28
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
34
+ #[ derive(
35
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
36
+ ) ]
29
37
pub struct CoffHeader {
30
38
pub machine : u16 ,
31
39
pub number_of_sections : u16 ,
@@ -36,7 +44,9 @@ pub struct CoffHeader {
36
44
pub characteristics : u16 ,
37
45
}
38
46
#[ repr( C , packed( 2 ) ) ]
39
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
47
+ #[ derive(
48
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
49
+ ) ]
40
50
pub struct StandardHeader {
41
51
pub magic : u16 ,
42
52
pub linker_version : VersionU8 ,
@@ -47,7 +57,7 @@ pub struct StandardHeader {
47
57
pub base_of_code : u32 ,
48
58
}
49
59
#[ repr( C ) ]
50
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , Default ) ]
60
+ #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , Default ) ]
51
61
pub struct WindowsHeader < UXX > {
52
62
pub image_base : UXX ,
53
63
pub section_alignment : u32 ,
@@ -187,14 +197,18 @@ impl GenericWindowsHeader {
187
197
}
188
198
189
199
#[ repr( C , packed( 4 ) ) ]
190
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
200
+ #[ derive(
201
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
202
+ ) ]
191
203
pub struct ImageDataDirectory {
192
204
pub virtual_address : u32 ,
193
205
pub size : u32 ,
194
206
}
195
207
196
208
#[ repr( C , packed( 4 ) ) ]
197
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
209
+ #[ derive(
210
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
211
+ ) ]
198
212
pub struct SectionHeader {
199
213
pub name : u64 ,
200
214
pub virtual_size : u32 ,
@@ -220,7 +234,9 @@ impl SectionHeader {
220
234
}
221
235
222
236
#[ repr( C , packed( 2 ) ) ]
223
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
237
+ #[ derive(
238
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
239
+ ) ]
224
240
pub struct ResourceDirectoryTable {
225
241
pub characteristics : u32 ,
226
242
pub time_date_stamp : u32 ,
@@ -230,14 +246,18 @@ pub struct ResourceDirectoryTable {
230
246
}
231
247
232
248
#[ repr( C , packed( 4 ) ) ]
233
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
249
+ #[ derive(
250
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
251
+ ) ]
234
252
pub struct ResourceDirectoryEntry {
235
253
pub name_offset_or_integer_id : u32 ,
236
254
pub data_entry_or_subdirectory_offset : u32 ,
237
255
}
238
256
239
257
#[ repr( C , packed( 4 ) ) ]
240
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
258
+ #[ derive(
259
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
260
+ ) ]
241
261
pub struct ResourceDataEntry {
242
262
pub data_rva : u32 ,
243
263
pub size : u32 ,
@@ -246,15 +266,19 @@ pub struct ResourceDataEntry {
246
266
}
247
267
248
268
#[ repr( C , packed( 2 ) ) ]
249
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
269
+ #[ derive(
270
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
271
+ ) ]
250
272
pub struct IconDirectory {
251
273
pub reserved : u16 ,
252
274
pub type_ : u16 ,
253
275
pub count : u16 ,
254
276
}
255
277
256
278
#[ repr( C , packed( 1 ) ) ]
257
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
279
+ #[ derive(
280
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
281
+ ) ]
258
282
pub struct IconDirectoryEntry {
259
283
pub width : u8 ,
260
284
pub height : u8 ,
@@ -267,7 +291,7 @@ pub struct IconDirectoryEntry {
267
291
}
268
292
269
293
#[ repr( C , packed( 4 ) ) ]
270
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes ) ]
294
+ #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes ) ]
271
295
pub struct FixedFileInfo {
272
296
pub signature : u32 ,
273
297
pub struct_version : VersionU16 ,
@@ -298,7 +322,9 @@ impl Default for FixedFileInfo {
298
322
}
299
323
300
324
#[ repr( C , packed( 2 ) ) ]
301
- #[ derive( Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , AsBytes , Default ) ]
325
+ #[ derive(
326
+ Debug , Clone , Copy , Eq , PartialEq , Ord , PartialOrd , FromBytes , FromZeroes , AsBytes , Default ,
327
+ ) ]
302
328
pub struct VersionHeader {
303
329
pub length : u16 ,
304
330
pub value_length : u16 ,
0 commit comments