From e6128e51dc3a19e0e8a563ee95148542bc53ed99 Mon Sep 17 00:00:00 2001 From: Halla Rempt Date: Fri, 26 Jan 2024 20:03:28 +0100 Subject: [PATCH 2/4] MLT: check pointers before dereferencing In other places, checks for "self" occur as well, so it probably should be checked everywhere. This prevents MLT from crashing if it cannot find plugins on creating an image in Krita. It's still not good that MLT cannot find plugins in a reliable way, though... --- src/framework/mlt_consumer.c | 2 ++ src/framework/mlt_service.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/framework/mlt_consumer.c b/src/framework/mlt_consumer.c index e7957b7c..e2cf0dd9 100644 --- a/src/framework/mlt_consumer.c +++ b/src/framework/mlt_consumer.c @@ -590,6 +590,8 @@ int mlt_consumer_put_frame(mlt_consumer self, mlt_frame frame) { int error = 1; + if (!self) return error; + // Get the service associated to the consumer mlt_service service = MLT_CONSUMER_SERVICE(self); diff --git a/src/framework/mlt_service.c b/src/framework/mlt_service.c index 24bc8030..00e917ba 100644 --- a/src/framework/mlt_service.c +++ b/src/framework/mlt_service.c @@ -321,9 +321,11 @@ int mlt_service_insert_producer(mlt_service self, mlt_service producer, int inde int mlt_service_disconnect_producer(mlt_service self, int index) { + if (!self) return -1; + mlt_service_base *base = self->local; - if (base->in && index >= 0 && index < base->count) { + if (base && base->in && index >= 0 && index < base->count) { mlt_service current = base->in[index]; if (current) { -- 2.54.0