7 changed files with 821 additions and 0 deletions
			
			
		@ -0,0 +1,148 @@ | 
				
			|||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-BEGIN ---
 | 
				
			||||||
 | 
					# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Filename: package/.../libdkim/enable-linux.patch
 | 
				
			||||||
 | 
					# Copyright (C) 2009 The OpenSDE Project
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# More information can be found in the files COPYING and README.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This patch file is dual-licensed. It is available under the license the
 | 
				
			||||||
 | 
					# patched project is licensed under, as long as it is an OpenSource license
 | 
				
			||||||
 | 
					# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
 | 
				
			||||||
 | 
					# of the GNU General Public License as published by the Free Software
 | 
				
			||||||
 | 
					# Foundation; either version 2 of the License, or (at your option) any later
 | 
				
			||||||
 | 
					# version.
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-END ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This patch modifies Alt-N's libdkim package to compile on Linux.  This has only
 | 
				
			||||||
 | 
					been tested on Gentoo linux.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Installation instructions:
 | 
				
			||||||
 | 
					 % wget http://downloads.sourceforge.net/libdkim/libdkim-1.0.19.zip
 | 
				
			||||||
 | 
					 % wget http://www.bltweb.net/qmail/libdkim-1.0.19-linux.patch
 | 
				
			||||||
 | 
					 % unzip libdkim-1.0.19
 | 
				
			||||||
 | 
					 % cd libdkim/src
 | 
				
			||||||
 | 
					 % patch -p2 < ../../libdkim-1.0.19-linux.patch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff -Naur libdkim.orig/src/Makefile libdkim/src/Makefile
 | 
				
			||||||
 | 
					--- ./Makefile	2009-03-24 08:38:48.000000000 -0500
 | 
				
			||||||
 | 
					+++ ./Makefile	2009-03-24 08:39:55.000000000 -0500
 | 
				
			||||||
 | 
					@@ -1,15 +1,10 @@
 | 
				
			||||||
 | 
					 # libdkim makefile for UNIX
 | 
				
			||||||
 | 
					 #
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-#ifdef LINUX
 | 
				
			||||||
 | 
					-CFLAGS  = -c
 | 
				
			||||||
 | 
					-LFLAGS  = 
 | 
				
			||||||
 | 
					+DESTDIR ?= /
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+CFLAGS  += -fPIC
 | 
				
			||||||
 | 
					 LIBS    = -lcrypto -lresolv
 | 
				
			||||||
 | 
					-#else
 | 
				
			||||||
 | 
					-CFLAGS  = -c
 | 
				
			||||||
 | 
					-LFLAGS  = 
 | 
				
			||||||
 | 
					-LIBS    = -lcrypto 
 | 
				
			||||||
 | 
					-#endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 INCL	=  -I /usr/include/openssl/
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -19,23 +14,35 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 HDRS = dkim.h dns.h dkimbase.h dkimsign.h dkimverify.h
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-all: libdkim.a libdkimtest
 | 
				
			||||||
 | 
					+all: libdkim.so.1 libdkimtest
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 libdkim.a: $(OBJS)
 | 
				
			||||||
 | 
					 	rm -f libdkim.a
 | 
				
			||||||
 | 
					 	ar cr libdkim.a $(OBJS)
 | 
				
			||||||
 | 
					 	ranlib libdkim.a
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-libdkimtest : libdkim.a libdkimtest.o
 | 
				
			||||||
 | 
					-	g++ -olibdkimtest $(LFLAGS) \
 | 
				
			||||||
 | 
					-	       -L . libdkimtest.o $(LIBS) -ldkim
 | 
				
			||||||
 | 
					+libdkim.so.1: $(OBJS)
 | 
				
			||||||
 | 
					+	$(CXX) -shared -Wl,-soname,[email protected] $(LDFLAGS) $(OBJS) -o $@ $(LIBS)
 | 
				
			||||||
 | 
					+	ln -s $@ libdkim.so
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+.cpp.o:
 | 
				
			||||||
 | 
					+	$(CXX) $(CFLAGS) -c $<
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+libdkimtest : libdkim.so.1 libdkimtest.o
 | 
				
			||||||
 | 
					+	$(CXX) -o$@ $(LDFLAGS) \
 | 
				
			||||||
 | 
					+	       -L. libdkimtest.o $(LIBS) -ldkim
 | 
				
			||||||
 | 
					 	
 | 
				
			||||||
 | 
					 libdkimtest.o: libdkimtest.cpp $(HDRS)
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-.cpp.o:
 | 
				
			||||||
 | 
					-	g++ $(CFLAGS) -c $<
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 clean:
 | 
				
			||||||
 | 
					-	rm  *.o libdkim.lib libdkimtest
 | 
				
			||||||
 | 
					+	rm -f *.o libdkim.{a,so,so.1} libdkimtest
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+install: all
 | 
				
			||||||
 | 
					+	install -D -m 0755 libdkim.so.1 $(DESTDIR)/usr/lib/libdkim.so.1
 | 
				
			||||||
 | 
					+	ln -s libdkim.so.1 $(DESTDIR)/usr/lib/libdkim.so
 | 
				
			||||||
 | 
					+	ln -s libdkim.so.1 $(DESTDIR)/usr/lib/libdkim.so.1.1
 | 
				
			||||||
 | 
					+	install -D -m 0644 dkim.h $(DESTDIR)/usr/include/dkim.h
 | 
				
			||||||
 | 
					+	install -D -m 0755 libdkimtest $(DESTDIR)/usr/bin/libdkimtest
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff -Naur libdkim.orig/src/dkim.h libdkim/src/dkim.h
 | 
				
			||||||
 | 
					--- ./dkim.h	2009-03-24 08:38:48.000000000 -0500
 | 
				
			||||||
 | 
					+++ ./dkim.h	2009-03-24 08:39:20.000000000 -0500
 | 
				
			||||||
 | 
					@@ -22,7 +22,6 @@
 | 
				
			||||||
 | 
					 #define DKIM_CALL	WINAPI
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					 #define DKIM_CALL
 | 
				
			||||||
 | 
					-#define MAKELONG(a,b) ((long)(((unsigned)(a) & 0xffff) | (((unsigned)(b) & 0xffff) << 16)))
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -162,6 +161,32 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 char *DKIM_CALL DKIMGetErrorString( int ErrorCode );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+#ifndef _WIN32
 | 
				
			||||||
 | 
					+/*
 | 
				
			||||||
 | 
					+ * macros.h:  Useful macros
 | 
				
			||||||
 | 
					+ *
 | 
				
			||||||
 | 
					+ * Author:
 | 
				
			||||||
 | 
					+ *	Dick Porter ([email protected])
 | 
				
			||||||
 | 
					+ *
 | 
				
			||||||
 | 
					+ * (C) 2002 Ximian, Inc.
 | 
				
			||||||
 | 
					+ */
 | 
				
			||||||
 | 
					+#ifndef _WAPI_MACROS_H_
 | 
				
			||||||
 | 
					+#define _WAPI_MACROS_H_
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#include <sys/types.h>
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#define MAKEWORD(low, high) ((__uint16_t)(((__uint8_t)(low)) | \
 | 
				
			||||||
 | 
					+				       ((__uint16_t)((__uint8_t)(high))) << 8))
 | 
				
			||||||
 | 
					+#define MAKELONG(low, high) ((__uint32_t)(((__uint16_t)(low)) | \
 | 
				
			||||||
 | 
					+				       ((__uint32_t)((__uint16_t)(high))) << 16))
 | 
				
			||||||
 | 
					+#define LOWORD(i32) ((__uint16_t)((i32) & 0xFFFF))
 | 
				
			||||||
 | 
					+#define HIWORD(i32) ((__uint16_t)(((__uint32_t)(i32) >> 16) & 0xFFFF))
 | 
				
			||||||
 | 
					+#define LOBYTE(i16) ((__uint8_t)((i16) & 0xFF))
 | 
				
			||||||
 | 
					+#define HIBYTE(i16) ((__uint8_t)(((__uint16_t)(i16) >> 8) & 0xFF))
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#endif /* _WAPI_MACROS_H_ */
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 #ifdef __cplusplus
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					diff -Naur libdkim.orig/src/dkimsign.cpp libdkim/src/dkimsign.cpp
 | 
				
			||||||
 | 
					--- ./dkimsign.cpp	2009-03-24 08:38:48.000000000 -0500
 | 
				
			||||||
 | 
					+++ ./dkimsign.cpp	2009-03-24 08:39:20.000000000 -0500
 | 
				
			||||||
 | 
					@@ -25,8 +25,6 @@
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					 #define _strnicmp strncasecmp 
 | 
				
			||||||
 | 
					 #define _stricmp strcasecmp 
 | 
				
			||||||
 | 
					-#define LOWORD(l) ((unsigned)(l) & 0xffff)
 | 
				
			||||||
 | 
					-#define HIWORD(l) ((unsigned)(l) >> 16)
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include <string.h>
 | 
				
			||||||
@ -0,0 +1,163 @@ | 
				
			|||||||
 | 
					#! /bin/sh /usr/share/dpatch/dpatch-run
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-BEGIN ---
 | 
				
			||||||
 | 
					# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Filename: package/.../libdkim/enable-thread-safety.patch
 | 
				
			||||||
 | 
					# Copyright (C) 2009 The OpenSDE Project
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# More information can be found in the files COPYING and README.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This patch file is dual-licensed. It is available under the license the
 | 
				
			||||||
 | 
					# patched project is licensed under, as long as it is an OpenSource license
 | 
				
			||||||
 | 
					# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
 | 
				
			||||||
 | 
					# of the GNU General Public License as published by the Free Software
 | 
				
			||||||
 | 
					# Foundation; either version 2 of the License, or (at your option) any later
 | 
				
			||||||
 | 
					# version.
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-END ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 01_strtok_r.dpatch by Russell Coker <[email protected]>
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					## DP: Use strtok_r() instead of strtok().
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@DPATCH@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19/src/dkimverify.cpp libdkim-1.0.19-new/src/dkimverify.cpp
 | 
				
			||||||
 | 
					--- ./dkimverify.cpp	2008-05-12 20:08:06.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimverify.cpp	2009-06-11 18:28:10.000000000 +1000
 | 
				
			||||||
 | 
					@@ -855,6 +855,9 @@
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 int CDKIMVerify::ParseDKIMSignature( const string& sHeader, SignatureInfo &sig )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+	// for strtok_r()
 | 
				
			||||||
 | 
					+	char *saveptr;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	// save header for later
 | 
				
			||||||
 | 
					 	sig.Header = sHeader;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1032,7 +1035,7 @@
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		// make sure "dns" is in the list
 | 
				
			||||||
 | 
					 		bool HasDNS = false;
 | 
				
			||||||
 | 
					-		char *s = strtok(values[9], ":");
 | 
				
			||||||
 | 
					+		char *s = strtok_r(values[9], ":", &saveptr);
 | 
				
			||||||
 | 
					 		while (s != NULL)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			if (strncmp(s, "dns", 3) == 0 && (s[3] == '\0' || s[3] == '/'))
 | 
				
			||||||
 | 
					@@ -1040,7 +1043,7 @@
 | 
				
			||||||
 | 
					 				HasDNS = true;
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 			}
 | 
				
			||||||
 | 
					-			s = strtok(NULL, ": \t");
 | 
				
			||||||
 | 
					+			s = strtok_r(NULL, ": \t", &saveptr);
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
 | 
					 		if (!HasDNS)
 | 
				
			||||||
 | 
					 			return DKIM_BAD_SYNTAX;		// todo: maybe create a new error code for unknown query method
 | 
				
			||||||
 | 
					@@ -1080,7 +1083,7 @@
 | 
				
			||||||
 | 
					 	// parse the signed headers list
 | 
				
			||||||
 | 
					 	bool HasFrom = false, HasSubject = false;
 | 
				
			||||||
 | 
					 	RemoveSWSP(values[4]);			// header names shouldn't have spaces in them so this should be ok...
 | 
				
			||||||
 | 
					-	char *s = strtok(values[4], ":");
 | 
				
			||||||
 | 
					+	char *s = strtok_r(values[4], ":", &saveptr);
 | 
				
			||||||
 | 
					 	while (s != NULL)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		if (_stricmp(s, "From") == 0)
 | 
				
			||||||
 | 
					@@ -1090,7 +1093,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 		sig.SignedHeaders.push_back(s);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		s = strtok(NULL, ":");
 | 
				
			||||||
 | 
					+		s = strtok_r(NULL, ":", &saveptr);
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	if (!HasFrom)
 | 
				
			||||||
 | 
					@@ -1194,6 +1197,9 @@
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 int SelectorInfo::Parse( char* Buffer )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+	// for strtok_r()
 | 
				
			||||||
 | 
					+	char *saveptr;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	static const char *tags[] = {"v","g","h","k","p","s","t","n",NULL};
 | 
				
			||||||
 | 
					 	char *values[sizeof(tags)/sizeof(tags[0])] = {NULL};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1235,14 +1241,14 @@
 | 
				
			||||||
 | 
					 	else
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		// MUST include "sha1" or "sha256"
 | 
				
			||||||
 | 
					-		char *s = strtok(values[2], ":");
 | 
				
			||||||
 | 
					+		char *s = strtok_r(values[2], ":", &saveptr);
 | 
				
			||||||
 | 
					 		while (s != NULL)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			if (strcmp(s, "sha1") == 0)
 | 
				
			||||||
 | 
					 				AllowSHA1 = true;
 | 
				
			||||||
 | 
					 			else if (strcmp(s, "sha256") == 0)
 | 
				
			||||||
 | 
					 				AllowSHA256 = true;
 | 
				
			||||||
 | 
					-			s = strtok(NULL, ":");
 | 
				
			||||||
 | 
					+			s = strtok_r(NULL, ":", &saveptr);
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
 | 
					 		if ( !(AllowSHA1 || AllowSHA256) )
 | 
				
			||||||
 | 
					 			return DKIM_SELECTOR_INVALID;	// todo: maybe create a new error code for unsupported hash algorithm
 | 
				
			||||||
 | 
					@@ -1261,7 +1267,7 @@
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		// make sure "*" or "email" is in the list
 | 
				
			||||||
 | 
					 		bool ServiceTypeMatch = false;
 | 
				
			||||||
 | 
					-		char *s = strtok(values[5], ":");
 | 
				
			||||||
 | 
					+		char *s = strtok_r(values[5], ":", &saveptr);
 | 
				
			||||||
 | 
					 		while (s != NULL)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			if (strcmp(s, "*") == 0 || strcmp(s, "email") == 0)
 | 
				
			||||||
 | 
					@@ -1269,7 +1275,7 @@
 | 
				
			||||||
 | 
					 				ServiceTypeMatch = true;
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 			}
 | 
				
			||||||
 | 
					-			s = strtok(NULL, ":");
 | 
				
			||||||
 | 
					+			s = strtok_r(NULL, ":", &saveptr);
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
 | 
					 		if (!ServiceTypeMatch)
 | 
				
			||||||
 | 
					 			return DKIM_SELECTOR_INVALID;
 | 
				
			||||||
 | 
					@@ -1278,7 +1284,7 @@
 | 
				
			||||||
 | 
					 	// flags
 | 
				
			||||||
 | 
					 	if (values[6] != NULL)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					-		char *s = strtok(values[6], ":");
 | 
				
			||||||
 | 
					+		char *s = strtok_r(values[6], ":", &saveptr);
 | 
				
			||||||
 | 
					 		while (s != NULL)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			if (strcmp(s, "y") == 0)
 | 
				
			||||||
 | 
					@@ -1289,7 +1295,7 @@
 | 
				
			||||||
 | 
					 			{
 | 
				
			||||||
 | 
					 				SameDomain = true;
 | 
				
			||||||
 | 
					 			}
 | 
				
			||||||
 | 
					-			s = strtok(NULL, ":");
 | 
				
			||||||
 | 
					+			s = strtok_r(NULL, ":", &saveptr);
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1388,6 +1394,9 @@
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					 int CDKIMVerify::GetSSP( const string &sDomain, int &iSSP, bool &bTesting )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					+	// for strtok_r()
 | 
				
			||||||
 | 
					+	char *saveptr;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	string sFQDN = "_ssp._domainkey.";
 | 
				
			||||||
 | 
					 	sFQDN += sDomain;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -1456,7 +1465,7 @@
 | 
				
			||||||
 | 
					 			// flags
 | 
				
			||||||
 | 
					 			if (values[1] != NULL)
 | 
				
			||||||
 | 
					 			{
 | 
				
			||||||
 | 
					-				char *s = strtok(values[1], "|");
 | 
				
			||||||
 | 
					+				char *s = strtok_r(values[1], "|", &saveptr);
 | 
				
			||||||
 | 
					 				while (s != NULL)
 | 
				
			||||||
 | 
					 				{
 | 
				
			||||||
 | 
					 					if (strcmp(s, "y") == 0)
 | 
				
			||||||
 | 
					@@ -1474,7 +1483,7 @@
 | 
				
			||||||
 | 
					 							return DKIM_SUCCESS;
 | 
				
			||||||
 | 
					 						}
 | 
				
			||||||
 | 
					 					}
 | 
				
			||||||
 | 
					-					s = strtok(NULL, "|");
 | 
				
			||||||
 | 
					+					s = strtok_r(NULL, "|", &saveptr);
 | 
				
			||||||
 | 
					 				}
 | 
				
			||||||
 | 
					 			}
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
@ -0,0 +1,117 @@ | 
				
			|||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-BEGIN ---
 | 
				
			||||||
 | 
					# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Filename: package/.../libdkim/extra-options.patch
 | 
				
			||||||
 | 
					# Copyright (C) 2009 The OpenSDE Project
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# More information can be found in the files COPYING and README.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This patch file is dual-licensed. It is available under the license the
 | 
				
			||||||
 | 
					# patched project is licensed under, as long as it is an OpenSource license
 | 
				
			||||||
 | 
					# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
 | 
				
			||||||
 | 
					# of the GNU General Public License as published by the Free Software
 | 
				
			||||||
 | 
					# Foundation; either version 2 of the License, or (at your option) any later
 | 
				
			||||||
 | 
					# version.
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-END ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This patch was taken from
 | 
				
			||||||
 | 
					  http://patchlog.com/security/qmail-and-dkim/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It adds usage text and a few extra options to the libdkimtest program that
 | 
				
			||||||
 | 
					comes with Alt-N's libdkim library.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Installation instructions:
 | 
				
			||||||
 | 
					 % wget http://downloads.sourceforge.net/libdkim/libdkim-1.0.19.zip
 | 
				
			||||||
 | 
					 % wget http://www.bltweb.net/qmail/libdkim-1.0.19-extra-options.patch
 | 
				
			||||||
 | 
					 % unzip libdkim-1.0.19
 | 
				
			||||||
 | 
					 % cd libdkim/src
 | 
				
			||||||
 | 
					 % patch -p2 < ../../libdkim-1.0.19-extra-options.patch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff -Naur libdkim.orig/src/libdkimtest.cpp libdkim/src/libdkimtest.cpp
 | 
				
			||||||
 | 
					--- ./libdkimtest.cpp	2009-03-13 16:17:45.000000000 -0500
 | 
				
			||||||
 | 
					+++ ./libdkimtest.cpp	2009-03-13 16:26:02.000000000 -0500
 | 
				
			||||||
 | 
					@@ -55,8 +55,23 @@
 | 
				
			||||||
 | 
					 	return 0;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+void usage()
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					+	printf( "usage: libdkimtest [-b<allman|ietf|both>] [-c<r|s|t|u>] [-d<domain>] [-l] [-h] [-i<[email protected]>] [-q] [-s] [-t] [-v] [-x<expire time>] [-z<hash>] <msgfile> <privkeyfile> <outfile>\n");
 | 
				
			||||||
 | 
					+	printf( "-b<standard> allman , ietf or both\n");
 | 
				
			||||||
 | 
					+	printf( "-c<canonicalization> r for relaxed [DEFAULT], s - simple, t relaxed/simple, u - simple/relaxed\n");
 | 
				
			||||||
 | 
					+	printf( "-d<domain> the domain tag, if not provided it will be determined from the sender/from header\n");
 | 
				
			||||||
 | 
					+	printf( "-l include body length tag\n");
 | 
				
			||||||
 | 
					+	printf( "-h this help\n");
 | 
				
			||||||
 | 
					+	printf( "-i<identity> the identity, if not provided it will not be included\n");
 | 
				
			||||||
 | 
					+	printf( "-s sign the message\n");
 | 
				
			||||||
 | 
					+	printf( "-t include a timestamp tag\n");
 | 
				
			||||||
 | 
					+	printf( "-v verify the message\n");
 | 
				
			||||||
 | 
					+	printf( "-x<expire_time> the expire time in seconds since epoch ( DEFAULT = current time + 604800)\n\t if set to - then it will not be included");
 | 
				
			||||||
 | 
					+	printf( "-z<hash>  1 for sha1, 2 for sha256, 3 for both\n");
 | 
				
			||||||
 | 
					+	printf( "-y<selector> the selector tag DEFAULT=MDaemon\n");
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					 int main(int argc, char* argv[])
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	int n;
 | 
				
			||||||
 | 
					@@ -77,7 +92,7 @@
 | 
				
			||||||
 | 
					 	time(&t);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	opts.nCanon = DKIM_SIGN_RELAXED;
 | 
				
			||||||
 | 
					-	opts.nIncludeBodyLengthTag = 1;
 | 
				
			||||||
 | 
					+	opts.nIncludeBodyLengthTag = 0;
 | 
				
			||||||
 | 
					 	opts.nIncludeQueryMethod = 0;
 | 
				
			||||||
 | 
					 	opts.nIncludeTimeStamp = 0;
 | 
				
			||||||
 | 
					 	opts.expireTime = t + 604800;		// expires in 1 week
 | 
				
			||||||
 | 
					@@ -92,6 +107,11 @@
 | 
				
			||||||
 | 
					 	int nArgParseState = 0;
 | 
				
			||||||
 | 
					 	bool bSign = true;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if(argc<2){
 | 
				
			||||||
 | 
					+		usage();
 | 
				
			||||||
 | 
					+		exit(1);
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	for( n = 1; n < argc; n++ )
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		if( argv[n][0] == '-' && strlen(argv[n]) > 1 )
 | 
				
			||||||
 | 
					@@ -121,14 +141,16 @@
 | 
				
			||||||
 | 
					 				}
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-
 | 
				
			||||||
 | 
					+			case 'd': 
 | 
				
			||||||
 | 
					+				strncpy(opts.szDomain,(const char*)(argv[n]+2),sizeof(opts.szDomain)-1);
 | 
				
			||||||
 | 
					+				break;
 | 
				
			||||||
 | 
					 			case 'l':		// body length tag
 | 
				
			||||||
 | 
					 				opts.nIncludeBodyLengthTag = 1;
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 			case 'h':
 | 
				
			||||||
 | 
					-				printf( "usage: \n" );
 | 
				
			||||||
 | 
					+				usage();	
 | 
				
			||||||
 | 
					 				return 0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 			case 'i':		// identity 
 | 
				
			||||||
 | 
					@@ -138,7 +160,7 @@
 | 
				
			||||||
 | 
					 				}
 | 
				
			||||||
 | 
					 				else
 | 
				
			||||||
 | 
					 				{
 | 
				
			||||||
 | 
					-					strcpy( opts.szIdentity, argv[n] + 2 );
 | 
				
			||||||
 | 
					+					strncpy( opts.szIdentity, argv[n] + 2,sizeof(opts.szIdentity)-1 );
 | 
				
			||||||
 | 
					 				}
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -169,6 +191,9 @@
 | 
				
			||||||
 | 
					 				}
 | 
				
			||||||
 | 
					 				break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+			case 'y':
 | 
				
			||||||
 | 
					+				strncpy( opts.szSelector, argv[n]+2, sizeof(opts.szSelector)-1);
 | 
				
			||||||
 | 
					+				break;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 			case 'z':		// sign w/ sha1, sha256 or both 
 | 
				
			||||||
 | 
					 				opts.nHash = atoi( &argv[n][2] );
 | 
				
			||||||
@ -0,0 +1,320 @@ | 
				
			|||||||
 | 
					#! /bin/sh /usr/share/dpatch/dpatch-run
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-BEGIN ---
 | 
				
			||||||
 | 
					# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Filename: package/.../libdkim/fix-warnings.patch
 | 
				
			||||||
 | 
					# Copyright (C) 2009 The OpenSDE Project
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# More information can be found in the files COPYING and README.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This patch file is dual-licensed. It is available under the license the
 | 
				
			||||||
 | 
					# patched project is licensed under, as long as it is an OpenSource license
 | 
				
			||||||
 | 
					# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
 | 
				
			||||||
 | 
					# of the GNU General Public License as published by the Free Software
 | 
				
			||||||
 | 
					# Foundation; either version 2 of the License, or (at your option) any later
 | 
				
			||||||
 | 
					# version.
 | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-END ---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 02_fix_warnings.dpatch by Russell Coker <[email protected]>
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					## DP: Get rid of warnings through the use of const and more correct types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@DPATCH@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkim.cpp libdkim-1.0.19/src/dkim.cpp
 | 
				
			||||||
 | 
					--- ./dkim.cpp	2008-05-12 20:07:32.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkim.cpp	2009-04-15 19:38:08.000000000 +1000
 | 
				
			||||||
 | 
					@@ -172,7 +172,7 @@
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-int DKIM_CALL DKIMVerifyProcess( DKIMContext* pVerifyContext, char* szBuffer, int nBufLength )
 | 
				
			||||||
 | 
					+int DKIM_CALL DKIMVerifyProcess( DKIMContext* pVerifyContext, const char* const szBuffer, int nBufLength )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	CDKIMVerify* pVerify = (CDKIMVerify*)ValidateContext( pVerifyContext, false );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -226,13 +226,13 @@
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-char* DKIM_CALL DKIMVersion()
 | 
				
			||||||
 | 
					+const char* DKIM_CALL DKIMVersion()
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	return VERSION_STRING;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-static char* DKIMErrorStrings[-1-DKIM_MAX_ERROR] = {
 | 
				
			||||||
 | 
					+static const char* DKIMErrorStrings[-1-DKIM_MAX_ERROR] = {
 | 
				
			||||||
 | 
					 	"DKIM_FAIL",
 | 
				
			||||||
 | 
					 	"DKIM_BAD_SYNTAX",
 | 
				
			||||||
 | 
					 	"DKIM_SIGNATURE_BAD",
 | 
				
			||||||
 | 
					@@ -254,7 +254,7 @@
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-char* DKIM_CALL DKIMGetErrorString( int ErrorCode )
 | 
				
			||||||
 | 
					+const char* DKIM_CALL DKIMGetErrorString( int ErrorCode )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	if (ErrorCode >= 0 || ErrorCode <= DKIM_MAX_ERROR)
 | 
				
			||||||
 | 
					 		return "Unknown";
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkim.h libdkim-1.0.19/src/dkim.h
 | 
				
			||||||
 | 
					--- ./dkim.h	2009-04-15 19:37:48.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkim.h	2009-04-15 19:38:08.000000000 +1000
 | 
				
			||||||
 | 
					@@ -155,14 +155,14 @@
 | 
				
			||||||
 | 
					 void DKIM_CALL DKIMSignFree( DKIMContext* pSignContext );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 int DKIM_CALL DKIMVerifyInit( DKIMContext* pVerifyContext, DKIMVerifyOptions* pOptions );
 | 
				
			||||||
 | 
					-int DKIM_CALL DKIMVerifyProcess( DKIMContext* pVerifyContext, char* szBuffer, int nBufLength );
 | 
				
			||||||
 | 
					+int DKIM_CALL DKIMVerifyProcess( DKIMContext* pVerifyContext, const char* szBuffer, int nBufLength );
 | 
				
			||||||
 | 
					 int DKIM_CALL DKIMVerifyResults( DKIMContext* pVerifyContext );
 | 
				
			||||||
 | 
					 int DKIM_CALL DKIMVerifyGetDetails( DKIMContext* pVerifyContext, int* nSigCount, DKIMVerifyDetails** pDetails, char* szPractices );
 | 
				
			||||||
 | 
					 void DKIM_CALL DKIMVerifyFree( DKIMContext* pVerifyContext );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-char *DKIM_CALL DKIMVersion();
 | 
				
			||||||
 | 
					+const char *DKIM_CALL DKIMVersion();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-char *DKIM_CALL DKIMGetErrorString( int ErrorCode );
 | 
				
			||||||
 | 
					+const char *DKIM_CALL DKIMGetErrorString( int ErrorCode );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #ifdef __cplusplus
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkimbase.cpp libdkim-1.0.19/src/dkimbase.cpp
 | 
				
			||||||
 | 
					--- ./dkimbase.cpp	2008-05-12 20:07:36.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimbase.cpp	2009-04-15 19:49:32.000000000 +1000
 | 
				
			||||||
 | 
					@@ -118,10 +118,10 @@
 | 
				
			||||||
 | 
					 // Process - split buffers into lines without any CRs or LFs at the end.
 | 
				
			||||||
 | 
					 //
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					-int CDKIMBase::Process( char* szBuffer, int nBufLength, bool bEOF )
 | 
				
			||||||
 | 
					+int CDKIMBase::Process( const char* szBuffer, int nBufLength, bool bEOF )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					-	char* p = szBuffer;
 | 
				
			||||||
 | 
					-	char* e = szBuffer + nBufLength;
 | 
				
			||||||
 | 
					+	const char* p = szBuffer;
 | 
				
			||||||
 | 
					+	const char* e = szBuffer + nBufLength;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	while( p < e )
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					@@ -208,7 +208,8 @@
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		m_InHeaders = false;
 | 
				
			||||||
 | 
					 		ProcessHeaders();
 | 
				
			||||||
 | 
					-		ProcessBody("", 0, true);
 | 
				
			||||||
 | 
					+		/* type conversion should be safe as length is zero */
 | 
				
			||||||
 | 
					+		ProcessBody((char *)"", 0, true);
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	return DKIM_SUCCESS;
 | 
				
			||||||
 | 
					@@ -338,9 +339,9 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	CompressSWSP(sTemp);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	unsigned cpos = sTemp.find(':');
 | 
				
			||||||
 | 
					+	string::size_type cpos = sTemp.find(':');
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	if (cpos == -1)
 | 
				
			||||||
 | 
					+	if (cpos == string::npos)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		// no colon?!
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkimbase.h libdkim-1.0.19/src/dkimbase.h
 | 
				
			||||||
 | 
					--- ./dkimbase.h	2008-05-12 20:07:24.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimbase.h	2009-04-15 19:49:32.000000000 +1000
 | 
				
			||||||
 | 
					@@ -41,7 +41,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	int Init(void);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	int Process( char* szBuffer, int nBufLength, bool bEOF );
 | 
				
			||||||
 | 
					+	int Process( const char* szBuffer, int nBufLength, bool bEOF );
 | 
				
			||||||
 | 
					 	int ProcessFinal(void);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	int Alloc( char*& szBuffer, int nRequiredSize );
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkimsign.cpp libdkim-1.0.19/src/dkimsign.cpp
 | 
				
			||||||
 | 
					--- ./dkimsign.cpp	2008-05-12 20:07:46.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimsign.cpp	2009-04-15 19:49:32.000000000 +1000
 | 
				
			||||||
 | 
					@@ -144,7 +144,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	fwrite( szBuffer, 1, nBufLength, fpdebug );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	/** END DEBUG CODE **/
 | 
				
			||||||
 | 
					+	** END DEBUG CODE **/
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	if( bAllmanOnly )
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					@@ -555,7 +555,7 @@
 | 
				
			||||||
 | 
					 //               if bFold, fold at cbrk char
 | 
				
			||||||
 | 
					 //
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					-void CDKIMSign::AddTagToSig( char* Tag, const string &sValue, char cbrk, bool bFold )
 | 
				
			||||||
 | 
					+void CDKIMSign::AddTagToSig( const char* const Tag, const string &sValue, char cbrk, bool bFold )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	int nTagLen = strlen(Tag);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -583,10 +583,10 @@
 | 
				
			||||||
 | 
					 // AddTagToSig - add tag and numeric value to signature folding if necessary
 | 
				
			||||||
 | 
					 //
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					-void CDKIMSign::AddTagToSig( char* Tag, unsigned long nValue )
 | 
				
			||||||
 | 
					+void CDKIMSign::AddTagToSig( const char* const Tag, unsigned long nValue )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	char szValue[64];
 | 
				
			||||||
 | 
					-	sprintf( szValue, "%u", nValue );
 | 
				
			||||||
 | 
					+	sprintf( szValue, "%lu", nValue );
 | 
				
			||||||
 | 
					 	AddTagToSig( Tag, szValue, 0, false );
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -686,7 +686,7 @@
 | 
				
			||||||
 | 
					 // GetSig - compute hash and return signature header in szSignature
 | 
				
			||||||
 | 
					 //
 | 
				
			||||||
 | 
					 ////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					-int CDKIMSign::GetSig( char* szPrivKey, char* szSignature, int nSigLength )
 | 
				
			||||||
 | 
					+int CDKIMSign::GetSig( char* szPrivKey, char* szSignature, unsigned nSigLength )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	if( szPrivKey == NULL )
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					@@ -794,7 +794,6 @@
 | 
				
			||||||
 | 
					 	int size;
 | 
				
			||||||
 | 
					 	int len;
 | 
				
			||||||
 | 
					 	char* buf;
 | 
				
			||||||
 | 
					-	int pos = 0;
 | 
				
			||||||
 | 
					 	
 | 
				
			||||||
 | 
					 	// construct the DKIM-Signature: header and add to hash
 | 
				
			||||||
 | 
					 	InitSig();
 | 
				
			||||||
 | 
					@@ -879,7 +878,7 @@
 | 
				
			||||||
 | 
					 		}
 | 
				
			||||||
 | 
					 		BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
 | 
				
			||||||
 | 
					 		BIO_push(b64, bio);
 | 
				
			||||||
 | 
					-		if (BIO_write(b64, Hash, nHashLen) < nHashLen) 
 | 
				
			||||||
 | 
					+		if (BIO_write(b64, Hash, nHashLen) < (int)nHashLen) 
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 		  BIO_free_all(b64);
 | 
				
			||||||
 | 
					 		  return DKIM_OUT_OF_MEMORY;
 | 
				
			||||||
 | 
					@@ -993,7 +992,7 @@
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					     BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
 | 
				
			||||||
 | 
					     BIO_push(b64, bio);
 | 
				
			||||||
 | 
					-    if (BIO_write(b64, sig, siglen) < siglen) 
 | 
				
			||||||
 | 
					+    if (BIO_write(b64, sig, siglen) < (int)siglen) 
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					       OPENSSL_free(sig);
 | 
				
			||||||
 | 
					       BIO_free_all(b64);
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkimsign.h libdkim-1.0.19/src/dkimsign.h
 | 
				
			||||||
 | 
					--- ./dkimsign.h	2008-05-12 20:07:58.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimsign.h	2009-04-15 19:49:32.000000000 +1000
 | 
				
			||||||
 | 
					@@ -32,7 +32,7 @@
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	int Init( DKIMSignOptions* pOptions );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	int GetSig( char* szPrivKey, char* szSignature, int nSigLength );
 | 
				
			||||||
 | 
					+	int GetSig( char* szPrivKey, char* szSignature, unsigned nSigLength );
 | 
				
			||||||
 | 
					 	int GetSig2( char* szPrivKey, char** pszSignature );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	virtual int ProcessHeaders(void);
 | 
				
			||||||
 | 
					@@ -50,8 +50,8 @@
 | 
				
			||||||
 | 
					 	bool ParseFromAddress( void );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	void InitSig(void);
 | 
				
			||||||
 | 
					-	void AddTagToSig( char* Tag, const string &sValue, char cbrk, bool bFold );
 | 
				
			||||||
 | 
					-	void AddTagToSig( char* Tag, unsigned long nValue );
 | 
				
			||||||
 | 
					+	void AddTagToSig( const char* const Tag, const string &sValue, char cbrk, bool bFold );
 | 
				
			||||||
 | 
					+	void AddTagToSig( const char* const Tag, unsigned long nValue );
 | 
				
			||||||
 | 
					 	void AddInterTagSpace( int nSizeOfNextTag );
 | 
				
			||||||
 | 
					 	void AddFoldedValueToSig( const string &sValue, char cbrk );
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/dkimverify.cpp libdkim-1.0.19/src/dkimverify.cpp
 | 
				
			||||||
 | 
					--- ./dkimverify.cpp	2009-04-15 19:37:48.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./dkimverify.cpp	2009-04-15 19:49:32.000000000 +1000
 | 
				
			||||||
 | 
					@@ -440,7 +440,7 @@
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	ProcessFinal();
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	int SuccessCount=0;
 | 
				
			||||||
 | 
					+	unsigned int SuccessCount=0;
 | 
				
			||||||
 | 
					 	int TestingFailures=0;
 | 
				
			||||||
 | 
					 	int RealFailures=0;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -646,7 +646,7 @@
 | 
				
			||||||
 | 
					 	/** END DEBUG CODE **/
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	if (IsBody && BodyLength != -1)
 | 
				
			||||||
 | 
					+	if (IsBody && BodyLength != (unsigned)-1)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		VerifiedBodyCount += nBufLength;
 | 
				
			||||||
 | 
					 		if (VerifiedBodyCount > BodyLength)
 | 
				
			||||||
 | 
					@@ -1019,7 +1019,7 @@
 | 
				
			||||||
 | 
					 	// body count
 | 
				
			||||||
 | 
					 	if (values[8] == NULL || !m_HonorBodyLengthTag)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					-		sig.BodyLength = -1;
 | 
				
			||||||
 | 
					+		sig.BodyLength = (unsigned)-1;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 	else
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					@@ -1057,17 +1057,17 @@
 | 
				
			||||||
 | 
					 	// expiration time
 | 
				
			||||||
 | 
					 	if (values[11] == NULL)
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					-		sig.ExpireTime = -1;
 | 
				
			||||||
 | 
					+		sig.ExpireTime = (unsigned)-1;
 | 
				
			||||||
 | 
					 	}
 | 
				
			||||||
 | 
					 	else
 | 
				
			||||||
 | 
					 	{
 | 
				
			||||||
 | 
					 		if (!ParseUnsigned(values[11], &sig.ExpireTime))
 | 
				
			||||||
 | 
					 			return DKIM_BAD_SYNTAX;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		if (sig.ExpireTime != -1)
 | 
				
			||||||
 | 
					+		if (sig.ExpireTime != (unsigned)-1)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			// the value of x= MUST be greater than the value of t= if both are present
 | 
				
			||||||
 | 
					-			if (SignedTime != -1 && sig.ExpireTime <= SignedTime)
 | 
				
			||||||
 | 
					+			if (SignedTime != (unsigned)-1 && sig.ExpireTime <= SignedTime)
 | 
				
			||||||
 | 
					 				return DKIM_BAD_SYNTAX;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 			// todo: if possible, use the received date/time instead of the current time
 | 
				
			||||||
 | 
					@@ -1169,7 +1169,7 @@
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-SelectorInfo::SelectorInfo(const string &sSelector, const string &sDomain) : Selector(sSelector), Domain(sDomain)
 | 
				
			||||||
 | 
					+SelectorInfo::SelectorInfo(const string &sSelector, const string &sDomain) : Domain(sDomain), Selector(sSelector)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	AllowSHA1 = true;
 | 
				
			||||||
 | 
					 	AllowSHA256 = true;
 | 
				
			||||||
 | 
					@@ -1207,7 +1207,7 @@
 | 
				
			||||||
 | 
					 			return DKIM_SELECTOR_INVALID;		// todo: maybe create a new error code for unsupported selector version
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 		// make sure v= is the first tag in the response	// todo: maybe don't enforce this, it seems unnecessary
 | 
				
			||||||
 | 
					-		for (int j=1; j<sizeof(values)/sizeof(values[0]); j++)
 | 
				
			||||||
 | 
					+		for (unsigned j=1; j<sizeof(values)/sizeof(values[0]); j++)
 | 
				
			||||||
 | 
					 		{
 | 
				
			||||||
 | 
					 			if (values[j] != NULL && values[j] < values[0])
 | 
				
			||||||
 | 
					 			{
 | 
				
			||||||
 | 
					@@ -1411,8 +1411,8 @@
 | 
				
			||||||
 | 
					 				return DKIM_POLICY_DNS_PERM_FAILURE;
 | 
				
			||||||
 | 
					 			}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-			unsigned pos = sDomain.find('.');
 | 
				
			||||||
 | 
					-			if (pos == -1 || sDomain.find('.', pos+1) == -1)
 | 
				
			||||||
 | 
					+			string::size_type pos = sDomain.find('.');
 | 
				
			||||||
 | 
					+			if (pos == string::npos || sDomain.find('.', pos+1) == string::npos)
 | 
				
			||||||
 | 
					 			{
 | 
				
			||||||
 | 
					 				// SSP not found but the domain exists, it's non-suspicious
 | 
				
			||||||
 | 
					 				iSSP = DKIM_SSP_UNKNOWN;
 | 
				
			||||||
 | 
					diff -ru libdkim-1.0.19.orig/src/libdkimtest.cpp libdkim-1.0.19/src/libdkimtest.cpp
 | 
				
			||||||
 | 
					--- ./libdkimtest.cpp	2008-05-12 20:08:54.000000000 +1000
 | 
				
			||||||
 | 
					+++ ./libdkimtest.cpp	2009-04-15 19:38:08.000000000 +1000
 | 
				
			||||||
 | 
					@@ -60,9 +60,9 @@
 | 
				
			||||||
 | 
					 int main(int argc, char* argv[])
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 	int n;
 | 
				
			||||||
 | 
					-	char* PrivKeyFile = "test.pem";
 | 
				
			||||||
 | 
					-	char* MsgFile = "test.msg";
 | 
				
			||||||
 | 
					-	char* OutFile = "signed.msg";
 | 
				
			||||||
 | 
					+	const char* PrivKeyFile = "test.pem";
 | 
				
			||||||
 | 
					+	const char* MsgFile = "test.msg";
 | 
				
			||||||
 | 
					+	const char* OutFile = "signed.msg";
 | 
				
			||||||
 | 
					 	int nPrivKeyLen;
 | 
				
			||||||
 | 
					 	char PrivKey[2048];
 | 
				
			||||||
 | 
					 	char Buffer[1024];
 | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					[TIMESTAMP] 1255607798 Thu Oct 15 14:56:38 2009 | 
				
			||||||
 | 
					[BUILDTIME] 0 (5) | 
				
			||||||
 | 
					[SIZE] 0.11 MB, 10 files | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[DEP] bash | 
				
			||||||
 | 
					[DEP] binutils | 
				
			||||||
 | 
					[DEP] coreutils | 
				
			||||||
 | 
					[DEP] diffutils | 
				
			||||||
 | 
					[DEP] fhs | 
				
			||||||
 | 
					[DEP] findutils | 
				
			||||||
 | 
					[DEP] gawk | 
				
			||||||
 | 
					[DEP] gcc | 
				
			||||||
 | 
					[DEP] glibc | 
				
			||||||
 | 
					[DEP] grep | 
				
			||||||
 | 
					[DEP] make | 
				
			||||||
 | 
					[DEP] openssl | 
				
			||||||
 | 
					[DEP] patch | 
				
			||||||
 | 
					[DEP] runit | 
				
			||||||
 | 
					[DEP] sed | 
				
			||||||
 | 
					[DEP] sysfiles | 
				
			||||||
 | 
					[DEP] unzip | 
				
			||||||
@ -0,0 +1,18 @@ | 
				
			|||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
				
			||||||
 | 
					# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					# Filename: package/.../libdkim/libdkim.conf | 
				
			||||||
 | 
					# Copyright (C) 2009 The OpenSDE Project | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					# More information can be found in the files COPYING and README. | 
				
			||||||
 | 
					# | 
				
			||||||
 | 
					# This program is free software; you can redistribute it and/or modify | 
				
			||||||
 | 
					# it under the terms of the GNU General Public License as published by | 
				
			||||||
 | 
					# the Free Software Foundation; version 2 of the License. A copy of the | 
				
			||||||
 | 
					# GNU General Public License can be found in the file COPYING. | 
				
			||||||
 | 
					# --- SDE-COPYRIGHT-NOTE-END --- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					srcdir=libdkim/src | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					runconf=0 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,33 @@ | 
				
			|||||||
 | 
					[COPY] --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
				
			||||||
 | 
					[COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
				
			||||||
 | 
					[COPY] | 
				
			||||||
 | 
					[COPY] Filename: package/.../libdkim/libdkim.desc | 
				
			||||||
 | 
					[COPY] Copyright (C) 2009 The OpenSDE Project | 
				
			||||||
 | 
					[COPY] | 
				
			||||||
 | 
					[COPY] More information can be found in the files COPYING and README. | 
				
			||||||
 | 
					[COPY] | 
				
			||||||
 | 
					[COPY] This program is free software; you can redistribute it and/or modify | 
				
			||||||
 | 
					[COPY] it under the terms of the GNU General Public License as published by | 
				
			||||||
 | 
					[COPY] the Free Software Foundation; version 2 of the License. A copy of the | 
				
			||||||
 | 
					[COPY] GNU General Public License can be found in the file COPYING. | 
				
			||||||
 | 
					[COPY] --- SDE-COPYRIGHT-NOTE-END --- | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[I] A DKIM implementation in C++ | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[T] A C++ library which allows incorporating DKIM into an existing MTA | 
				
			||||||
 | 
					[T] or other application. It provides full support for signing, verifying, | 
				
			||||||
 | 
					[T] and SSP. It is compliant with RFC 4871. | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[U] http://libdkim.sourceforge.net | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[A] Alt-N Technologies | 
				
			||||||
 | 
					[M] Nagy Karoly Gabriel <[email protected]> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[C] extra/library | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[L] APL | 
				
			||||||
 | 
					[S] Beta | 
				
			||||||
 | 
					[V] 1.0.19 | 
				
			||||||
 | 
					[P] X -----5---9 800.000 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[D] 2617769788 libdkim-1.0.19.zip  http://dl.sourceforge.net/sourceforge/libdkim/ | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue