Add lib/capsicum/libc.rb
This commit is contained in:
parent
d59fdef28e
commit
9341ba2ccf
2 changed files with 35 additions and 35 deletions
|
@ -4,40 +4,7 @@ require "capsicum/version"
|
|||
require "fiddle"
|
||||
|
||||
module Capsicum
|
||||
# @api private
|
||||
module LibC
|
||||
module_function
|
||||
|
||||
##
|
||||
# Provides a Ruby interface for cap_enter(2)
|
||||
# @return [Integer]
|
||||
def cap_enter
|
||||
Fiddle::Function.new(
|
||||
libc["cap_enter"],
|
||||
[],
|
||||
Fiddle::Types::INT
|
||||
).call
|
||||
end
|
||||
|
||||
##
|
||||
# Provides a Ruby interface for cap_getmode(2)
|
||||
# @param [Fiddle::Pointer] uintp
|
||||
# @return [Integer]
|
||||
def cap_getmode(uintp)
|
||||
Fiddle::Function.new(
|
||||
libc["cap_getmode"],
|
||||
[Fiddle::Types::INTPTR_T],
|
||||
Fiddle::Types::INT
|
||||
).call(uintp)
|
||||
end
|
||||
|
||||
##
|
||||
# @api private
|
||||
def libc
|
||||
@libc ||= Fiddle.dlopen Dir["/lib/libc.*"].first
|
||||
end
|
||||
end
|
||||
|
||||
require_relative "capsicum/libc"
|
||||
module_function
|
||||
|
||||
##
|
||||
|
@ -47,7 +14,7 @@ module Capsicum
|
|||
# @raise [SystemCallError]
|
||||
# Might raise a subclass of SystemCallError
|
||||
# @return [Boolean]
|
||||
# Returns true if the current process is in capability mode
|
||||
# Returns true when the current process is in capability mode
|
||||
def in_capability_mode?
|
||||
uintp = Fiddle::Pointer.malloc(Fiddle::SIZEOF_UINT)
|
||||
ret = LibC.cap_getmode(uintp)
|
||||
|
|
33
lib/capsicum/libc.rb
Normal file
33
lib/capsicum/libc.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
# @api private
|
||||
module Capsicum::LibC
|
||||
module_function
|
||||
|
||||
##
|
||||
# Provides a Ruby interface for cap_enter(2)
|
||||
# @return [Integer]
|
||||
def cap_enter
|
||||
Fiddle::Function.new(
|
||||
libc["cap_enter"],
|
||||
[],
|
||||
Fiddle::Types::INT
|
||||
).call
|
||||
end
|
||||
|
||||
##
|
||||
# Provides a Ruby interface for cap_getmode(2)
|
||||
# @param [Fiddle::Pointer] uintp
|
||||
# @return [Integer]
|
||||
def cap_getmode(uintp)
|
||||
Fiddle::Function.new(
|
||||
libc["cap_getmode"],
|
||||
[Fiddle::Types::INTPTR_T],
|
||||
Fiddle::Types::INT
|
||||
).call(uintp)
|
||||
end
|
||||
|
||||
##
|
||||
# @api private
|
||||
def libc
|
||||
@libc ||= Fiddle.dlopen Dir["/lib/libc.*"].first
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue