On 2016/01/11 10:53, Stuart Henderson wrote:
> CVSROOT:      /cvs
> Module name:  ports
> Changes by:   [email protected]   2016/01/11 10:53:05
> 
> Modified files:
>       www/squidclamav: Makefile 
> Added files:
>       www/squidclamav/patches: patch-src_squidclamav_c 
> 
> Log message:
> Fix what looks like a typo (BUFSIZ/LBUFSIZ) in squidclamav with safebrowsing
> checks enabled. Triggers the "backwards memcpy" checks but it's really an
> overrun.
> 
> Found with this, it's not perfect but useful nonetheless.
> 
> #include <syslog.h>
> #define memcpy(dst0, src0, length0) do {                                \
> char *dst = (char *)dst0;                                       \
> const char *src = (char *)src0;                                 \
> size_t length = (size_t) length0;                               \
> \
> if ((dst < src && dst + length > src) ||                        \
> (src < dst && src + length > dst))                          \
> syslog(LOG_CRIT, "backwards memcpy %s:%u len=%llu",     \
> __FILE__, __LINE__, (uint64_t) length);             \
> memmove (dst, src, length); } while (0)
> 

thanks, cvs-mailer-thingy!

#include <syslog.h>
#define memcpy(dst0, src0, length0) do {                                \
        char *dst = (char *)dst0;                                       \
        const char *src = (char *)src0;                                 \
        size_t length = (size_t) length0;                               \
                                                                        \
        if ((dst < src && dst + length > src) ||                        \
            (src < dst && src + length > dst))                          \
                syslog(LOG_CRIT, "backwards memcpy %s:%u len=%llu",     \
                    __FILE__, __LINE__, (uint64_t) length);             \
                memmove (dst, src, length); } while (0)

Reply via email to