]> sigrok.org Git - libsigrokdecode.git/commitdiff
srd_decoder_doc_get(): Add an additional sanity check.
authorUwe Hermann <redacted>
Tue, 12 Nov 2019 21:47:41 +0000 (22:47 +0100)
committerUwe Hermann <redacted>
Mon, 9 Dec 2019 14:42:34 +0000 (15:42 +0100)
decoder.c
tests/decoder.c

index 5239818faa33a8fb9b8f8e4cd55faf5cba69a774..cef4f299aea927d76d64adbb8ba9dcc39a2bf927 100644 (file)
--- a/decoder.c
+++ b/decoder.c
@@ -869,7 +869,7 @@ err_out:
 /**
  * Return a protocol decoder's docstring.
  *
- * @param dec The loaded protocol decoder.
+ * @param dec The loaded protocol decoder. Must not be NULL.
  *
  * @return A newly allocated buffer containing the protocol decoder's
  *         documentation. The caller is responsible for free'ing the buffer.
@@ -885,7 +885,7 @@ SRD_API char *srd_decoder_doc_get(const struct srd_decoder *dec)
        if (!srd_check_init())
                return NULL;
 
-       if (!dec)
+       if (!dec || !dec->py_mod)
                return NULL;
 
        gstate = PyGILState_Ensure();
index 36784102bff934be9415bf657893e6b450757ac3..3acabaeca30e2c7c30c910eec8ff0c61323596e1 100644 (file)
@@ -404,11 +404,19 @@ END_TEST
  * Check whether srd_decoder_doc_get() fails with NULL as argument.
  * If it returns a value != NULL (or segfaults) this test will fail.
  * See also: http://sigrok.org/bugzilla/show_bug.cgi?id=179
+ * Check whether srd_decoder_doc_get() fails with dec->py_mod == NULL.
+ * If it returns a value != NULL (or segfaults) this test will fail.
+ * See also: http://sigrok.org/bugzilla/show_bug.cgi?id=180
  */
 START_TEST(test_doc_get_null)
 {
+       struct srd_decoder dec;
+
+       dec.py_mod = NULL;
+
        srd_init(DECODERS_TESTDIR);
        fail_unless(srd_decoder_doc_get(NULL) == NULL);
+       fail_unless(srd_decoder_doc_get(&dec) == NULL);
        srd_exit();
 }
 END_TEST