From: Jose-Marcio Martins da Cruz on
D. Stussy wrote:
> I have found that ISC's libbind 6.0 does have this function, but for some
> reason, this was not being detected and the dummy sub routine was being
> compiled in regardless. Commenting out the stub for freehostent() locally
> fixed the problem.

Why are you using ISC's libbind ? Which OS ?

>
> The milter library of Sendmail needs to be fixed to detect the presence of
> this (separately from getipnodeby*()) and conditionally compile around
> this. The following commented assumption is WRONG:
>
> /*
> ** Stub routine -- if they don't have getipnodeby*(),
> ** they probably don't have the free routine either.
> */
>
> Conditionals: #endif /* NEEDSGETIPNODE && NETINET6 */
>
> The conflict shows up in a failed compilation of milters, including
> dkim-filter (where I saw the problem), and the older dk-filter, where the
> linker complains about a redefintion of the size of the routine (5 bytes
> vs. 271 on my system).

Which error messages ?

If you type "man getipnedebyname" or "man getipnodebyaddr", you'll see
that getipnodebyX allocates some memory to return results (thread safe
routine), so it needs some way to free the space allocated, it it will
surely need free...

But as long as you haven't posted error messages nor told which OS are
you using, it's hard to say something.

>
> I have Sendmail version 8.14.4, compiled from the source. I have not
> checked 8.14.5 alpha 0 for the problem. As noted by the conditionals, this
> may only appear on IPv6 enabled systems.
From: D. Stussy on
"Jose-Marcio Martins da Cruz" <Jose-Marcio.Martins(a)ensmp.fr> wrote in
message news:4C0C14FE.7060801(a)ensmp.fr...
> D. Stussy wrote:
> > I have found that ISC's libbind 6.0 does have this function, but for
some
> > reason, this was not being detected and the dummy sub routine was being
> > compiled in regardless. Commenting out the stub for freehostent()
locally
> > fixed the problem.
>
> Why are you using ISC's libbind ? Which OS ?

Why does the use of ISC's libbind matter? All that need be known is that
it is installed and provides the real routine which is being stubbed out in
libmilter because sendmail is NOT detecting that there's a conflict in its
configuration phase. The bug is for NOT DETECTING that the real routine is
available and thus skipping the stub.

The OS is Linux.

> > The milter library of Sendmail needs to be fixed to detect the presence
of
> > this (separately from getipnodeby*()) and conditionally compile around
> > this. The following commented assumption is WRONG:
> >
> > /*
> > ** Stub routine -- if they don't have getipnodeby*(),
> > ** they probably don't have the free routine either.
> > */
> >
> > Conditionals: #endif /* NEEDSGETIPNODE && NETINET6 */
> >
> > The conflict shows up in a failed compilation of milters, including
> > dkim-filter (where I saw the problem), and the older dk-filter, where
the
> > linker complains about a redefintion of the size of the routine (5
bytes
> > vs. 271 on my system).
>
> Which error messages ?

Multiply defined symbol, of course. Read what I said.

> If you type "man getipnedebyname" or "man getipnodebyaddr", you'll see
> that getipnodebyX allocates some memory to return results (thread safe
> routine), so it needs some way to free the space allocated, it it will
> surely need free...

So what is your point?

> But as long as you haven't posted error messages nor told which OS are
> you using, it's hard to say something.

I have laready told you what the error is: Sendmail is building its own
[dummy-stub] version of a library function that already exists in another
library due to a failure to detect the real routine.

> > I have Sendmail version 8.14.4, compiled from the source. I have not
> > checked 8.14.5 alpha 0 for the problem. As noted by the conditionals,
this
> > may only appear on IPv6 enabled systems.


From: Claus Aßmann on
D. Stussy wrote:

> it is installed and provides the real routine which is being stubbed out in
> libmilter because sendmail is NOT detecting that there's a conflict in its
> configuration phase. The bug is for NOT DETECTING that the real routine is

Which "configuration phase" are you talking about?

PS: I'm looking forward to seeing your patch. Thanks.
From: D. Stussy on
"Claus A�mann" <ca+sendmail(-no-copies-please)@mine.informatik.uni-kiel.de>
wrote in message news:huhd3n$hic$1(a)obelix.informatik.uni-kiel.de...
> D. Stussy wrote:
>
> > it is installed and provides the real routine which is being stubbed
out in
> > libmilter because sendmail is NOT detecting that there's a conflict in
its
> > configuration phase. The bug is for NOT DETECTING that the real
routine is
>
> Which "configuration phase" are you talking about?
>
> PS: I'm looking forward to seeing your patch. Thanks.

Not as a diff, but simply the result of the change:

// void
// freehostent(h)
// struct hostent *h;
// {
// /*
// ** Stub routine -- if they don't have getipnodeby*(),
// ** they probably don't have the free routine either.
// */
//
// return;
// }
#endif /* NEEDSGETIPNODE && NETINET6 */


As noted, commenting out the defective stub routine was sufficient to fix
the problem.


From: Claus Aßmann on
D. Stussy wrote:
> "Claus A�mann"
> > Which "configuration phase" are you talking about?

Seems this question went unanswered.

> > PS: I'm looking forward to seeing your patch. Thanks.

> Not as a diff, but simply the result of the change:

> // void
> // freehostent(h)

That will work well with a real C compiler and on systems that
actually need freehostent(), which seems to be almost all.