cvs commit: ports/mail/libesmtp Makefile
John Merryweather Cooper
john_m_cooper at yahoo.com
Sun Jan 18 23:03:08 PST 2004
I was away in Seattle, so viewing the code was a might difficult. Now
that I'm back home, I have to agree that the internal memrchr() fix
better preserves the semantics of RFC 2818 (which parses from tail to head).
I wonder since we have both a strchr() and a strrchr() in libc why this
is not echoed with memchr() and a memrchr() since these functions are so
similar.
Also, the implementation of memrchr() seems to make some very
i386-specific assumptions about pointers. Couldn't this be better
implemented wrapping strrchr() to handle NUL and size_t?
Other than that, it works. :)
jmc
Max Khon wrote:
> Hello!
>
> On Sun, Jan 18, 2004 at 03:47:07AM -0800, Clement LAFORET wrote:
>
>
>>clement 2004/01/18 03:47:07 PST
>>
>> FreeBSD ports repository
>>
>> Modified files:
>> mail/libesmtp Makefile
>> Log:
>> s/memrchr/memchr/.
>> It fixes an 'undefined reference to `memrchr''.
>>
>> Approved by: maintainer
>> Approved by: erwin (mentor) (implicitly)
>
>
> This fix is totally incorrect. memrchr is not a typo and was there
> intentionally (please take a look at the comments in the patched file one
> line before the places where memrchr is used).
>
> The correct fix is to add an implementation of memrchr.c to smtp-tls.c
> (attached).
>
> /fjoe
>
>
> ------------------------------------------------------------------------
>
> --- smtp-tls.c.orig Mon Jan 19 02:36:32 2004
> +++ smtp-tls.c Mon Jan 19 02:41:25 2004
> @@ -450,6 +450,20 @@
> return 1;
> }
>
> +#if defined(__FreeBSD__)
> +void *
> +memrchr(const void *v, int c, size_t size)
> +{
> + const unsigned char *p = (const unsigned char *) v + size;
> +
> + while (size-- > 0) {
> + if (*--p == c)
> + return (void *) p;
> + }
> + return NULL;
> +}
> +#endif
> +
> /* Perform a domain name comparison where the reference may contain
> wildcards. This implements the comparison from RFC 2818.
> Each component of the domain name is matched separately, working from
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> cvs-all at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/cvs-all
> To unsubscribe, send any mail to "cvs-all-unsubscribe at freebsd.org"
More information about the cvs-all
mailing list