git://git.exim.org
/
exim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
74e249a
)
Fix SSL creds file watching on kevent platforms (BSDs) for symlinks
author
Jeremy Harris
<jgh146exb@wizmail.org>
Sat, 5 Jun 2021 19:47:12 +0000
(20:47 +0100)
committer
Jeremy Harris
<jgh146exb@wizmail.org>
Sat, 5 Jun 2021 19:47:12 +0000
(20:47 +0100)
src/src/tls.c
patch
|
blob
|
history
diff --git
a/src/src/tls.c
b/src/src/tls.c
index e073eadbeb3f47a4c12ed72ce1246324a6589888..3de417eca0498ca710ab178eb3f52642ffa3e8e4 100644
(file)
--- a/
src/src/tls.c
+++ b/
src/src/tls.c
@@
-158,8
+158,8
@@
return FALSE;
# endif
# ifdef EXIM_HAVE_KEVENT
{
# endif
# ifdef EXIM_HAVE_KEVENT
{
-uschar * s;
-int fd1, fd2, i, cnt = 0;
+uschar * s
, * t
;
+int fd1, fd2, i,
j,
cnt = 0;
struct stat sb;
#ifdef OpenBSD
struct kevent k_dummy;
struct stat sb;
#ifdef OpenBSD
struct kevent k_dummy;
@@
-209,11
+209,14
@@
for (;;)
if (!(S_ISLNK(sb.st_mode))) break;
if (!(S_ISLNK(sb.st_mode))) break;
- s = store_get(1024, FALSE);
- if ((i = readlink(CCS filename, (void *)s, 1024)) < 0) { s = US"readlink"; goto bad; }
- filename = s;
- *(s += i) = '\0';
- store_release_above(s+1);
+ t = store_get(1024, FALSE);
+ Ustrncpy(t, s, 1022);
+ j = Ustrlen(s);
+ t[j++] = '/';
+ if ((i = readlink(CCS filename, (void *)(t+j), 1023-j)) < 0) { s = US"readlink"; goto bad; }
+ filename = t;
+ *(t += i+j) = '\0';
+ store_release_above(t+1);
}
#ifdef OpenBSD
}
#ifdef OpenBSD