Colin Watson
440ba4b011
util: Detect more I/O errors
...
Many of GRUB's utilities don't check anywhere near all the possible
write errors. For example, if grub-install runs out of space when
copying a file, it won't notice. There were missing checks for the
return values of write, fflush, fsync, and close (or the equivalents on
other OSes), all of which must be checked.
I tried to be consistent with the existing logging practices of the
various hostdisk implementations, but they weren't entirely consistent
to start with so I used my judgement. The result at least looks
reasonable on GNU/Linux when I provoke a write error:
Installing for x86_64-efi platform.
grub-install: error: cannot copy `/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed' to `/boot/efi/EFI/debian/grubx64.efi': No space left on device.
There are more missing checks in other utilities, but this should fix
the most critical ones.
Fixes Debian bug #922741 .
Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
Reviewed-by: Steve McIntyre <93sam@debian.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
2020-09-21 16:43:55 -04:00
Vladimir Serbinenko
1895c3806b
Add support for device-tree-based drivers.
2020-09-21 11:32:45 -04:00
Vladimir Serbinenko
377c121170
mkimage: Fix memory leak.
2017-02-01 21:21:17 +01:00
Andrei Borzenkov
962b69d950
grub-mkimage: remove redundant NULL check
...
Found by: Coverity scan.
CID: 73737
2016-01-10 11:51:34 +03:00
Andrey Borzenkov
1440b7ebae
do not set default prefix in grub-mkimage
...
Default prefix is likely wrong on Unix and completely wrong on Windows.
Let caller set it explicitly to avoid any ambiguity.
2014-01-25 19:54:51 +04:00
Vladimir Serbinenko
ca3e20886e
Build fixes for argp.h with older gcc.
2013-12-21 18:08:25 +01:00
Vladimir Serbinenko
ae558c2ccf
Enable -Wformat=2 if it's supported.
2013-12-21 15:28:28 +01:00
Vladimir Serbinenko
bfdfeb2508
Clarify several translatable messages.
2013-12-21 01:41:16 +01:00
Vladimir Serbinenko
4f9541226c
Introduce grub_util_file_sync and use it instead of fsync(fileno(f)).
...
Fixes build for windows.
2013-11-27 14:13:50 +01:00
Vladimir Serbinenko
cd46aa6cef
Rewrite grub-install, grub-mkrescue, grub-mkstandalone and grub-mknetdir
...
the function of these files exceeds what can be sanely handled in shell
in posix-comaptible way. Also writing it in C extends the functionality
to non-UNIX-like OS and minimal environments.
2013-11-16 20:21:16 +01:00
Vladimir 'phcoder' Serbinenko
ec16e02639
* util/grub-mkimage.c: Move backend part to ...
...
* util/mkimage.c: ... here.
2013-10-15 19:14:55 +02:00
Vladimir 'phcoder' Serbinenko
bb338aaf24
Add a wrapper for fopen. On unix-like systems just pass-through. On
...
windows use unicode version.
2013-10-13 20:36:28 +02:00
Vladimir 'phcoder' Serbinenko
ae5540d3d4
Move set_program_name and init_nls to host_init. On windows
...
fix in this fuction console and argument charset as well.
2013-10-13 20:03:42 +02:00
Vladimir 'phcoder' Serbinenko
71c1d67a34
Avoid including hostfile.h when not necessarry as it pulls
...
in OS-specific headers which may redefine generic names
like "far".
2013-10-10 09:18:06 +02:00
Vladimir 'phcoder' Serbinenko
f7676b7016
* util/grub-mkimage.c (generate_image): Use size_t instead of
...
grub_size_t.
* util/grub-mkimagexx.c (locate_sections): Likewise.
(load_image): Likewise.
2013-10-09 05:36:00 +02:00
Vladimir 'phcoder' Serbinenko
f163045985
* util/grub-fstest.c: Fix several printf formats.
...
* util/grub-mkimage.c: Likewise.
* util/grub-mkimagexx.c: Likewise.
* util/grub-script-check.c: Likewise.
2013-08-23 09:01:11 +02:00
Vladimir 'phcoder' Serbinenko
ae27e4d323
Merge mainline into arm
2013-07-16 18:43:43 +02:00
Vladimir 'phcoder' Serbinenko
9c28da2a89
Remove early sm712 init as there is no reason for it (the "watchdog"
...
effect was due to wrong GPIO map).
2013-07-11 16:24:35 +02:00
Vladimir 'phcoder' Serbinenko
8e71d87482
merge mainline into arm
2013-05-11 10:24:24 +02:00
Vladimir 'phcoder' Serbinenko
7f63a64fa0
Enable mipsel-arc.
2013-04-25 22:42:35 +02:00
Vladimir 'phcoder' Serbinenko
8528c879e3
Move mips-arc link address. Previous link address was chosen
...
in belief that RAM on SGI platforms grows down while in fact it
grows up from an unusual base.
2013-04-24 13:54:17 +02:00
Vladimir 'phcoder' Serbinenko
794515225f
Add option to compress files on install/image creation.
2013-04-14 19:24:05 +02:00
Vladimir 'phcoder' Serbinenko
8ca86b3a03
Support mkrescue on sparc64.
2013-04-14 17:10:55 +02:00
Vladimir 'phcoder' Serbinenko
8573d302fc
* util/grub-mkimage.c: Document memdisk implying --prefix.
2013-04-12 21:08:53 +02:00
Vladimir 'phcoder' Serbinenko
bc1cf01cf2
Add uboot header ourselves
2013-04-12 16:46:51 +02:00
Vladimir 'phcoder' Serbinenko
d5e2a158e1
Fix ia64-efi image generation on big-endian machines. Deduplicate
...
some code while on it.
Reported by: Leif Lindholm.
2013-04-09 19:19:19 +02:00
Leif Lindholm
389b31cd71
Initial import of Leif's work
2013-04-07 02:41:07 +02:00
Francesco Lavra
c506fc3056
* util/grub-mkimage.c: Introduce new define EFI32_HEADER_SIZE.
2013-04-04 20:07:44 +02:00
Vladimir 'phcoder' Serbinenko
774683685f
Lift up core size limits on some platforms. Fix potential memory
...
corruption with big core on small memory systems. Document remaining
limits.
2013-03-07 08:17:24 +01:00
Leif Lindholm
c821711f69
* util/grub-mkimage.c (main): Postpone freeing arguments.output
...
until after its use in generate_image.
2013-01-20 23:16:34 +00:00
Colin Watson
a45289370a
* util/grub-mkimage.c (generate_image): Fix "size of public key"
...
info message.
2013-01-13 01:47:46 +00:00
Vladimir 'phcoder' Serbinenko
5e3b8dcbb5
Import gcrypt public-key cryptography and implement signature checking.
2013-01-11 21:32:42 +01:00
Vladimir 'phcoder' Serbinenko
4dc02ddfc5
* util/grub-mkimage.c (generate_image): Add Yeeloong verified hash.
2012-06-26 03:38:10 +02:00
Vladimir 'phcoder' Serbinenko
0b5ea6b8c3
* util/grub-mkimage.c (generate_image): Add Fuloong2F verified hash.
2012-06-25 12:36:50 +02:00
Vladimir 'phcoder' Serbinenko
81f6ef0e2d
* util/grub-mkimage.c: Disable -Wcast-align.
2012-06-05 17:22:29 +02:00
Vladimir 'phcoder' Serbinenko
b2b149cbbd
* util/grub-mkimage.c (help_filter): Add missing capitalisation.
2012-03-06 14:08:48 +01:00
Vladimir 'phcoder' Serbinenko
bbc5a342eb
* util/grub-mkimage.c (generate_image): Unify diskboot.img size message.
2012-03-06 11:36:39 +01:00
Vladimir 'phcoder' Serbinenko
ef292a8775
* grub-core/net/http.c: Add TRANSLATORS comments.
...
* grub-core/normal/cmdline.c: Likewise.
* grub-core/normal/misc.c: Likewise.
* grub-core/partmap/msdos.c: Likewise.
* grub-core/parttool/msdospart.c: Likewise.
* grub-core/script/execute.c: Likewise.
* grub-core/script/main.c: Likewise.
* grub-core/term/terminfo.c: Likewise.
* grub-core/video/bitmap.c: Likewise.
* util/grub-install.in: Likewise.
* util/grub-mkimage.c: Likewise.
* util/grub-mklayout.c: Likewise.
* util/grub-setup.c: Likewise.
2012-03-05 16:42:26 +01:00
Vladimir 'phcoder' Serbinenko
3cb38f015f
* util/grub-mkimage.c (generate_image): Silence spurious warning.
2012-02-29 14:12:41 +01:00
Vladimir 'phcoder' Serbinenko
8151bc82f7
Remove improper use of program_transform_name on pkglibrootdir.
...
* configure.ac (pkglibrootdir): Removed.
(grub-mkimage): Replace PKGLIBROOTDIR with PKGLIBDIR.
* util/grub-mkimage.c: Likewise.
2012-02-27 10:35:37 +01:00
Vladimir 'phcoder' Serbinenko
67093bc0ed
Another round of string clarification and adding TRANSLATORS comments.
2012-02-26 17:28:05 +01:00
Vladimir 'phcoder' Serbinenko
4e27343fb0
* conf/Makefile.common (CFLAGS_GNULIB): Add
...
-Wno-unsafe-loop-optimizations.
* configure.ac: Remove -Wmissing-declarations and -Wmissing-prototypes
on tools.
* grub-core/commands/legacycfg.c: Add pragma to skip
-Wunsafe-loop-optimizations.
(check_password_md5_real): Fix loop counter type.
* grub-core/commands/testload.c (grub_cmd_testload): Fix over the EOF
reading.
* grub-core/disk/ldm.c (grub_util_get_ldm): Fix logic error.
* grub-core/fs/zfs/zfs_sha256.c (zio_checksum_SHA256): Add safety
loop condition.
* grub-core/io/gzio.c: Add pragma to skip -Wunsafe-loop-optimizations.
* grub-core/lib/LzmaEnc.c (GetOptimum): Avoid possible infinite loop.
* grub-core/net/net.c (grub_net_route_address): Add safety loop
condition.
* grub-core/normal/charset.c (bidi_line_wrap): Likewise.
* grub-core/normal/cmdline.c (grub_set_history): Fix loop types and
avoid possible infinite loops.
* grub-core/script/parser.y: Add pragma to skip -Wmissing-declarations
and -Wunsafe-loop-optimizations.
* grub-core/script/yylex.l: Likewise.
* util/grub-mkfont.c: Add pragma to skip -Wunsafe-loop-optimizations.
(print_glyphs): Avoid infinite loops.
* util/grub-mkimage.c (compress_kernel_xz): Fix format security.
2012-02-24 12:30:32 +01:00
Vladimir 'phcoder' Serbinenko
0b6225bd27
* util/grub-mkimage.c (generate_image): Explicitly init decompress_size.
...
* util/grub-mkimagexx.c (MASK3): New define.
(add_value_to_slot_20b): Use MASK3.
(add_value_to_slot_21): Likewise.
(relocate_addresses): Fix format specification.
(load_image): Explicitly init symtab_section.
2012-02-11 11:50:10 +01:00
Vladimir 'phcoder' Serbinenko
495fc8c181
* util/grub-mkimage.c (compress_kernel_lzma): Respect format security.
...
(generate_image): Make prefix a const char *.
Fix format specifications. Respect format security.
Avoid void * arithmetics.
Avoid shadowing.
(argp_parser): Remove unused variable. Respect format security.
* util/grub-mkimagexx.c (relocate_symbols): Avoid shadowing.
(count_funcs) [!MKIMAGE_ELF64]: #if-out.
(count_funcs): Remove unused variable.
(relocate_addresses): Fix format specification.
Disable x86-64 with elf32. Remove unused variables.
(add_fixup_entry): Avoid shadowing.
(make_reloc_section): Fix format specification.
Use assert.
(locate_sections): Fix format specifications.
(load_image): Avoid shadowing.
2012-02-10 13:56:18 +01:00
Vladimir 'phcoder' Serbinenko
a9d96eeb21
* util/grub-mkimage.c (image_targets): Set default_compression to lzma
...
on i386-pc target.
(argp_parser): Accept "auto" as compression specification.
2012-02-09 14:43:21 +01:00
Vladimir 'phcoder' Serbinenko
9c4b5c13e6
Improve gettext support. Stylistic fixes and error handling fixes while
...
on it.
2012-02-08 19:26:01 +01:00
Vladimir 'phcoder' Serbinenko
0ae70393ba
Improve and unify messages.
...
* grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors): Add argument
name. All users updated.
Print filename in error.
(read_device_map): Print filename in error.
* util/getroot.c (grub_guess_root_devices): Print filename in error.
(grub_util_get_os_disk): Likewise.
(grub_util_biosdisk_get_grub_dev): Likewise.
(grub_util_check_block_device): Likewise.
(grub_util_check_char_device): Likewise.
(grub_make_system_path_relative_to_its_root): Likewise.
* util/grub-editenv.c (create_envblk_file): Likewise.
(open_envblk_file): Likewise.
(write_envblk): Likewise.
* util/grub-fstest.c (cmd_cp): Likewise.
(cmd_cat): Likewise.
(cmd_cmp): Likewise.
* util/grub-menulst2cfg.c (main): Likewise.
* util/grub-mkfont.c (write_font_ascii_bitmap): Likewise.
(write_font_width_spec): Likewise.
(write_font_pf2): Likewise.
* util/grub-mkimage.c (generate_image): New argument outname.
All users updated.
Remove unreacheable message.
(options): Unify messages.
(help_filter): Likewise.
* util/grub-mklayout.c (usage): Removed (unused).
(main): Print filename in error.
* util/grub-mkrescue.in: Fix wrong quoting.
* util/grub-setup.c (setup): Print filename in error.
* util/ieee1275/ofpath.c (vendor_is_ATA): Likewise.
(check_sas): Likewise.
* util/misc.c (grub_util_get_fp_size): Removed.
(grub_util_get_image_size): Print filename in error.
(grub_util_read_at): Removed.
(grub_util_read_image): Print filename in error.
(grub_util_load_image): Likewise.
(grub_util_write_image_at): New argument filename. All users updated.
Print filename in error.
(grub_util_write_image): New argument filename. All users updated.
Print filename in error.
* util/raid.c (grub_util_raid_getmembers): Print filename in error.
* util/resolve.c (grub_util_resolve_dependencies): Likewise.
2012-02-05 11:07:33 +01:00
Vladimir 'phcoder' Serbinenko
c76899a0ea
Migrate grub-mkimage.c to argp.
...
* Makefile.util.def (grub-mkimage): Add util/argp_common.c.
(grub-setup): Likewise.
* util/grub-setup.c (print_version): Move to ...
* util/argp_common.c (print_version): ... here.
* util/grub-setup.c (argp_program_version_hook): Move to ...
* util/argp_common.c (argp_program_version_hook): ... here.
* util/grub-setup.c (argp_parser): Add exit (1) on fatal error for
safety.
* util/grub-mkimage.c (main): Migrate to argp.
2012-02-03 21:18:37 +01:00
Richard Laager
69edd81ab7
* util/grub-mkimage.c (main): Fix format-security warning.
...
* util/grub-mkrelpath.c (main): Likewise.
* util/grub-probe.c (main): Likewise.
2012-02-03 11:07:18 +01:00
Vladimir 'phcoder' Serbinenko
70ffcc93ee
* util/grub-mkimage.c (generate_image): Clean multiboot header to avoid
...
confusing ipxe.
2011-12-15 20:29:30 +01:00