[2399] 2009-07-06 Pavel Roskin <[email protected]>

Pavel Roskin <[email protected]> Tue, 07 Jul 2009 03:05:01 +0000
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 2399
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2399
Author:   proski
Date:     2009-07-07 03:05:01 +0000 (Tue, 07 Jul 2009)
Log Message:
-----------
2009-07-06  Pavel Roskin  <[email protected]>

	* commands/search.c (search_fs): Fix potential NULL pointer
	dereference.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/commands/search.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-07-06 20:13:06 UTC (rev 2398)
+++ trunk/grub2/ChangeLog	2009-07-07 03:05:01 UTC (rev 2399)
@@ -1,5 +1,8 @@
 2009-07-06  Pavel Roskin  <[email protected]>
 
+	* commands/search.c (search_fs): Fix potential NULL pointer
+	dereference.
+
 	* commands/search.c (search_fs): Replace QUID macro with quid_fn
 	function pointer.
 

Modified: trunk/grub2/commands/search.c
===================================================================
--- trunk/grub2/commands/search.c	2009-07-06 20:13:06 UTC (rev 2398)
+++ trunk/grub2/commands/search.c	2009-07-07 03:05:01 UTC (rev 2399)
@@ -68,17 +68,19 @@
 	{
 	  grub_fs_t fs;
 	  int (*compare_fn) (const char *, const char *);
-	  grub_err_t (*quid_fn) (grub_device_t, char **);
 
 	  fs = grub_fs_probe (dev);
 	  compare_fn = is_uuid ? grub_strcasecmp : grub_strcmp;
-	  quid_fn = is_uuid ? fs->uuid : fs->label;
 
-	  if (fs && quid_fn)
+	  if (fs && (is_uuid ? fs->uuid : fs->label))
 	    {
 	      char *quid;
 
-	      quid_fn (dev, &quid);
+	      if (is_uuid)
+		fs->uuid (dev, &quid);
+	      else
+		fs->label (dev, &quid);
+
 	      if (grub_errno == GRUB_ERR_NONE && quid)
 		{
 		  if (compare_fn (quid, key) == 0)