commands/file: Change the confusing loop stop condition.

Old condition was used to zero-out header variable on exit of the loop.
This is correct but confusing. Replace with in-loop logic.

Found by: Coverity Scan.
This commit is contained in:
Vladimir Serbinenko 2015-01-24 20:45:25 +01:00
parent e902163e48
commit b04c6d32ce

View file

@ -476,8 +476,8 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
be at least 12 bytes and aligned on a 4-byte boundary. */ be at least 12 bytes and aligned on a 4-byte boundary. */
for (header = buffer; for (header = buffer;
((char *) header <= ((char *) header <=
(char *) buffer + len - (type == IS_MULTIBOOT2 ? 16 : 12)) (char *) buffer + len - (type == IS_MULTIBOOT2 ? 16 : 12));
|| (header = 0); header += step) header += step)
{ {
if (header[0] == magic if (header[0] == magic
&& !(grub_le_to_cpu32 (header[0]) && !(grub_le_to_cpu32 (header[0])
@ -485,11 +485,12 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
+ grub_le_to_cpu32 (header[2]) + grub_le_to_cpu32 (header[2])
+ (type == IS_MULTIBOOT2 + (type == IS_MULTIBOOT2
? grub_le_to_cpu32 (header[3]) : 0))) ? grub_le_to_cpu32 (header[3]) : 0)))
break; {
ret = 1;
break;
}
} }
if (header != 0)
ret = 1;
grub_free (buffer); grub_free (buffer);
break; break;
} }