]> sigrok.org Git - libsigrok.git/blobdiff - hardware/openbench-logic-sniffer/api.c
ols: Fix stack clobbering at start of acquisition
[libsigrok.git] / hardware / openbench-logic-sniffer / api.c
index dc0467007e904cd9e9e3b4104308d5a0ae86e025..a744fc5a86e7d9e3dd4f0b2a21d77b1487a76f05 100644 (file)
@@ -267,7 +267,7 @@ static int config_get(int id, GVariant **data, const struct sr_dev_inst *sdi)
                *data = g_variant_new_boolean(devc->flag_reg & FLAG_RLE ? TRUE : FALSE);
                break;
        default:
-               return SR_ERR_ARG;
+               return SR_ERR_NA;
        }
 
        return SR_OK;
@@ -314,7 +314,7 @@ static int config_set(int id, GVariant *data, const struct sr_dev_inst *sdi)
                ret = SR_OK;
                break;
        default:
-               ret = SR_ERR;
+               ret = SR_ERR_NA;
        }
 
        return ret;
@@ -347,7 +347,7 @@ static int config_list(int key, GVariant **data, const struct sr_dev_inst *sdi)
                *data = g_variant_new_string(TRIGGER_TYPE);
                break;
        default:
-               return SR_ERR_ARG;
+               return SR_ERR_NA;
        }
 
        return SR_OK;
@@ -395,7 +395,7 @@ static int hw_dev_acquisition_start(const struct sr_dev_inst *sdi,
        readcount = MIN(devc->max_samples / num_channels, devc->limit_samples) / 4;
 
        memset(trigger_config, 0, 16);
-       trigger_config[devc->num_stages - 1] |= 0x08;
+       trigger_config[devc->num_stages] |= 0x08;
        if (devc->trigger_mask[0]) {
                delaycount = readcount * (1 - devc->capture_ratio / 100.0);
                devc->trigger_at = (readcount - delaycount) * 4 - devc->num_stages;