On 13.02.2012 14:42, Daniel Veillard wrote:
On Mon, Feb 13, 2012 at 02:29:44PM +0100, Michal Privoznik wrote:
> Some programs, notably dnsmasq, which are writing pidfiles on their
> own do append a whitespace character after pid, e.g. '\n'.
> ---
> src/util/virpidfile.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c
> index 34d1250..9c29967 100644
> --- a/src/util/virpidfile.c
> +++ b/src/util/virpidfile.c
> @@ -34,7 +34,7 @@
> #include "intprops.h"
> #include "logging.h"
> #include "virterror_internal.h"
> -
> +#include "c-ctype.h"
>
> #define VIR_FROM_THIS VIR_FROM_NONE
>
> @@ -119,6 +119,7 @@ int virPidFileReadPath(const char *path,
> ssize_t bytes;
> long long pid_value = 0;
> char pidstr[INT_BUFSIZE_BOUND(pid_value)];
> + char *endptr = NULL;
>
> *pid = 0;
>
> @@ -135,7 +136,8 @@ int virPidFileReadPath(const char *path,
> }
> pidstr[bytes] = '\0';
>
> - if (virStrToLong_ll(pidstr, NULL, 10, &pid_value) < 0 ||
> + if (virStrToLong_ll(pidstr, &endptr, 10, &pid_value) < 0 ||
> + !(*endptr == '\0' || c_isspace(*endptr)) ||
> (pid_t) pid_value != pid_value) {
> rc = -1;
> goto cleanup;
Okay, thanks for chasing this last minute issue, ACK
please push :-)
Daniel
Thanks, pushed.
Michal