git: 250db717b24d - main - libusb: Add an XXX comment for possible duplicate callback IDs

From: Ed Maste <emaste_at_FreeBSD.org>
Date: Fri, 21 Aug 2026 14:56:49 UTC
The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=250db717b24d084c0a3193226a79b73a69fbfe0f

commit 250db717b24d084c0a3193226a79b73a69fbfe0f
Author:     Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2026-08-21 14:31:25 +0000
Commit:     Ed Maste <emaste@FreeBSD.org>
CommitDate: 2026-08-21 14:53:45 +0000

    libusb: Add an XXX comment for possible duplicate callback IDs
    
    If next_callback_id wraps we could end up with two callbacks with the
    same ID.  I recommitted the original change despite this issue in order
    to fix the libusb API as soon as possible after SHLIB_MAJOR was bumped
    in commit 527a82474cb3 (libusb: versioning symbols).
    
    It's very unlikely in practice that software will register and
    deregister a sufficient number of callbacks to trigger this, but it is
    a real issue to be fixed in a subsequent commit.
    
    Sponsored by:   The FreeBSD Foundation
---
 lib/libusb/libusb10_hotplug.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/libusb/libusb10_hotplug.c b/lib/libusb/libusb10_hotplug.c
index ee0fea82a8fe..ae7e8d168948 100644
--- a/lib/libusb/libusb10_hotplug.c
+++ b/lib/libusb/libusb10_hotplug.c
@@ -375,6 +375,7 @@ int libusb_hotplug_register_callback(libusb_context *ctx,
 	handle->fn = cb_fn;
 	handle->user_data = user_data;
 	CTX_LOCK(ctx);
+	/* XXX This could result in duplicate callback IDs, and is UB. */
 	if ((handle->id = ctx->next_callback_id++) < 0)
 		handle->id = ctx->next_callback_id = 1;
 	CTX_UNLOCK(ctx);