diff -u logrotate-3.7.7-orig/config.c logrotate-3.7.7/config.c --- logrotate-3.7.7-orig/config.c 2008-08-07 15:10:36.000000000 +0200 +++ logrotate-3.7.7/config.c 2008-08-07 15:11:54.000000000 +0200 @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -18,6 +17,7 @@ #include #include #include +#include #include "basenames.h" #include "log.h" @@ -93,7 +93,7 @@ chptr = start; - while( (len = mbrtowc(&pwc, chptr, strlen(chptr), NULL)) != 0 ) { + while( (len = strlen(chptr)) != 0 && (len = mbrtowc(&pwc, chptr, len, NULL)) != 0 ) { if( len == (size_t)(-1) || len == (size_t)(-2) || !iswprint(pwc) || iswblank(pwc) ) { message(MESS_ERROR, "%s:%d bad %s path %s\n", configFile, lineNum, key, start); diff -u logrotate-3.7.7-orig/logrotate.c logrotate-3.7.7/logrotate.c --- logrotate-3.7.7-orig/logrotate.c 2008-08-07 15:10:36.000000000 +0200 +++ logrotate-3.7.7/logrotate.c 2008-08-07 15:10:43.000000000 +0200 @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -14,6 +13,7 @@ #include #include #include +#include #ifdef WITH_SELINUX #include