imgdiff: fix file descriptor leak
mkstemp() allocates a file description that is never released. If MakePatch() is called too many time, imgdiff reaches the Operating System EMFILE (too many open files) limit. Change-Id: Icbe1399f6f6d32cfa1830f879cacf7d75bbd9fc3 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Signed-off-by: Gaelle Nassiet <gaellex.nassiet@intel.com>
This commit is contained in:
@@ -628,7 +628,15 @@ unsigned char* MakePatch(ImageChunk* src, ImageChunk* tgt, size_t* size) {
|
||||
}
|
||||
|
||||
char ptemp[] = "/tmp/imgdiff-patch-XXXXXX";
|
||||
mkstemp(ptemp);
|
||||
int fd = mkstemp(ptemp);
|
||||
|
||||
if (fd == -1) {
|
||||
printf("MakePatch failed to create a temporary file: %s\n",
|
||||
strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
close(fd); // temporary file is created and we don't need its file
|
||||
// descriptor
|
||||
|
||||
int r = bsdiff(src->data, src->len, &(src->I), tgt->data, tgt->len, ptemp);
|
||||
if (r != 0) {
|
||||
|
||||
Reference in New Issue
Block a user