20 lines
810 B
Diff
20 lines
810 B
Diff
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,
|