> I was running upsmon some time without UPS connected and noticed
> significant memory leak.
Ooops.
> After some debugging I found the leak source. It is in file
> clients/upsclient.c.
> Function upscli_connect() allocates memory for ups->pc_ctx and in case
> of any error, just returns -1 without freeing it.
I see, that's not nice.
> My NUT version is 2.2.0, but I quickly looked through 2.2.1 sources
> and it seems this bug was not fixed.
You're the first to report this, so indeed, it is in 2.2.1 too.
> So I include here simple patch. It uses goto to skip to free()
> allocated memory before returning in case of error. Sure one could
> rewrite it in more elegant way but nevertheless it helped me.
While I agree that this needs fixing, I don't like this patch. It would be
better to call upscli_disconnect() before returning with an error.
However, I'm not sure where to fix this. We could do this by default in
the upscli_connect() when something goes wrong, or it could be done by the
caller after upscli_connect() returns with an error. I'm not sure which
one would be cleaner.
Best regards, Arjen
--
Eindhoven - The Netherlands
Key fingerprint - 66 4E 03 2C 9D B5 CB 9B 7A FE 7E C1 EE 88 BC 57