[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Exim4 problems
From: |
Svante Signell |
Subject: |
Re: Exim4 problems |
Date: |
Tue, 17 May 2011 00:42:12 +0200 |
On Tue, 2011-05-17 at 00:13 +0200, Thomas Schwinge wrote:
> > Additionally: No breakpoints are possible to set. Looks like they are
> > not honoured due to the memory address problems above.
>
> Strange.
Same problem with a working version: -O0
No breakpoints possible!
Starting program: exim4-4.76/build-tree/build-exim4-daemon-heavy/exim -C
exim4-4.76/test/eximtest/exim4.conf -bV
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
[New Thread 13686.10]
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Cannot access memory at address 0x6e696171
Starting program: exim4-4.76/build-tree/build-exim4-daemon-light/exim -C
exim4-4.76/test/eximtest/exim4.conf -bV
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
[New Thread 13687.15]
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Cannot access memory at address 0x656f6404
Exim version 4.76 #1 built 17-May-2011 00:07:52
...
2011-05-17 00:30:26 exim user lost privilege for using -C option
Configuration file is exim4-4.76/test/eximtest/exim4.conf
Program exited normally
>
> > We also see from the BT that the arguments to rda_extract are completely
> > wrong:
> >
> > sieve_enotify_mailto_owner=0xffffffff <Address 0xffffffff out of bounds>
> > probably also: eblockp=0xffffffff
>
> These look like (int) -1 displayed as 32-bit hex, or casted to (unsigned
> int), or to a pointer. This may be what the author intended to do, or it
> may be wrong -- I can't tell yet.
>
>
> > static int rda_exists(uschar *filename, uschar **error)
>
> Please continue here: what is this function doing? (You didn't past that
> one.) Does it make sense what it is doing if filename == NULL -- if
> we're assuming that is a valid thing to happen? (Which I can't tell
> either, but it may be valid.)
Below is the description:
/*************************************************
* Check for existence of file *
*************************************************/
/* First of all, we stat the file. If this fails, we try to stat the
enclosing directory, because a file in an unmounted NFS directory will
look the same as a non-existent file. It seems that in Solaris 2.6,
statting an entry in an indirect map that is currently unmounted does
not cause the mount to happen. Instead, dummy data is returned, which
defeats the whole point of this test. However, if a stat() is done on
some object inside the directory, such as the "." back reference to
itself, then the mount does occur. If an NFS host is taken offline, it
is possible for the stat() to get stuck until it comes back. To guard
against this, stick a timer round it. If we can't access the "." inside
the directory, try the plain directory, just in case that helps.
Argument:
filename the file name
error for message on error
Returns: FILE_EXIST the file exists
FILE_NOT_EXIST the file does not exist
FILE_EXIST_UNCLEAR cannot determine existence
*/
static int
rda_exists(uschar *filename, uschar **error)
{
int rc, saved_errno;
uschar *slash;
struct stat statbuf;
if ((rc = Ustat(filename, &statbuf)) >= 0) return FILE_EXIST;
saved_errno = errno;
Ustrncpy(big_buffer, filename, big_buffer_size - 3);
sigalrm_seen = FALSE;
if (saved_errno == ENOENT)
{
slash = Ustrrchr(big_buffer, '/');
Ustrcpy(slash+1, ".");
alarm(30);
rc = Ustat(big_buffer, &statbuf);
if (rc != 0 && errno == EACCES && !sigalrm_seen)
{
{
*slash = 0;
rc = Ustat(big_buffer, &statbuf);
}
saved_errno = errno;
alarm(0);
DEBUG(D_route) debug_printf("stat(%s)=%d\n", big_buffer, rc);
}
if (sigalrm_seen || rc != 0)
{
*error = string_sprintf("failed to stat %s (%s)", big_buffer,
sigalrm_seen? "timeout" : strerror(saved_errno));
return FILE_EXIST_UNCLEAR;
}
*error = string_sprintf("%s does not exist", filename);
DEBUG(D_route) debug_printf("%s\n", *error);
return FILE_NOT_EXIST;
}
- Re: Exim4 problems, (continued)
- Re: Exim4 problems, Thomas Schwinge, 2011/05/15
- Re: Exim4 problems, Svante Signell, 2011/05/16
- Re: Exim4 problems, Svante Signell, 2011/05/16
- Re: Exim4 problems, Svante Signell, 2011/05/15
- Re: Exim4 problems, Svante Signell, 2011/05/16
- Re: Exim4 problems: rpctrace1: exim4-daemon-light, Svante Signell, 2011/05/16
- Re: Exim4 problems: rpctrace2: exim4-daemon-heavy, Svante Signell, 2011/05/16
- Re: Exim4 problems, Thomas Schwinge, 2011/05/16
- Re: Exim4 problems, Svante Signell, 2011/05/16
- Re: Exim4 problems, Thomas Schwinge, 2011/05/16
- Re: Exim4 problems,
Svante Signell <=
- Re: Exim4 problems, Thomas Schwinge, 2011/05/16
- Re: Exim4 problems, Svante Signell, 2011/05/17
- Re: Exim4 problems, Svante Signell, 2011/05/17
- Re: Exim4 problems, Svante Signell, 2011/05/17
- Introducing the hardening-wrapper package (was: Exim4 problems), Thomas Schwinge, 2011/05/17
- Re: Introducing the hardening-wrapper package (was: Exim4 problems), Svante Signell, 2011/05/17
- Re: Introducing the hardening-wrapper package (was: Exim4 problems), Samuel Thibault, 2011/05/17
- Re: Introducing the hardening-wrapper package (was: Exim4 problems), Thomas Schwinge, 2011/05/18
- Re: Introducing the hardening-wrapper package (was: Exim4 problems), Svante Signell, 2011/05/18
- Re: Introducing the hardening-wrapper package (was: Exim4 problems), Samuel Thibault, 2011/05/23