git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement "testing" flag lookup logic
[exim.git]
/
src
/
src
/
dk.c
diff --git
a/src/src/dk.c
b/src/src/dk.c
index 30dfc78be81291556bf5f3a042661c371e69fb9f..4d963f1a8b70ba3dd50112a1314c18bdd66a4de9 100644
(file)
--- a/
src/src/dk.c
+++ b/
src/src/dk.c
@@
-1,4
+1,4
@@
-/* $Cambridge: exim/src/src/dk.c,v 1.
4 2005/06/24 08:23:21
tom Exp $ */
+/* $Cambridge: exim/src/src/dk.c,v 1.
6 2005/06/27 15:11:59
tom Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
/*************************************************
* Exim - an Internet mail transport agent *
@@
-138,6
+138,13
@@
void dk_exim_verify_finish(void) {
/* Flag end-of-message. */
dk_internal_status = dk_end(dk_context, &dk_flags);
/* Flag end-of-message. */
dk_internal_status = dk_end(dk_context, &dk_flags);
+ /* dk_flags now has the selector flags (if there was one).
+ It seems that currently only the "t=" flag is supported
+ in selectors. */
+ if (dk_flags & DK_FLAG_SET)
+ if (dk_flags & DK_FLAG_TESTING)
+ dk_verify_block->testing = TRUE;
+
/* Grab address/domain information. */
p = dk_address(dk_context);
if (p != NULL) {
/* Grab address/domain information. */
p = dk_address(dk_context);
if (p != NULL) {
@@
-165,12
+172,13
@@
void dk_exim_verify_finish(void) {
}
}
}
}
- /*
TODO: This call should be removed with lib version >= 0.67
*/
+ /*
Now grab the domain-wide DK policy
*/
dk_flags = dk_policy(dk_context);
dk_flags = dk_policy(dk_context);
- /* Grab domain policy */
if (dk_flags & DK_FLAG_SET) {
if (dk_flags & DK_FLAG_SET) {
- if (dk_flags & DK_FLAG_TESTING)
+ /* Selector "t=" flag has precedence, don't overwrite it if
+ the selector has set it above. */
+ if ((dk_flags & DK_FLAG_TESTING) && !dk_verify_block->testing)
dk_verify_block->testing = TRUE;
if (dk_flags & DK_FLAG_SIGNSALL)
dk_verify_block->signsall = TRUE;
dk_verify_block->testing = TRUE;
if (dk_flags & DK_FLAG_SIGNSALL)
dk_verify_block->signsall = TRUE;
@@
-384,8
+392,8
@@
uschar *dk_exim_sign(int dk_fd,
/* Looks like a filename, load the private key. */
memset(big_buffer,0,big_buffer_size);
privkey_fd = open(CS dk_private_key,O_RDONLY);
/* Looks like a filename, load the private key. */
memset(big_buffer,0,big_buffer_size);
privkey_fd = open(CS dk_private_key,O_RDONLY);
- read(privkey_fd,big_buffer,16383);
- close(privkey_fd);
+
(void)
read(privkey_fd,big_buffer,16383);
+
(void)
close(privkey_fd);
dk_private_key = big_buffer;
}
dk_private_key = big_buffer;
}