mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 09:55:18 +00:00
storage: avoid memory leak on stat failure
Spotted by coverity. Triggers on failed stat, although I'm not sure how easy that condition is, so I'm not sure if this is a runtime memory hog. Regression introduced in commit 8077d64 (unreleased). * src/util/storage_file.c (virStorageFileGetMetadataFromFD): Reduce need for malloc, avoiding a leak.
This commit is contained in:
parent
9892f7bca0
commit
f515bab78d
@ -831,11 +831,6 @@ virStorageFileGetMetadataFromFD(const char *path,
|
||||
int ret = -1;
|
||||
struct stat sb;
|
||||
|
||||
if (VIR_ALLOC_N(head, len) < 0) {
|
||||
virReportOOMError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(meta, 0, sizeof (*meta));
|
||||
|
||||
if (fstat(fd, &sb) < 0) {
|
||||
@ -847,13 +842,17 @@ virStorageFileGetMetadataFromFD(const char *path,
|
||||
|
||||
/* No header to probe for directories */
|
||||
if (S_ISDIR(sb.st_mode)) {
|
||||
ret = 0;
|
||||
goto cleanup;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (lseek(fd, 0, SEEK_SET) == (off_t)-1) {
|
||||
virReportSystemError(errno, _("cannot seek to start of '%s'"), path);
|
||||
goto cleanup;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (VIR_ALLOC_N(head, len) < 0) {
|
||||
virReportOOMError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((len = read(fd, head, len)) < 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user