From d49686d237d44d66dcbf945d58cdf7b4f5dcf4a9680b7b63151b3472014a3ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Schr=C3=B6der?= Date: Mon, 12 Sep 2016 14:37:53 +0000 Subject: [PATCH] argh OBS-URL: https://build.opensuse.org/package/show/network:utilities/openslp?expand=0&rev=40 --- openslp.noconvenience.diff | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/openslp.noconvenience.diff b/openslp.noconvenience.diff index 53f3684..6e4b328 100644 --- a/openslp.noconvenience.diff +++ b/openslp.noconvenience.diff @@ -1,3 +1,36 @@ +--- ./common/slp_auth.c.orig 2016-09-12 14:33:58.923718969 +0000 ++++ ./common/slp_auth.c 2016-09-12 14:35:19.660448155 +0000 +@@ -237,6 +237,7 @@ static int SLPAuthSignDigest(int spistrl + curpos += spistrlen; + + /* sign the digest and put it in the authblock */ ++ memset(curpos, 0, signaturelen); + if (SLPCryptoDSASign(key, digest, SLPAUTH_SHA1_DIGEST_SIZE, + curpos, &signaturelen)) + { +--- ./common/slp_crypto.c.orig 2016-09-12 14:30:13.053476772 +0000 ++++ ./common/slp_crypto.c 2016-09-12 14:31:32.443210397 +0000 +@@ -153,6 +153,20 @@ int SLPCryptoDSASign(SLPCryptoDSAKey * k + int SLPCryptoDSAVerify(SLPCryptoDSAKey * key, const unsigned char * digest, + int digestlen, const unsigned char * signature, int signaturelen) + { ++ /* newer openssl versions need the exact size. trim down. */ ++ if (signaturelen > 2 && *signature == 0x30) ++ { ++ int l = 0; ++ if (signature[1] < 128) ++ l = 2 + signature[1]; ++ else if (signature[1] == 129) ++ l = 3 + signature[2]; ++ else if (signature[1] == 130) ++ l = 4 + (signature[2] << 8 | signature[3]); ++ if (l && l < signaturelen) ++ signaturelen = l; ++ } ++ + /* it does not look like the type param is used? */ + /* broken DSA_verify() declaration */ + return DSA_verify(0, digest, digestlen, (unsigned char *)signature, --- ./common/slp_v2message.c.orig 2016-09-12 10:51:36.284400063 +0000 +++ ./common/slp_v2message.c 2016-09-12 10:55:19.553648752 +0000 @@ -150,13 +150,6 @@ static int v2ParseUrlEntry(SLPBuffer buf @@ -165,13 +198,13 @@ if (cb_result == SLP_FALSE) break; --- ./slpd/slpd_regfile.c.orig 2016-09-12 11:12:02.353273706 +0000 -+++ ./slpd/slpd_regfile.c 2016-09-12 11:30:56.987463452 +0000 ++++ ./slpd/slpd_regfile.c 2016-09-12 14:29:17.611662818 +0000 @@ -657,7 +657,7 @@ int SLPDRegFileWriteSrvReg(FILE * fd, SL if (fd) { - fprintf(fd, "%s,%s,%d\n", msg->body.srvreg.urlentry.url, msg->header.langtag, msg->body.srvreg.urlentry.lifetime); -+ fprintf(fd, "%*s,%s,%d\n", (int)(msg->body.srvreg.urlentry.urllen), msg->body.srvreg.urlentry.url, msg->header.langtag, msg->body.srvreg.urlentry.lifetime); ++ fprintf(fd, "%.*s,%s,%d\n", (int)(msg->body.srvreg.urlentry.urllen), msg->body.srvreg.urlentry.url, msg->header.langtag, msg->body.srvreg.urlentry.lifetime); if (msg->body.srvreg.source == SLP_REG_SOURCE_PULL_PEER_DA) fprintf(fd, "slp-source=pulled-from-da-%s\n", SLPNetSockAddrStorageToString(&msg->peer, addr_str, sizeof(addr_str))); else if (msg->body.srvreg.source == SLP_REG_SOURCE_LOCAL)