Download raw body.
libfido: recovery hardcoded USB metadata
On Sun, 06 Sep 2026 12:15:06 +0200,
Kirill A. Korinsky <kirill@korins.ky> wrote:
>
> tech@,
>
> my update libfido accidently reverted a hardcoded USB device metadata which
> leads broken pledge in, for example, chromium.
>
> Ok?
Sorry for noise but I forgot to add subject.
Index: src/hid_openbsd.c
===================================================================
RCS file: /home/cvs/src/lib/libfido2/src/hid_openbsd.c,v
diff -u -p -r1.9 hid_openbsd.c
--- src/hid_openbsd.c 4 Sep 2026 16:20:01 -0000 1.9
+++ src/hid_openbsd.c 6 Sep 2026 09:52:18 -0000
@@ -7,9 +7,6 @@
#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <dev/usb/usb.h>
-
#include <errno.h>
#include <fcntl.h>
#include <poll.h>
@@ -32,33 +29,23 @@ static int
copy_info(fido_dev_info_t *di, const char *path)
{
int fd = -1, ok = -1;
- struct usb_device_info udi;
memset(di, 0, sizeof(*di));
- memset(&udi, 0, sizeof(udi));
if ((fd = fido_hid_unix_open(path)) == -1)
goto fail;
- if (ioctl(fd, USB_GET_DEVICEINFO, &udi) == -1) {
- fido_log_error(errno, "%s: ioctl %s", __func__, path);
- goto fail;
- }
-
- fido_log_debug("%s: %s: bus = 0x%02x, addr = 0x%02x", __func__, path,
- udi.udi_bus, udi.udi_addr);
- fido_log_debug("%s: %s: vendor = \"%s\", product = \"%s\"", __func__,
- path, udi.udi_vendor, udi.udi_product);
- fido_log_debug("%s: %s: productNo = 0x%04x, vendorNo = 0x%04x, "
- "releaseNo = 0x%04x", __func__, path, udi.udi_productNo,
- udi.udi_vendorNo, udi.udi_releaseNo);
+ /* USB_GET_DEVICEINFO is not permitted by pledge(2). */
if ((di->path = strdup(path)) == NULL ||
- (di->manufacturer = strdup(udi.udi_vendor)) == NULL ||
- (di->product = strdup(udi.udi_product)) == NULL)
+ (di->manufacturer = strdup("OpenBSD")) == NULL ||
+ (di->product = strdup("fido(4)")) == NULL)
goto fail;
- di->vendor_id = (int16_t)udi.udi_vendorNo;
- di->product_id = (int16_t)udi.udi_productNo;
+ di->vendor_id = 0x0b5d; /* PCI_VENDOR_OPENBSD */
+ di->product_id = 0;
+
+ fido_log_debug("%s: %s: vendor = \"%s\", product = \"%s\"", __func__,
+ path, di->manufacturer, di->product);
ok = 0;
fail:
--
wbr, Kirill
libfido: recovery hardcoded USB metadata