This comment was true - although the upshot was not particularly clear -
when it was introduced. However, for other reaosns we now *do* always
populate ini->oaddr from flow_initiate_sa(). So rather than explaning
why we can't, we can actually validate ini->oaddr.
Signed-off-by: David Gibson
---
udp_flow.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/udp_flow.c b/udp_flow.c
index f59649f6..a29f3562 100644
--- a/udp_flow.c
+++ b/udp_flow.c
@@ -247,11 +247,8 @@ flow_sidx_t udp_flow_from_sock(const struct ctx *c, uint8_t pif,
ini = flow_initiate_sa(flow, pif, s_in, dst, port);
if (!inany_is_unicast(&ini->eaddr) ||
+ inany_is_unspecified(&ini->oaddr) ||
ini->eport == 0 || ini->oport == 0) {
- /* In principle ini->oddr also must be specified, but when we've
- * been initiated from a socket bound to 0.0.0.0 or ::, we don't
- * know our address, so we have to leave it unpopulated.
- */
flow_err_ratelimit(flow, now,
"Invalid endpoint on UDP recvfrom()");
flow_alloc_cancel(flow);
--
2.55.0