]> xenbits.xensource.com Git - people/royger/freebsd.git/commitdiff
efivar: handle error when reading --fromfile
authorEric van Gyzen <vangyzen@FreeBSD.org>
Wed, 23 Feb 2022 18:15:34 +0000 (12:15 -0600)
committerEric van Gyzen <vangyzen@FreeBSD.org>
Wed, 2 Mar 2022 21:56:31 +0000 (15:56 -0600)
The result of read() was stored in an unsigned variable, so the
test for a negative value would never work.

While I'm here, print a better error message for an empty file,
omitting the misleading errno message.

Reported by: Coverity
MFC after: 1 week
Sponsored by: Dell EMC Isilon

(cherry picked from commit d0f4e583bff67e2bdd816549c460da6daa3f67b1)

usr.sbin/efivar/efivar.c

index eb9a6e0257c8d3796c7a1246391182209e7f620e..5bdf0c11a488ff8aa13a1fdf5bcef5916f6b7c17 100644 (file)
@@ -239,8 +239,10 @@ print_var(efi_guid_t *guid, char *name)
                        if (data == NULL)
                                rep_err(1, "malloc");
                        datalen = read(fd, data, 64 * 1024);
-                       if (datalen <= 0)
+                       if ((ssize_t)datalen < 0)
                                rep_err(1, "read");
+                       if (datalen == 0)
+                               rep_errx(1, "empty file");
                        close(fd);
                } else {
                        rv = efi_get_variable(*guid, name, &data, &datalen, &att);