Browse Source

Allow size_t values in parse_struct_integer.

tags/0.6.0
Vsevolod Stakhov 10 years ago
parent
commit
1f95ccccae
2 changed files with 17 additions and 7 deletions
  1. 15
    6
      src/cfg_rcl.c
  2. 2
    1
      src/cfg_rcl.h

+ 15
- 6
src/cfg_rcl.c View File

@@ -391,6 +391,7 @@ rspamd_rcl_parse_struct_integer (struct config_file *cfg, rspamd_cl_object_t *ob
gint32 *i32p;
gint16 *i16p;
gint64 *i64p;
gsize *sp;
} target;
gint64 val;

@@ -402,21 +403,29 @@ rspamd_rcl_parse_struct_integer (struct config_file *cfg, rspamd_cl_object_t *ob
}
*target.i32p = val;
}
else if (pd->flags == RSPAMD_CL_FLAG_INT_16) {
target.i16p = (gint16 *)(((gchar *)pd->user_struct) + pd->offset);
else if (pd->flags == RSPAMD_CL_FLAG_INT_64) {
target.i64p = (gint64 *)(((gchar *)pd->user_struct) + pd->offset);
if (!rspamd_cl_obj_toint_safe (obj, &val)) {
g_set_error (err, CFG_RCL_ERROR, EINVAL, "cannot convert param to integer");
return FALSE;
}
*target.i16p = val;
*target.i64p = val;
}
else if (pd->flags == RSPAMD_CL_FLAG_INT_64) {
target.i64p = (gint64 *)(((gchar *)pd->user_struct) + pd->offset);
else if (pd->flags == RSPAMD_CL_FLAG_SIZE) {
target.sp = (gsize *)(((gchar *)pd->user_struct) + pd->offset);
if (!rspamd_cl_obj_toint_safe (obj, &val)) {
g_set_error (err, CFG_RCL_ERROR, EINVAL, "cannot convert param to integer");
return FALSE;
}
*target.i64p = val;
*target.sp = val;
}
else if (pd->flags == RSPAMD_CL_FLAG_INT_16) {
target.i16p = (gint16 *)(((gchar *)pd->user_struct) + pd->offset);
if (!rspamd_cl_obj_toint_safe (obj, &val)) {
g_set_error (err, CFG_RCL_ERROR, EINVAL, "cannot convert param to integer");
return FALSE;
}
*target.i16p = val;
}
else {
target.ip = (gint *)(((gchar *)pd->user_struct) + pd->offset);

+ 2
- 1
src/cfg_rcl.h View File

@@ -47,7 +47,8 @@ struct rspamd_rcl_struct_parser {
RSPAMD_CL_FLAG_TIME_INTEGER = 0x1 << 3,
RSPAMD_CL_FLAG_INT_16 = 0x1 << 4,
RSPAMD_CL_FLAG_INT_32 = 0x1 << 5,
RSPAMD_CL_FLAG_INT_64 = 0x1 << 6
RSPAMD_CL_FLAG_INT_64 = 0x1 << 6,
RSPAMD_CL_FLAG_SIZE = 0x1 << 7
} flags;
};


Loading…
Cancel
Save