CLOEXEC for all the openfile() calls to avoid leaking the fifo's (created and opened by vmmd itself) to ukvm-bin started later
This commit is contained in:
parent
2764899426
commit
c9afb6f5dc
|
@ -26,12 +26,12 @@ let rec openfile fn mode perm = try Unix.openfile fn mode perm with
|
||||||
| Unix.Unix_error (Unix.EINTR, _, _) -> openfile fn mode perm
|
| Unix.Unix_error (Unix.EINTR, _, _) -> openfile fn mode perm
|
||||||
|
|
||||||
let fd_for_file flag f =
|
let fd_for_file flag f =
|
||||||
try Ok (openfile (Fpath.to_string f) flag 0o644)
|
try Ok (openfile (Fpath.to_string f) (Unix.O_CLOEXEC :: flag) 0o644)
|
||||||
with Unix.Unix_error (e, _, _) -> err_file f e
|
with Unix.Unix_error (e, _, _) -> err_file f e
|
||||||
|
|
||||||
let read_fd_for_file = fd_for_file [Unix.O_RDONLY]
|
let read_fd_for_file = fd_for_file Unix.[ O_RDONLY ]
|
||||||
|
|
||||||
let write_fd_for_file = fd_for_file [Unix.O_WRONLY ; Unix.O_APPEND]
|
let write_fd_for_file = fd_for_file Unix.[ O_WRONLY ; O_APPEND ]
|
||||||
|
|
||||||
let null = match read_fd_for_file (Fpath.v "/dev/null") with
|
let null = match read_fd_for_file (Fpath.v "/dev/null") with
|
||||||
| Ok fd -> fd
|
| Ok fd -> fd
|
||||||
|
@ -123,7 +123,6 @@ let prepare vm =
|
||||||
| Error () -> Error (`Msg "failed to uncompress")
|
| Error () -> Error (`Msg "failed to uncompress")
|
||||||
end
|
end
|
||||||
| `Ukvm_arm64, _ -> Error (`Msg "no amd64 ukvm image found")) >>= fun image ->
|
| `Ukvm_arm64, _ -> Error (`Msg "no amd64 ukvm image found")) >>= fun image ->
|
||||||
Bos.OS.File.write (image_file vm) (Cstruct.to_string image) >>= fun () ->
|
|
||||||
let fifo = fifo_file vm in
|
let fifo = fifo_file vm in
|
||||||
(match fifo_exists fifo with
|
(match fifo_exists fifo with
|
||||||
| Ok true -> Ok ()
|
| Ok true -> Ok ()
|
||||||
|
@ -138,6 +137,7 @@ let prepare vm =
|
||||||
create_tap b >>= fun tap ->
|
create_tap b >>= fun tap ->
|
||||||
Ok (tap :: acc))
|
Ok (tap :: acc))
|
||||||
(Ok []) vm.network >>= fun taps ->
|
(Ok []) vm.network >>= fun taps ->
|
||||||
|
Bos.OS.File.write (image_file vm) (Cstruct.to_string image) >>= fun () ->
|
||||||
Ok (List.rev taps)
|
Ok (List.rev taps)
|
||||||
|
|
||||||
let shutdown vm =
|
let shutdown vm =
|
||||||
|
|
Loading…
Reference in a new issue