[S] Change in libosmocore[master]: select.c: osmo_fd_unregister(): Avoid assert hit with old buggy users...
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/31903 ) Change subject: select.c: osmo_fd_unregister(): Avoid assert hit with old buggy users of the API ...................................................................... select.c: osmo_fd_unregister(): Avoid assert hit with old buggy users of the API Change-Id: If77b84d603a42a216d550d9708eb62f645634a61 --- M src/core/select.c 1 file changed, 24 insertions(+), 3 deletions(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve fixeria: Looks good to me, approved diff --git a/src/core/select.c b/src/core/select.c index 67b0fd3..c60cd8e 100644 --- a/src/core/select.c +++ b/src/core/select.c @@ -223,13 +223,25 @@ * osmo_fd_is_registered() */ unregistered_count++; llist_del(&fd->list); - OSMO_ASSERT(fd->fd >= 0); - OSMO_ASSERT(fd->fd <= maxfd); - osmo_fd_lookup.table[fd->fd] = NULL; #ifndef FORCE_IO_SELECT g_poll.num_registered--; #endif /* FORCE_IO_SELECT */ + if (OSMO_UNLIKELY(fd->fd < 0 || fd->fd > maxfd)) { + /* Some old users used to incorrectly set fd = -1 *before* calling osmo_unregister(). + * Hence, in order to keep backward compatibility it's not possible to assert() here. + * Instead, print an error message since this is actually a bug in the API user. */ +#ifdef OSMO_FD_CHECK + osmo_panic("osmo_fd_unregister(fd=%u) out of expected range (0..%u), fix your code!!!\n", + fd->fd, maxfd); +#else + fprintf(stderr, "osmo_fd_unregister(fd=%u) out of expected range (0..%u), fix your code!!!\n", + fd->fd, maxfd); + return; +#endif + } + + osmo_fd_lookup.table[fd->fd] = NULL; /* If existent, free any statistical data */ osmo_stats_tcp_osmo_fd_unregister(fd); } -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/31903 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: If77b84d603a42a216d550d9708eb62f645634a61 Gerrit-Change-Number: 31903 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-Reviewer: osmith <osmith@sysmocom.de> Gerrit-Reviewer: pespin <pespin@sysmocom.de> Gerrit-MessageType: merged
participants (1)
-
pespin