Only load and use PDs of API version 2.
authorUwe Hermann <uwe@hermann-uwe.de>
Sun, 4 May 2014 21:46:21 +0000 (23:46 +0200)
committerUwe Hermann <uwe@hermann-uwe.de>
Sun, 4 May 2014 21:58:03 +0000 (23:58 +0200)
Decoders that implement any other PD API version are per definition not
compatible and cannot work with this library version.

decoder.c

index ff6e7ac2746917476593c883c5b62b3473f23739..71e9122181324fad0325314ddbf78eb75f2fc1a6 100644 (file)
--- a/decoder.c
+++ b/decoder.c
@@ -366,6 +366,17 @@ SRD_API int srd_decoder_load(const char *module_name)
        }
        Py_CLEAR(py_basedec);
 
+       /*
+        * Check that thіs decoder has the correct PD API version.
+        * PDs of different API versions are incompatible and cannot work.
+        */
+       py_long = PyObject_GetAttrString(d->py_dec, "api_version");
+       if (PyLong_AsLong(py_long) != 2) {
+               srd_err("Only PDs of API version 2 are supported.");
+               goto err_out;
+       }
+       Py_CLEAR(py_long);
+
        /* Check for a proper start() method. */
        if (!PyObject_HasAttrString(d->py_dec, "start")) {
                srd_err("Protocol decoder %s has no start() method Decoder "