本文整理汇总了C++中OBJ_TAINT函数的典型用法代码示例。如果您正苦于以下问题:C++ OBJ_TAINT函数的具体用法?C++ OBJ_TAINT怎么用?C++ OBJ_TAINT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OBJ_TAINT函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: name_err_to_s
static VALUE
name_err_to_s(VALUE exc)
{
VALUE mesg = rb_attr_get(exc, rb_intern("mesg"));
VALUE str = mesg;
if (NIL_P(mesg)) return rb_class_name(CLASS_OF(exc));
StringValue(str);
if (str != mesg) {
rb_iv_set(exc, "mesg", mesg = str);
}
if (OBJ_TAINTED(exc)) OBJ_TAINT(mesg);
return mesg;
}
开发者ID:217,项目名称:ruby,代码行数:14,代码来源:error.c
示例2: rb_fiddle_ptr_new2
static VALUE
rb_fiddle_ptr_new2(VALUE klass, void *ptr, long size, freefunc_t func)
{
struct ptr_data *data;
VALUE val;
val = TypedData_Make_Struct(klass, struct ptr_data, &fiddle_ptr_data_type, data);
data->ptr = ptr;
data->free = func;
data->size = size;
OBJ_TAINT(val);
return val;
}
开发者ID:Danylyuk,项目名称:first_app,代码行数:14,代码来源:pointer.c
示例3: w_nbyte
static void
w_nbyte(const char *s, int n, struct dump_arg *arg)
{
VALUE buf = arg->str;
rb_bstr_concat(buf, (const uint8_t *)s, n);
#if 0 // unused
if (arg->dest && RSTRING_LEN(buf) >= BUFSIZ) {
if (arg->taint) {
OBJ_TAINT(buf);
}
rb_io_write(arg->dest, buf);
rb_str_resize(buf, 0);
}
#endif
}
开发者ID:DocPsy,项目名称:MacRuby,代码行数:15,代码来源:marshal.c
示例4: rb_gdbm_fetch
static VALUE
rb_gdbm_fetch(GDBM_FILE dbm, datum key)
{
datum val;
VALUE str;
val = gdbm_fetch(dbm, key);
if (val.dptr == 0)
return Qnil;
str = rb_str_new(val.dptr, val.dsize);
free(val.dptr);
OBJ_TAINT(str);
return str;
}
开发者ID:knugie,项目名称:ruby,代码行数:15,代码来源:gdbm.c
示例5: rb_gdbm_firstkey
static VALUE
rb_gdbm_firstkey(GDBM_FILE dbm)
{
datum key;
VALUE str;
key = gdbm_firstkey(dbm);
if (key.dptr == 0)
return Qnil;
str = rb_str_new(key.dptr, key.dsize);
free(key.dptr);
OBJ_TAINT(str);
return str;
}
开发者ID:knugie,项目名称:ruby,代码行数:15,代码来源:gdbm.c
示例6: rg_serialize
static VALUE
rg_serialize(VALUE self)
{
gsize size;
VALUE result;
/* TODO: Is tainting really necessary? Where does the message come
* from? */
size = g_socket_control_message_get_size(_SELF(self));
result = rb_str_new(NULL, size);
g_socket_control_message_serialize(_SELF(self), RSTRING_PTR(result));
OBJ_TAINT(result);
return result;
}
开发者ID:msakai,项目名称:ruby-gnome2,代码行数:15,代码来源:gsocketcontrolmessage.c
示例7: name_err_mesg_to_str
/* :nodoc: */
static VALUE
name_err_mesg_to_str(VALUE obj, SEL sel)
{
VALUE *ptr, mesg;
Data_Get_Struct(obj, VALUE, ptr);
mesg = ptr[0];
if (NIL_P(mesg)) {
return Qnil;
}
else {
const char *desc = 0;
VALUE d = 0, args[3];
obj = ptr[1];
switch (TYPE(obj)) {
case T_NIL:
desc = "nil";
break;
case T_TRUE:
desc = "true";
break;
case T_FALSE:
desc = "false";
break;
default:
d = rb_protect(safe_inspect, obj, NULL);
if (NIL_P(d) || RSTRING_LEN(d) > 65) {
d = rb_any_to_s(obj);
}
desc = RSTRING_PTR(d);
break;
}
if (desc && desc[0] != '#') {
d = d ? rb_str_dup(d) : rb_str_new2(desc);
rb_str_cat2(d, ":");
rb_str_cat2(d, rb_obj_classname(obj));
}
args[0] = mesg;
args[1] = ptr[2];
args[2] = d;
mesg = rb_f_sprintf(3, args);
}
if (OBJ_TAINTED(obj)) {
OBJ_TAINT(mesg);
}
return mesg;
}
开发者ID:1nueve,项目名称:MacRuby,代码行数:49,代码来源:error.c
示例8: rb_gdbm_nextkey
static VALUE
rb_gdbm_nextkey(GDBM_FILE dbm, VALUE keystr)
{
datum key, key2;
VALUE str;
key.dptr = RSTRING_PTR(keystr);
key.dsize = RSTRING_LEN(keystr);
key2 = gdbm_nextkey(dbm, key);
if (key2.dptr == 0)
return Qnil;
str = rb_str_new(key2.dptr, key2.dsize);
OBJ_TAINT(str);
return str;
}
开发者ID:AlphaB,项目名称:MacRuby,代码行数:16,代码来源:gdbm.c
示例9: rg_peek
static VALUE
rg_peek(VALUE self, VALUE rboffset, VALUE rbcount)
{
gsize offset = RVAL2GSIZE(rboffset);
gsize count = RVAL2GSIZE(rbcount);
VALUE result = rb_str_new(NULL, count);
gsize bytes_peeked = g_buffered_input_stream_peek(_SELF(self),
RSTRING_PTR(result),
offset,
count);
rb_str_set_len(result, bytes_peeked);
rb_str_resize(result, bytes_peeked);
OBJ_TAINT(result);
return result;
}
开发者ID:Mazwak,项目名称:ruby-gnome2,代码行数:17,代码来源:rbgiobufferedinputstream.c
示例10: solver_new_var
/*
* call-seq:
* solver.new_var -> Variable
*
* Returns new variable for constructing SAT formula. Raises an exception when
* the SAT is already prove to be always unsatisfiable.
*
*/
static VALUE solver_new_var(VALUE rslv)
{
csolver *cslv;
cvariable *cvar;
VALUE rvar;
Data_Get_Struct(rslv, csolver, cslv);
check_model_available(cslv->result, 1);
rvar =
Data_Make_Struct(rb_cVariable, cvariable, value_mark, value_free, cvar);
cvar->value = wrap_solver_new_var(cslv->solver);
cvar->solver = rslv;
cslv->result = NOT_SOLVED_YET;
if(OBJ_TAINTED(rslv)) OBJ_TAINT(rvar);
return rvar;
}
开发者ID:PhilipCastiglione,项目名称:ruby-minisat,代码行数:25,代码来源:minisat.c
示例11: proc_to_s
static VALUE
proc_to_s(VALUE self, SEL sel)
{
const char *cname = rb_obj_classname(self);
rb_vm_block_t *proc;
GetProcPtr(self, proc);
const char *is_lambda = (proc->flags & VM_BLOCK_LAMBDA) ? " (lambda)" : "";
VALUE str = rb_sprintf("#<%s:%p%s>", cname, (void *)self, is_lambda);
if (OBJ_TAINTED(self)) {
OBJ_TAINT(str);
}
return str;
}
开发者ID:MSch,项目名称:MacRuby,代码行数:17,代码来源:proc.c
示例12: rb_singleton_class
VALUE
rb_singleton_class(VALUE obj)
{
VALUE klass;
ID attached;
if (FIXNUM_P(obj) || SYMBOL_P(obj)) {
rb_raise(rb_eTypeError, "can't define singleton");
}
if (rb_special_const_p(obj)) {
SPECIAL_SINGLETON(Qnil, rb_cNilClass);
SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
rb_bug("unknown immediate %ld", obj);
}
CONST_ID(attached, "__attached__");
if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) &&
rb_ivar_get(RBASIC(obj)->klass, attached) == obj) {
klass = RBASIC(obj)->klass;
}
else {
klass = rb_make_metaclass(obj, RBASIC(obj)->klass);
}
if (BUILTIN_TYPE(obj) == T_CLASS) {
if (rb_iv_get(RBASIC(klass)->klass, "__attached__") != klass)
make_metametaclass(klass);
}
if (OBJ_TAINTED(obj)) {
OBJ_TAINT(klass);
}
else {
FL_UNSET(klass, FL_TAINT);
}
if (OBJ_UNTRUSTED(obj)) {
OBJ_UNTRUST(klass);
}
else {
FL_UNSET(klass, FL_UNTRUSTED);
}
if (OBJ_FROZEN(obj)) OBJ_FREEZE(klass);
return klass;
}
开发者ID:technohippy,项目名称:oruby,代码行数:45,代码来源:class.c
示例13: _receive
static VALUE _receive(int rflags, int argc, VALUE *argv, VALUE self)
{
struct posix_mq *mq = get(self, 1);
struct rw_args x;
VALUE buffer, timeout;
struct timespec expire;
if (mq->attr.mq_msgsize < 0) {
if (mq_getattr(mq->des, &mq->attr) < 0)
rb_sys_fail("mq_getattr");
}
rb_scan_args(argc, argv, "02", &buffer, &timeout);
x.timeout = convert_timeout(&expire, timeout);
if (NIL_P(buffer)) {
buffer = rb_str_new(0, mq->attr.mq_msgsize);
} else {
StringValue(buffer);
rb_str_modify(buffer);
rb_str_resize(buffer, mq->attr.mq_msgsize);
}
OBJ_TAINT(buffer);
x.msg_ptr = RSTRING_PTR(buffer);
x.msg_len = (size_t)mq->attr.mq_msgsize;
x.des = mq->des;
retry:
WITHOUT_GVL(xrecv, &x, RUBY_UBF_IO, 0);
if (x.received < 0) {
if (errno == EINTR)
goto retry;
if (errno == EAGAIN && (rflags & PMQ_TRY))
return Qnil;
rb_sys_fail("mq_receive");
}
rb_str_set_len(buffer, x.received);
if (rflags & PMQ_WANTARRAY)
return rb_ary_new3(2, buffer, UINT2NUM(x.msg_prio));
return buffer;
}
开发者ID:tmm1,项目名称:ruby_posix_mq,代码行数:43,代码来源:posix_mq.c
示例14: rb_gdbm_nextkey
static VALUE
rb_gdbm_nextkey(GDBM_FILE dbm, VALUE keystr)
{
datum key, key2;
VALUE str;
long len;
len = RSTRING_LEN(keystr);
if (TOO_LONG(len)) return Qnil;
key.dptr = RSTRING_PTR(keystr);
key.dsize = (int)len;
key2 = gdbm_nextkey(dbm, key);
if (key2.dptr == 0)
return Qnil;
str = rb_str_new(key2.dptr, key2.dsize);
free(key2.dptr);
OBJ_TAINT(str);
return str;
}
开发者ID:knugie,项目名称:ruby,代码行数:20,代码来源:gdbm.c
示例15: rbcf_dict_convert_to_ruby
VALUE rbcf_dict_convert_to_ruby(CFDictionaryRef dict_ref) {
CFIndex count = CFDictionaryGetCount(dict_ref);
CFIndex i;
CFTypeRef *keys = (CFTypeRef *)malloc(count * sizeof(CFTypeRef));
CFTypeRef *values = (CFTypeRef *)malloc(count * sizeof(CFTypeRef));
CFDictionaryGetKeysAndValues(dict_ref, (const void **)keys, (const void **)values);
VALUE hash = rb_hash_new();
for(i=0; i < count; ++i){
rb_hash_aset(hash, rbcf_string_convert_to_ruby(keys[i]), rbcf_plist_convert_to_ruby(values[i]));
}
free(keys);
free(values);
OBJ_TAINT(hash);
return hash;
}
开发者ID:DeNA,项目名称:rubycf,代码行数:22,代码来源:cfdictionary.c
示例16: singleton_class_of
/*!
* \internal
* Returns the singleton class of \a obj. Creates it if necessary.
*
* \note DO NOT expose the returned singleton class to
* outside of class.c.
* Use \ref rb_singleton_class instead for
* consistency of the metaclass hierarchy.
*/
static VALUE
singleton_class_of(VALUE obj)
{
VALUE klass;
if (FIXNUM_P(obj) || FLONUM_P(obj) || SYMBOL_P(obj)) {
rb_raise(rb_eTypeError, "can't define singleton");
}
if (SPECIAL_CONST_P(obj)) {
klass = special_singleton_class_of(obj);
if (NIL_P(klass))
rb_bug("unknown immediate %p", (void *)obj);
return klass;
}
else {
enum ruby_value_type type = BUILTIN_TYPE(obj);
if (type == T_FLOAT || type == T_BIGNUM) {
rb_raise(rb_eTypeError, "can't define singleton");
}
}
if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) &&
rb_ivar_get(RBASIC(obj)->klass, id_attached) == obj) {
klass = RBASIC(obj)->klass;
}
else {
klass = rb_make_metaclass(obj, RBASIC(obj)->klass);
}
if (OBJ_TAINTED(obj)) {
OBJ_TAINT(klass);
}
else {
FL_UNSET(klass, FL_TAINT);
}
if (OBJ_FROZEN(obj)) OBJ_FREEZE(klass);
return klass;
}
开发者ID:Danylyuk,项目名称:first_app,代码行数:48,代码来源:class.c
示例17: singleton_class_of
/*!
* \internal
* Returns the singleton class of \a obj. Creates it if necessary.
*
* \note DO NOT expose the returned singleton class to
* outside of class.c.
* Use \ref rb_singleton_class instead for
* consistency of the metaclass hierarchy.
*/
static VALUE
singleton_class_of(VALUE obj)
{
VALUE klass;
if (FIXNUM_P(obj) || SYMBOL_P(obj)) {
rb_raise(rb_eTypeError, "can't define singleton");
}
if (rb_special_const_p(obj)) {
SPECIAL_SINGLETON(Qnil, rb_cNilClass);
SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
rb_bug("unknown immediate %p", (void *)obj);
}
if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) &&
rb_ivar_get(RBASIC(obj)->klass, id_attached) == obj) {
klass = RBASIC(obj)->klass;
}
else {
klass = rb_make_metaclass(obj, RBASIC(obj)->klass);
}
if (OBJ_TAINTED(obj)) {
OBJ_TAINT(klass);
}
else {
FL_UNSET(klass, FL_TAINT);
}
if (OBJ_UNTRUSTED(obj)) {
OBJ_UNTRUST(klass);
}
else {
FL_UNSET(klass, FL_UNTRUSTED);
}
if (OBJ_FROZEN(obj)) OBJ_FREEZE(klass);
return klass;
}
开发者ID:fi8on,项目名称:ruby,代码行数:48,代码来源:class.c
示例18: fcgi_stream_read
static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self)
{
VALUE num,str;
FCGX_Stream *stream;
char *buff;
int n;
if (rb_safe_level() >= 4 && !OBJ_TAINTED(self)) {
rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO");
}
Data_Get_Struct(self, FCGX_Stream, stream);
if (argc==0) {
buff = ALLOC_N(char, 16384);
n = FCGX_GetStr(buff, 16384, stream);
CHECK_STREAM_ERROR(stream);
if (n == 0) {
free(buff);
return Qnil;
}
str = rb_str_new(buff, n);
OBJ_TAINT(str);
while(!FCGX_HasSeenEOF(stream)) {
n = FCGX_GetStr(buff, 16384, stream);
CHECK_STREAM_ERROR(stream);
if (n > 0) {
rb_str_cat(str, buff, n);
} else {
free(buff);
return Qnil;
}
}
free(buff);
return str;
}
开发者ID:luongtran,项目名称:po_tracker,代码行数:37,代码来源:fcgi.c
示例19: ossl_ssl_read_internal
static VALUE
ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
{
SSL *ssl;
int ilen, nread = 0;
VALUE len, str;
rb_io_t *fptr;
rb_scan_args(argc, argv, "11", &len, &str);
ilen = NUM2INT(len);
if(NIL_P(str)) {
str = rb_bstr_new();
}
else{
StringValue(str);
rb_str_modify(str);
str = rb_str_bstr(str);
}
rb_bstr_resize(str, ilen);
if(ilen == 0) return str;
Data_Get_Struct(self, SSL, ssl);
GetOpenFile(ossl_ssl_get_io(self), fptr);
if (ssl) {
if(!nonblock && SSL_pending(ssl) <= 0)
rb_thread_wait_fd(FPTR_TO_FD(fptr));
for (;;){
nread = SSL_read(ssl, rb_bstr_bytes(str),
rb_bstr_length(str));
switch(ssl_get_error(ssl, nread)){
case SSL_ERROR_NONE:
goto end;
case SSL_ERROR_ZERO_RETURN:
rb_eof_error();
case SSL_ERROR_WANT_WRITE:
write_would_block(nonblock);
rb_io_wait_writable(FPTR_TO_FD(fptr));
continue;
case SSL_ERROR_WANT_READ:
read_would_block(nonblock);
rb_io_wait_readable(FPTR_TO_FD(fptr));
continue;
case SSL_ERROR_SYSCALL:
if(ERR_peek_error() == 0 && nread == 0) rb_eof_error();
rb_sys_fail(0);
default:
ossl_raise(eSSLError, "SSL_read:");
}
}
}
else {
ID meth = nonblock ? rb_intern("read_nonblock") : rb_intern("sysread");
rb_warning("SSL session is not started yet.");
return rb_funcall(ossl_ssl_get_io(self), meth, 2, len, str);
}
end:
rb_bstr_resize(str, nread);
OBJ_TAINT(str);
return str;
}
开发者ID:DocPsy,项目名称:MacRuby,代码行数:62,代码来源:ossl_ssl.c
示例20: oci8_lob_read
//.........这里部分代码省略.........
oci8_lob_t *lob = TO_LOB(self);
oci8_svcctx_t *svcctx = check_svcctx(lob);
ub8 lob_length;
ub8 read_len;
ub8 pos = lob->pos;
long strbufsiz;
ub8 byte_amt;
ub8 char_amt;
sword rv;
VALUE size;
VALUE v = rb_ary_new();
OCIError *errhp = oci8_errhp;
ub1 piece = OCI_FIRST_PIECE;
rb_scan_args(argc, argv, "01", &size);
lob_length = oci8_lob_get_length(lob);
if (lob_length == 0 && NIL_P(size)) {
return rb_usascii_str_new("", 0);
}
if (lob_length <= pos) /* EOF */
return Qnil;
if (NIL_P(size)) {
read_len = lob_length - pos;
} else {
ub8 sz = NUM2ULL(size);
read_len = MIN(sz, lob_length - pos);
}
if (lob->lobtype == OCI_TEMP_CLOB) {
byte_amt = 0;
char_amt = read_len;
if (oci8_nls_ratio == 1) {
strbufsiz = MIN(read_len, ULONG_MAX);
} else {
strbufsiz = MIN(read_len + read_len / 8, ULONG_MAX);
}
if (strbufsiz <= 10) {
strbufsiz = 10;
}
} else {
byte_amt = read_len;
char_amt = 0;
strbufsiz = MIN(read_len, ULONG_MAX);
}
if (lob->state == S_BFILE_CLOSE) {
open_bfile(svcctx, lob, errhp);
}
do {
VALUE strbuf = rb_str_buf_new(strbufsiz);
char *buf = RSTRING_PTR(strbuf);
rv = OCILobRead2_nb(svcctx, svcctx->base.hp.svc, errhp, lob->base.hp.lob, &byte_amt, &char_amt, pos + 1, buf, strbufsiz, piece, NULL, NULL, 0, lob->csfrm);
svcctx->suppress_free_temp_lobs = 0;
switch (rv) {
case OCI_SUCCESS:
break;
case OCI_NEED_DATA:
/* prevent OCILobFreeTemporary() from being called.
* See: https://github.com/kubo/ruby-oci8/issues/20
*/
svcctx->suppress_free_temp_lobs = 1;
piece = OCI_NEXT_PIECE;
break;
default:
chker2(rv, &svcctx->base);
}
if (byte_amt == 0)
break;
if (lob->lobtype == OCI_TEMP_CLOB) {
pos += char_amt;
} else {
pos += byte_amt;
}
rb_str_set_len(strbuf, byte_amt);
rb_ary_push(v, strbuf);
} while (rv == OCI_NEED_DATA);
if (pos >= lob_length) {
lob_close(lob);
bfile_close(lob);
}
lob->pos = pos;
switch (RARRAY_LEN(v)) {
case 0:
return Qnil;
case 1:
v = RARRAY_AREF(v, 0);
break;
default:
v = rb_ary_join(v, Qnil);
}
OBJ_TAINT(v);
if (lob->lobtype == OCI_TEMP_CLOB) {
/* set encoding */
rb_enc_associate(v, oci8_encoding);
return rb_str_conv_enc(v, oci8_encoding, rb_default_internal_encoding());
} else {
/* ASCII-8BIT */
return v;
}
}
开发者ID:Captnwalker1,项目名称:ruby-oci8,代码行数:101,代码来源:lob.c
注:本文中的OBJ_TAINT函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论