@@ -224,10 +224,6 @@ impl Root {
224
224
///
225
225
/// [`Root`]: struct.Root.html
226
226
/// [`Handle`]: trait.Handle.html
227
- // TODO: We need to add a way to restrict more things (such as disallowing
228
- // all symlinks or disallowing mount-point crossings). Arguably we
229
- // might even want to expose an equivalent of RESOLVE_* flags since
230
- // that would make it simpler...
231
227
#[ inline]
232
228
pub fn resolve < P : AsRef < Path > > ( & self , path : P ) -> Result < Handle , Error > {
233
229
self . resolver . resolve ( & self . inner , path)
@@ -254,11 +250,11 @@ impl Root {
254
250
// the parent.
255
251
let ( parent, name) =
256
252
path_split ( path. as_ref ( ) ) . wrap ( "split target path into (parent, name)" ) ?;
257
- let dirfd = self
253
+ let dir = self
258
254
. resolve ( parent)
259
255
. wrap ( "resolve target parent directory for inode creation" ) ?
260
- . inner
261
- . as_raw_fd ( ) ;
256
+ . inner ;
257
+ let dirfd = dir . as_raw_fd ( ) ;
262
258
263
259
match inode_type {
264
260
InodeType :: File ( _) => unreachable ! ( ) , /* We dealt with this above. */
@@ -275,11 +271,11 @@ impl Root {
275
271
InodeType :: Hardlink ( target) => {
276
272
let ( oldparent, oldname) =
277
273
path_split ( target) . wrap ( "split hardlink source path into (parent, name)" ) ?;
278
- let olddirfd = self
274
+ let olddir = self
279
275
. resolve ( oldparent)
280
276
. wrap ( "resolve hardlink source parent for hardlink" ) ?
281
- . inner
282
- . as_raw_fd ( ) ;
277
+ . inner ;
278
+ let olddirfd = olddir . as_raw_fd ( ) ;
283
279
syscalls:: linkat ( olddirfd, oldname, dirfd, name, 0 )
284
280
}
285
281
InodeType :: Fifo ( perm) => {
@@ -337,11 +333,11 @@ impl Root {
337
333
// the parent.
338
334
let ( parent, name) =
339
335
path_split ( path. as_ref ( ) ) . wrap ( "split target path into (parent, name)" ) ?;
340
- let dirfd = self
336
+ let dir = self
341
337
. resolve ( parent)
342
338
. wrap ( "resolve target parent directory for inode creation" ) ?
343
- . inner
344
- . as_raw_fd ( ) ;
339
+ . inner ;
340
+ let dirfd = dir . as_raw_fd ( ) ;
345
341
346
342
// TODO: openat2(2) supports doing O_CREAT on trailing symlinks without
347
343
// O_NOFOLLOW. We might want to expose that here, though because
@@ -375,11 +371,11 @@ impl Root {
375
371
// the parent.
376
372
let ( parent, name) =
377
373
path_split ( path. as_ref ( ) ) . wrap ( "split target path into (parent, name)" ) ?;
378
- let dirfd = self
374
+ let dir = self
379
375
. resolve ( parent)
380
376
. wrap ( "resolve target parent directory for inode creation" ) ?
381
- . inner
382
- . as_raw_fd ( ) ;
377
+ . inner ;
378
+ let dirfd = dir . as_raw_fd ( ) ;
383
379
384
380
// There is no kernel API to "just remove this inode please". You need
385
381
// to know ahead-of-time what inode type it is. So we will try a couple
@@ -442,16 +438,16 @@ impl Root {
442
438
let ( dst_parent, dst_name) =
443
439
path_split ( destination. as_ref ( ) ) . wrap ( "split target path into (parent, name)" ) ?;
444
440
445
- let src_dirfd = self
441
+ let src_dir = self
446
442
. resolve ( src_parent)
447
443
. wrap ( "resolve source path for rename" ) ?
448
- . inner
449
- . as_raw_fd ( ) ;
450
- let dst_dirfd = self
444
+ . inner ;
445
+ let src_dirfd = src_dir . as_raw_fd ( ) ;
446
+ let dst_dir = self
451
447
. resolve ( dst_parent)
452
448
. wrap ( "resolve target path for rename" ) ?
453
- . inner
454
- . as_raw_fd ( ) ;
449
+ . inner ;
450
+ let dst_dirfd = dst_dir . as_raw_fd ( ) ;
455
451
456
452
syscalls:: renameat2 ( src_dirfd, src_name, dst_dirfd, dst_name, flags. 0 ) . context (
457
453
error:: RawOsError {
0 commit comments