diff --git a/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch b/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch new file mode 100644 index 0000000000000000000000000000000000000000..8f0d5d88a6682c592038f408ae05d24265325822 --- /dev/null +++ b/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch @@ -0,0 +1,55 @@ +diff --git a/pjlib/src/pj/ip_helper_generic.c b/pjlib/src/pj/ip_helper_generic.c +index d7bbf725e..3d64146df 100644 +--- a/pjlib/src/pj/ip_helper_generic.c ++++ b/pjlib/src/pj/ip_helper_generic.c +@@ -116,6 +116,16 @@ static pj_status_t if_enum_by_af(int af, + continue; /* Skip when interface is down */ + } + ++ /* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4 ++ */ ++ if (af==pj_AF_INET() && ++ (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */) ++ { ++ TRACE_((THIS_FILE, " address %s ignored (192.0.0.0/29 class)", ++ get_addr(ad), ad->sa_family)); ++ continue; ++ } ++ + /* Ignore 0.0.0.0/8 address. This is a special address + * which doesn't seem to have practical use. + */ +@@ -215,6 +225,16 @@ static pj_status_t if_enum_by_af(int af, + } + #endif + ++ /* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4 ++ */ ++ if (af==pj_AF_INET() && ++ (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */) ++ { ++ TRACE_((THIS_FILE, " address %s ignored (192.0.0.0/29 class)", ++ get_addr(ad), ad->sa_family)); ++ continue; ++ } ++ + /* Ignore 0.0.0.0/8 address. This is a special address + * which doesn't seem to have practical use. + */ +@@ -309,6 +329,16 @@ static pj_status_t if_enum_by_af(int af, unsigned *p_cnt, pj_sockaddr ifs[]) + continue; /* Not address family that we want, continue */ + } + ++ /* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4 ++ */ ++ if (af==pj_AF_INET() && ++ (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */) ++ { ++ TRACE_((THIS_FILE, " address %s ignored (192.0.0.0/29 class)", ++ get_addr(ad), ad->sa_family)); ++ continue; ++ } ++ + /* Ignore 0.0.0.0/8 address. This is a special address + * which doesn't seem to have practical use. + */ diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json index fe6585f405300c7af1194693a26975a4811a8aaf..5595550948e8aa4f1474140a0ed59388ef5fd4be 100644 --- a/contrib/src/pjproject/package.json +++ b/contrib/src/pjproject/package.json @@ -21,6 +21,8 @@ "0016-use-addrinfo-instead-CFHOST.patch", "0017-CVE-2020-15260.patch", "0018-CVE-2021-21375.patch", + "0019-ignore-down-interfaces.patch", + "0020-ignore-addresses-for-RFC7335.patch", "0001-win-config.patch", "0002-win-vs-gnutls.patch", "0003-win-vs2017-props.patch" diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak index b1c273450d0e65521661b85ac5d39800ed5bac6c..7b2aa213ceb977c067d6826e4e7725d2ee5976e8 100644 --- a/contrib/src/pjproject/rules.mak +++ b/contrib/src/pjproject/rules.mak @@ -64,6 +64,7 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject $(APPLY) $(SRC)/pjproject/0017-CVE-2020-15260.patch $(APPLY) $(SRC)/pjproject/0018-CVE-2021-21375.patch $(APPLY) $(SRC)/pjproject/0019-ignore-down-interfaces.patch + $(APPLY) $(SRC)/pjproject/0020-ignore-addresses-for-RFC7335.patch ifdef HAVE_ANDROID $(APPLY) $(SRC)/pjproject/0001-android.patch endif