Some patchs
Denys Vlasenko
vda.linux at googlemail.com
Fri Jun 27 15:48:00 UTC 2008
On Thursday 26 June 2008 16:17, Pascal Bellard wrote:
> unlzma: memory leak
> http://hg.slitaz.org/wok/raw-file/be0892d9efd5/busybox/stuff/busybox-1.11.0-unlzma.u
Good catch.
@@ -491,10 +491,14 @@
if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) {
bad:
- rc_free(rc);
- return -1;
+ len = -1;
+ }
+ else {
+ USE_DESKTOP(total_written += buffer_pos;)
+ len = USE_DESKTOP(total_written) + 0;
The only problem here is that len is "int", whereas total_written is "llong".
}
rc_free(rc);
- USE_DESKTOP(total_written += buffer_pos;)
- return USE_DESKTOP(total_written) + 0;
+ rc_free(buffer);
+ rc_free(p);
+ return len;
}
Oh, and we also leak buffer! :(
I propose the following:
{
USE_DESKTOP(total_written += buffer_pos;)
SKIP_DESKTOP(int total_written = 0; /* success */)
if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) {
bad:
total_written = -1; /* failure */
}
rc_free(rc);
free(p);
free(buffer);
return total_written;
}
}
--
vda
More information about the busybox
mailing list