svn commit: r312237 - head/sys/boot/efi/loader

Toomas Soome tsoome at FreeBSD.org
Sun Jan 15 20:03:14 UTC 2017


Author: tsoome
Date: Sun Jan 15 20:03:13 2017
New Revision: 312237
URL: https://svnweb.freebsd.org/changeset/base/312237

Log:
  loader.efi: find_currdev() can leak memory
  
  The find_currdev() is using variable "copy" to store the reference to trimmed
  devpath pointer, if for some reason the efi_devpath_handle() fails, we will
  leak this copy.
  
  Also we can simplify the code there a bit.
  
  Reviewed by:	allanjude
  Approved by:	allanjude (mentor)
  Differential Revision:	https://reviews.freebsd.org/D9191

Modified:
  head/sys/boot/efi/loader/main.c

Modified: head/sys/boot/efi/loader/main.c
==============================================================================
--- head/sys/boot/efi/loader/main.c	Sun Jan 15 19:49:47 2017	(r312236)
+++ head/sys/boot/efi/loader/main.c	Sun Jan 15 20:03:13 2017	(r312237)
@@ -219,20 +219,19 @@ find_currdev(EFI_LOADED_IMAGE *img, stru
 		if (h == NULL)
 			break;
 
-		if (efi_handle_lookup(h, dev, unit, extra) == 0) {
-			if (copy != NULL)
-				free(copy);
+		free(copy);
+		copy = NULL;
+
+		if (efi_handle_lookup(h, dev, unit, extra) == 0)
 			return (0);
-		}
 
-		if (copy != NULL)
-			free(copy);
 		devpath = efi_lookup_devpath(h);
 		if (devpath != NULL) {
 			copy = efi_devpath_trim(devpath);
 			devpath = copy;
 		}
 	}
+	free(copy);
 
 	/* Try to fallback on first device */
 	if (devsw[0] != NULL) {


More information about the svn-src-head mailing list