grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: /kern/file.c BUG


From: Robert Millan
Subject: Re: /kern/file.c BUG
Date: Thu, 24 Jan 2008 01:05:44 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

On Wed, Jan 23, 2008 at 11:00:57PM +0000, Oleg Strikov wrote:
> Incorrect behavior of grub_file_open () function in e.g. loop context:
> 
> char *file_names[] =
> {
> "(hd0,1)/file1", //file do not exist
> "(hd0,1)/file2"  //file exist
> };
> grub_file_t file;
> int i;
> for (i = 0; i < 2; i++)
> {
>      file  = grub_file_open (file_names[i]);
>      if (file) {...}
> }
> 
> There, we should get positive return in the second case (i == 1), but
> grub_file_open() returns 0.
> 
> Using gdb i've found that this problem connected with incorrect errno check
> in /kern/file.c
> 
> Let's look:
> 
> >grub_file_t
> >grub_file_open (const char *name)
> >{
> >  grub_device_t device;
> >  grub_file_t file = 0;
> >  char *device_name;
> >  char *file_name;
> 
> >  device_name = grub_file_get_device_name (name);
> >  if (grub_errno)
> >    return 0;
> 
> But, we DO NOT set grub_errno to 0 at the begining of the function, thats
> why next loop round it always returns 0

Fixed, thank you.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]