From: Michael Tremer Date: Thu, 9 Dec 2021 12:00:02 +0000 (+0000) Subject: callbacks: Only copy when data is set X-Git-Tag: 0.9.28~840 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfb0afdfec550b550ee63ae6decefbe2f7341059;p=pakfire.git callbacks: Only copy when data is set When callbacks was a struct but some pointers where NULL it could happen that we attempt to call that NULL pointer. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index e58a100b5..e6a182184 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -872,14 +872,23 @@ PAKFIRE_EXPORT int pakfire_create(struct pakfire** pakfire, const char* path, // Copy callbacks if (callbacks) { - memcpy(&p->callbacks, callbacks, sizeof(p->callbacks)); + if (callbacks->data) + p->callbacks.data = callbacks->data; - // Set default callbacks - } else { - // Log to syslog by default - p->callbacks.log = pakfire_log_syslog; + if (callbacks->log) + p->callbacks.log = callbacks->log; + + if (callbacks->status) + p->callbacks.status = callbacks->status; + + if (callbacks->progress) + p->callbacks.progress = callbacks->progress; } + // Log to syslog by default + if (!p->callbacks.log) + p->callbacks.log = pakfire_log_syslog; + // Set architecture pakfire_string_set(p->arch, arch);