[Spice-devel] [spice-vdagent PATCH v2 1/2] vdagentd: daemonize: check fopen/fprintf return value
Frediano Ziglio
fziglio at redhat.com
Thu Aug 29 16:52:11 UTC 2019
>
> Upon failure, write a warning message and continue
>
> Found-by: covscan
>
> Signed-off-by: Uri Lublin <uril at redhat.com>
> ---
>
> v1->v2: added a check for fopen too.
>
> ---
> src/vdagentd/vdagentd.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c
> index 72a3e13..ba1b0c7 100644
> --- a/src/vdagentd/vdagentd.c
> +++ b/src/vdagentd/vdagentd.c
> @@ -996,8 +996,13 @@ static void daemonize(void)
> }
> pidfile = fopen(pidfilename, "w");
> if (pidfile) {
> - fprintf(pidfile, "%d\n", (int)getpid());
> + int r = fprintf(pidfile, "%d\n", (int)getpid());
> + if (r < 0) {
> + syslog(LOG_WARNING, "Error writing to %s: %m", pidfilename);
This won't never be executed, the condition should be
if (fclose(pidfile) || r < 0) {
the file is just opened, the string is small and the file is not a terminal
(so full buffering, no line one, no flush) so fprintf will return r > 0.
> + }
> fclose(pidfile);
removing this.
> + } else {
> + syslog(LOG_WARNING, "Failed to create pidfile %s: %m",
> pidfilename);
> }
> break;
> case -1:
Frediano
More information about the Spice-devel
mailing list