Blob Blame History Raw
diff -up openslp-2.0.0/slpd/slpd_process.c.orig openslp-2.0.0/slpd/slpd_process.c
--- openslp-2.0.0/slpd/slpd_process.c.orig	2018-05-09 13:08:06.185104375 +0200
+++ openslp-2.0.0/slpd/slpd_process.c	2018-05-09 13:07:21.017095089 +0200
@@ -462,6 +462,15 @@ static int ProcessSrvRqst(SLPMessage * m
          message->body.srvrqst.srvtype, 23, SLP_DA_SERVICE_TYPE) == 0)
    {
       errorcode = ProcessDASrvRqst(message, sendbuf, errorcode);
+
+      if (result != *sendbuf)
+      {
+         // The pointer stored at *sendbuf can be modified by a realloc
+         // operation in ProcessDASrvRqst().  Fix up the local copy of
+         // that pointer if necessary.
+         result = *sendbuf;
+      }
+
       if (errorcode == 0)
       {
          /* Since we have an errorcode of 0, we were successful,