Blame | Last modification | View Log | RSS feed
#! /bin/sh /usr/share/dpatch/dpatch-run## 01_strtok_r.dpatch by Russell Coker <russell@coker.com.au>#### 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--- libdkim-1.0.19/src/dkimverify.cpp 2008-05-12 20:08:06.000000000 +1000+++ libdkim-1.0.19-new/src/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 latersig.Header = sHeader;@@ -1032,7 +1035,7 @@{// make sure "dns" is in the listbool 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 listbool 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 listbool 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 @@// flagsif (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 @@// flagsif (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);}}}