Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Rbind is developed to automatically generate ruby bindings for OpenCV but is not tight to this library. It allows to import already wrapped types from other gems/libraries using rbind to share the same types across multiple gems/libraries. For now rbind uses a copy of the OpenCV python hdr parser to parse c/c++ header files and looks for certain defines. This gem is still under heavy development and the API might change in the future.
require 'rbind'
rbind = Rbind::Rbind.new("OpenCV")
# add dependency to opencv
rbind.pkg_config << "opencv"
#add opencv headers
rbind.includes = ["opencv2/core/core_c.h", "opencv2/core/types_c.h",
"opencv2/core/core.hpp", "opencv2/flann/miniflann.hpp",
"opencv2/imgproc/imgproc_c.h", "opencv2/imgproc/types_c.h",
"opencv2/imgproc/imgproc.hpp", "opencv2/photo/photo_c.h",
"opencv2/photo/photo.hpp", "opencv2/video/video.hpp",
"opencv2/features2d/features2d.hpp", "opencv2/objdetect/objdetect.hpp",
"opencv2/calib3d/calib3d.hpp", "opencv2/ml/ml.hpp",
"opencv2/highgui/highgui_c.h", "opencv2/highgui/highgui.hpp",
"opencv2/contrib/contrib.hpp", "opencv2/nonfree/nonfree.hpp",
"opencv2/nonfree/features2d.hpp"]
# auto add vector and ptr types
rbind.on_type_not_found do |owner,type|
if type =~ /Ptr_(.*)/
t = rbind.parser.find_type(owner,$1)
t2 = Rbind::RPtr.new(type,rbind,t).typedef("cv::Ptr<#{t.full_name} >")
rbind.parser.add_type t2
elsif type =~ /vector_(.*)/
t = rbind.parser.find_type(owner,$1)
t2 = Rbind::RVector.new(type,rbind,t).typedef("std::vector<#{t.full_name} >")
rbind.parser.add_type t2
end
end
# parse type definitions
rbind.parse File.join(File.dirname(__FILE__),"pre_opencv244.txt")
rbind.parse File.join(File.dirname(__FILE__),"opencv.txt")
# using namespace cv (cv::Mat can now be addressed as Mat)
rbind.use_namespace rbind.cv
# alias a type
rbind.cv.types_alias["string"] = rbind.cv.String
# parse headers
rbind.parse_headers
# fix some errors because of missing defines in the c++ headers
rbind.cv.putText.parameter(0).add_flag(:IO)
rbind.cv.chamerMatching.parameter(0).add_flag(:IO)
rbind.cv.chamerMatching.parameter(1).add_flag(:IO)
rbind.cv.chamerMatching.parameter(2).add_flag(:IO)
# add some more vector types
rbind.parser.find_type(rbind,"vector_Point3f")
rbind.parser.find_type(rbind,"vector_Point3d")
# generate files
rbind.generator_ruby.file_prefix = "ropencv"
rbind.generate(File.join(File.dirname(__FILE__),"src"),File.join(File.dirname(__FILE__),"..","lib","ruby","ropencv"))
...
class cv.RNG
uint64 state
cv.RNG.RNG
cv.RNG.RNG
uint64 state
cv.RNG.uniform int
int a
int b
cv.RNG.uniform float
float a
float b
cv.RNG.uniform double
double a
double b
cv.RNG.fill void
Mat mat /IO
int distType
Mat a
Mat b
bool saturateRange false
cv.RNG.gaussian double
double sigma
require 'ropencv'
include OpenCV
scalar = cv::Scalar.new(1,0,0,0)
scalar[2] = 2
puts scalar[0]
puts scalar[1]
puts scalar[2]
puts scalar[3]
require 'rbind'
rbind = Rbind::Rbind.new("FrameHelper")
# add pkg config dependency
rbind.pkg_config << "base-types"
# add dependency to ruby bindings for opencv
rbind.gems << "ropencv"
# add headers which shall be parsed
rbind.includes = [File.absolute_path(File.join(File.dirname(__FILE__),"..","..","src","FrameHelperTypes.h")),
File.absolute_path(File.join(File.dirname(__FILE__),"..","..","src","FrameHelper.h"))]
# parse additional file specifying some types
rbind.parse File.join(File.dirname(__FILE__),"types.txt")
# parse types exported by the gem ropencv
rbind.parse_extern
# using namespace cv (cv::Mat can now be addressed as Mat)
rbind.use_namespace rbind.cv
# parse headers
rbind.parse_headers
# add additional target to the linker
rbind.libs << "frame_helper"
# generate all files
rbind.generate(File.join(File.dirname(__FILE__),"src"),File.join(File.dirname(__FILE__),"lib","ruby","frame_helper"))
struct base.samples.frame.Frame
base.samples.frame.Frame.Frame
class CV_EXPORTS_W FrameHelper
{
...
public:
CV_WRAP FrameHelper();
CV_WRAP void convert(const base::samples::frame::Frame &src,CV_OUT base::samples::frame::Frame &dst,
int offset_x = 0, int offset_y = 0, int algo = INTER_LINEAR, bool bundistort=false);
...
}
FAQs
Unknown package
We found that rbind demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.