PyObject *py_dec_options, *py_dec_optkeys, *py_di_options, *py_optval;
PyObject *py_optlist, *py_classval;
Py_UNICODE *py_ustr;
PyObject *py_dec_options, *py_dec_optkeys, *py_di_options, *py_optval;
PyObject *py_optlist, *py_classval;
Py_UNICODE *py_ustr;
int num_optkeys, ret, size, i;
int num_optkeys, ret, size, i;
if (!PyObject_HasAttrString(di->decoder->py_dec, "options")) {
/* Decoder has no options. */
if (!PyObject_HasAttrString(di->decoder->py_dec, "options")) {
/* Decoder has no options. */
- if (!(py_optval = PyUnicode_FromString(value))) {
+ if (!g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) {
+ srd_err("Option '%s' requires a string value.", key);
+ goto err_out;
+ }
+ val_str = g_variant_get_string(value, NULL);
+ if (!(py_optval = PyUnicode_FromString(val_str))) {
- if (!(py_optval = PyLong_FromString(value, NULL, 0))) {
+ if (!g_variant_is_of_type(value, G_VARIANT_TYPE_INT64)) {
+ srd_err("Option '%s' requires an integer value.", key);
+ goto err_out;
+ }
+ val_int = g_variant_get_int64(value);
+ if (!(py_optval = PyLong_FromLong(val_int))) {
int i, num_required_probes;
srd_dbg("set probes called for instance %s with list of %d probes",
int i, num_required_probes;
srd_dbg("set probes called for instance %s with list of %d probes",
- probenum_str = g_hash_table_lookup(new_probes, probe_id);
- if (!probenum_str) {
+ probe_val= g_hash_table_lookup(new_probes, probe_id);
+ if (!g_variant_is_of_type(probe_val, G_VARIANT_TYPE_INT32)) {
/* Probe name was specified without a value. */
srd_err("No probe number was specified for %s.",
/* Probe name was specified without a value. */
srd_err("No probe number was specified for %s.",
if (!(sl = g_slist_find_custom(di->decoder->probes, probe_id,
(GCompareFunc)compare_probe_id))) {
/* Fall back on optional probes. */
if (!(sl = g_slist_find_custom(di->decoder->opt_probes,
probe_id, (GCompareFunc) compare_probe_id))) {
srd_err("Protocol decoder %s has no probe "
if (!(sl = g_slist_find_custom(di->decoder->probes, probe_id,
(GCompareFunc)compare_probe_id))) {
/* Fall back on optional probes. */
if (!(sl = g_slist_find_custom(di->decoder->opt_probes,
probe_id, (GCompareFunc) compare_probe_id))) {
srd_err("Protocol decoder %s has no probe "