Set dp to NULL when we free it, and tree a NULL dp as an error
condition. This should prevent a double free. In addition, prevent a leak by freeing dp each loop and when we're done. CID: 1383577 Sponsored by: Netflix
This commit is contained in:
parent
63b5669494
commit
167b7a41ff
@ -663,6 +663,7 @@ path_to_dp(struct gmesh *mesh, char *path, efidp *dp)
|
|||||||
free(rp);
|
free(rp);
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
free(*dp);
|
free(*dp);
|
||||||
|
*dp = NULL;
|
||||||
}
|
}
|
||||||
return (rv);
|
return (rv);
|
||||||
}
|
}
|
||||||
|
@ -143,10 +143,13 @@ unix_to_efi(void)
|
|||||||
char *walker;
|
char *walker;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
|
dp = NULL;
|
||||||
while (fgets(buffer, sizeof(buffer), stdin)) {
|
while (fgets(buffer, sizeof(buffer), stdin)) {
|
||||||
walker= trim(buffer);
|
walker= trim(buffer);
|
||||||
|
free(dp);
|
||||||
|
dp = NULL;
|
||||||
rv = efivar_unix_path_to_device_path(walker, &dp);
|
rv = efivar_unix_path_to_device_path(walker, &dp);
|
||||||
if (rv != 0) {
|
if (rv != 0 || dp == NULL) {
|
||||||
errno = rv;
|
errno = rv;
|
||||||
warn("Can't convert '%s' to efi", walker);
|
warn("Can't convert '%s' to efi", walker);
|
||||||
continue;
|
continue;
|
||||||
@ -158,6 +161,7 @@ unix_to_efi(void)
|
|||||||
}
|
}
|
||||||
printf("%s\n", efi);
|
printf("%s\n", efi);
|
||||||
}
|
}
|
||||||
|
free(dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user