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,