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
Dsearch: Fix taint-handling in lookup. Bug 2465
[exim.git]
/
src
/
src
/
lookups
/
dsearch.c
diff --git
a/src/src/lookups/dsearch.c
b/src/src/lookups/dsearch.c
index 9f7dd8da0c0319050bfb8586a7eaf0e099d25207..c27f5d6e65203f9d01d984012ab3566c067bb997 100644
(file)
--- a/
src/src/lookups/dsearch.c
+++ b/
src/src/lookups/dsearch.c
@@
-65,13
+65,13
@@
return lf_check_file(-1, filename, S_IFDIR, modemask, owners, owngroups,
scanning the directory, as it is hopefully faster to let the OS do the scanning
for us. */
scanning the directory, as it is hopefully faster to let the OS do the scanning
for us. */
-int
-
static
dsearch_find(void *handle, uschar *dirname, const uschar *keystring, int length,
+
static
int
+dsearch_find(void *handle, uschar *dirname, const uschar *keystring, int length,
uschar **result, uschar **errmsg, uint *do_cache)
{
struct stat statbuf;
int save_errno;
uschar **result, uschar **errmsg, uint *do_cache)
{
struct stat statbuf;
int save_errno;
-uschar
filename[PATH_MAX]
;
+uschar
* filename
;
handle = handle; /* Keep picky compilers happy */
length = length;
handle = handle; /* Keep picky compilers happy */
length = length;
@@
-84,12
+84,7
@@
if (Ustrchr(keystring, '/') != 0)
return DEFER;
}
return DEFER;
}
-if (!string_format(filename, sizeof(filename), "%s/%s", dirname, keystring))
- {
- *errmsg = US"path name too long";
- return DEFER;
- }
-
+filename = string_sprintf("%s/%s", dirname, keystring);
if (Ulstat(filename, &statbuf) >= 0)
{
*result = string_copy(keystring);
if (Ulstat(filename, &statbuf) >= 0)
{
*result = string_copy(keystring);